11°

~/temas/machine-learning

Algoritmos de machine learning, medidos

Once algoritmos sobre el mismo clima, el mismo reparto y el mismo contenedor.

Todos los temas

Casi toda la divulgación de estos algoritmos usa datos de juguete que no muestran dónde fallan. Aquí los once corren sobre la misma tabla —clima diario de siete ciudades de Chile desde 1984—, con el mismo ajuste hasta 2009, la misma validación 2010-2012 y el mismo período de prueba desde 2016, dentro de un contenedor con CPU y memoria fijas. Eso permite poner sus números uno al lado del otro, y también publicar los resultados negativos: el Transformer quedó bajo tres modelos más simples, y el bosque no sabe extrapolar. Una advertencia sobre ese período de prueba: ningún modelo lo usó para elegir sus parámetros, pero después de once entregas ya lo leí once veces, así que conviene llamarlo banco histórico congelado y no reserva intacta. Una conclusión del tipo "qué algoritmo gana" necesitaría años que nadie haya mirado todavía.

12 entradas

Portada: Cómo funciona hoy la compresión de archivos (y cómo le gané 2,86% a zlib con teoría de grafos)ArtículoCómo funciona hoy la compresión de archivos (y cómo le gané 2,86% a zlib con teoría de grafos)Traduje zlib de C a Rust con c2rust, probé que la traducción es bit exacta en más de 15.000 casos, y después reemplacé la heurística de zlib por un camino mínimo en grafo. Resultado: 2,86% más chico que zlib -9, verificado byte a byte contra la C real. En el camino, cómo funciona la compresión sin pérdida hoy: LZ77, Huffman, y por qué zopfli y PPMd tampoco rompen el límite de Shannon.#Compresión#Rust#CPortada: Red neuronal explicada: igualó al boosting con 2.177 pesos, y cambiar la semilla le movió el AUC 0,004TutorialRed neuronal explicada: igualó al boosting con 2.177 pesos, y cambiar la semilla le movió el AUC 0,004Qué es una red neuronal, qué hace cada capa y cuándo falla, medido con clima diario de siete ciudades de Chile entre 1984 y 2026. Una capa oculta de 128 unidades, 2.177 pesos y 81 KB, llegó a AUC 0,883 en la prueba de 2016-2026: la misma cifra que un boosting de 2,1 MB, con 0,40 ms por fila contra 3,09. Entrenarla costó cinco veces más, y repetir el entrenamiento cambiando solo la semilla movió el AUC de validación entre 0,881 y 0,884.#Machine learning#Algoritmos#PythonPortada: Transformer explicado: quedó bajo tres modelos más simples, y entre las candidatas de arriba la rejilla ordenó al revésTutorialTransformer explicado: quedó bajo tres modelos más simples, y entre las candidatas de arriba la rejilla ordenó al revésQué es un Transformer, qué hace la atención y cuándo falla, medido con clima diario de siete ciudades de Chile entre 1984 y 2026. La red elegida tiene 9.633 parámetros y 49 KB, y quedó por debajo del boosting, del bosque y de una red de una capa. Lo que más enseña no es el ranking: entre las seis arquitecturas que competían, el orden de la validación se invirtió en la prueba.#Machine learning#Algoritmos#PythonPortada: KNN explicado: entrenar tardó 0,007 s, predecir 5,5 s y con k = 1 memorizó lo que vioTutorialKNN explicado: entrenar tardó 0,007 s, predecir 5,5 s y con k = 1 memorizó lo que vioQué es k vecinos más cercanos, por qué hay que escalar, cómo elegir k y cuándo falla, medido con clima diario de siete ciudades de Chile entre 1984 y 2026. Ajustar con las 74.145 filas tomó 0,007 s y puntuar la prueba de 2016-2026, 5,5 s con un hilo; con k = 1 dio AUC 1,000 en sus propios días de entrenamiento y 0,69 en validación. Con k = 100 llegó a 0,870, bajo un boosting y sobre la regresión logística.#Machine learning#Algoritmos#PythonPortada: Naive Bayes explicado: entrenó en 0,008 s y pesa 1,3 KB, pero el 62 % de sus probabilidades quedó en los bordesTutorialNaive Bayes explicado: entrenó en 0,008 s y pesa 1,3 KB, pero el 62 % de sus probabilidades quedó en los bordesQué es Naive Bayes, qué significa la suposición de independencia y cuándo falla, medido con clima diario de siete ciudades de Chile entre 1984 y 2026. Ajustar con 74.145 filas tomó 0,008 s y el modelo ocupa 1,3 KB, con AUC 0,822; por tramos llegó a 0,844, sin diferencia concluyente con la regresión logística. El 62 % de sus probabilidades quedó bajo 0,01 o sobre 0,99, y calibrarlo bajó la pérdida logarítmica de 1,09 a 0,39.#Machine learning#Algoritmos#PythonPortada: SVM explicada: la presión en Pa hundió el AUC a 0,555 y el kernel exacto tardó 51 segundosTutorialSVM explicada: la presión en Pa hundió el AUC a 0,555 y el kernel exacto tardó 51 segundosQué es una máquina de vectores de soporte, qué hacen el margen, C y gamma, y cuándo falla, medido con clima diario de siete ciudades de Chile entre 1984 y 2026. Sin escalar, cambiar la presión de kPa a Pa bajó el AUC en validación de 0,835 a 0,555; con las 74.145 filas el kernel RBF tardó 51 s y, en la prueba de 2016-2026, quedó bajo un boosting que entrenó en 2,6 s.#Machine learning#Algoritmos#PythonPortada: Árbol de decisión explicado: 15 nodos que se leen, 8.524 hojas que memorizanTutorialÁrbol de decisión explicado: 15 nodos que se leen, 8.524 hojas que memorizanQué es un árbol de decisión, cómo elige sus preguntas y cuándo memoriza, medido con clima diario de siete ciudades de Chile entre 1984 y 2026. Sin límite de profundidad acertó todo lo que vio y en días nuevos bajó a AUC 0,689; con profundidad 7, elegida en validación, llegó a 0,862.#Machine learning#Algoritmos#PythonPortada: Gradient boosting explicado: 594 árboles en cadena que entrenan 9 veces más rápido que un bosqueTutorialGradient boosting explicado: 594 árboles en cadena que entrenan 9 veces más rápido que un bosqueQué es gradient boosting, cómo cada árbol corrige a los anteriores y cuándo falla, medido con clima diario de siete ciudades de Chile entre 1984 y 2026. Con tasa 1,0 se desestabilizó y a las 3.000 rondas quedó en AUC 0,681; con tasa 0,03 y 594 rondas elegidas en validación llegó a 0,883, sin diferencia concluyente con un bosque de 200 árboles.#Machine learning#Algoritmos#PythonPortada: K-Means explicado: le pedí cuatro tipos de día al clima de Chile y encontró SantiagoTutorialK-Means explicado: le pedí cuatro tipos de día al clima de Chile y encontró SantiagoQué es K-Means, cómo funciona el algoritmo de Lloyd y cuándo engaña, medido con clima diario de siete ciudades de Chile entre 1984 y 2026. Sin escalar, la humedad aporta el 76 % de la separación; con k = 8, solo el 18 % de los inicios al azar queda a menos de 0,1 % de la mejor inercia encontrada; y ningún criterio se pone de acuerdo en cuántos grupos hay.#Machine learning#Algoritmos#PythonPortada: Random Forest explicado: cómo vota un bosque de árboles, medido con 42 años de clima de ChileTutorialRandom Forest explicado: cómo vota un bosque de árboles, medido con 42 años de clima de ChileQué es Random Forest, cómo funcionan el bootstrap y el sorteo de variables, y por qué sus árboles se entrenan en paralelo y no en cadena. Lo medí prediciendo lluvia en siete ciudades de Chile: 7,5 veces más rápido con 8 CPU, meseta pasados los 100 árboles, una columna de ruido que la importancia por defecto pone por encima de variables reales y un techo al extrapolar temperaturas.#Machine learning#Algoritmos#PythonPortada: Regresión lineal explicada: la recta que midió el calor en Chile y lo que la rompeTutorialRegresión lineal explicada: la recta que midió el calor en Chile y lo que la rompeQué es la regresión lineal, cómo se calculan sus coeficientes y cuándo deja de servir, medido con datos diarios de siete ciudades de Chile. La máxima sube 0,33 °C por década en Temuco y baja en Valparaíso, el descenso de gradiente sin escalar no llega a una solución útil, un 5 % de datos con la coma corrida multiplica el error por 4,7 y la recta entrena unas 1.100 veces más rápido que un bosque aleatorio.#Machine learning#Algoritmos#PythonPortada: Regresión logística explicada: 16 números para decidir si llueve mañanaTutorialRegresión logística explicada: 16 números para decidir si llueve mañanaQué es la regresión logística, cómo convierte una suma en probabilidad y cuándo engaña, medida con clima diario de siete ciudades de Chile entre 1984 y 2026. Una recta da probabilidades negativas en el 9 % de los días; con umbral 0,5 la logística atrapa solo la mitad de las lluvias; y promete más lluvia de la que cae.#Machine learning#Algoritmos#Python

Todos los escritos