Saltar al contenido
Algoritmos Fundamentales de Machine Learning

31 de mayo de 2026

Algoritmos Fundamentales de Machine Learning

Entiende las matemáticas y la lógica detrás de regresión, clasificación, métodos ensemble, clustering y SVMs.

AI Data
Machine Learning Algoritmos Python

Una visión práctica de los algoritmos clásicos de ML que necesitas conocer antes de pasar a deep learning.

Categorías de ML

Machine Learning
├── Aprendizaje Supervisado (datos etiquetados)
│   ├── Regresión → predecir un número
│   └── Clasificación → predecir una categoría
├── Aprendizaje No Supervisado (sin etiquetas)
│   ├── Clustering → agrupar items similares
│   └── Reducción de Dimensionalidad → simplificar datos
└── Aprendizaje por Refuerzo → aprender por recompensa

Regresión

Regresión Lineal

Predice un valor continuo ajustando una línea.

$$y = mx + b$$

  • m = pendiente (peso)
  • b = intersección (sesgo)
from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_train, y_train)
predicciones = model.predict(X_test)

Casos de uso: Predicción de precios, previsión de ventas.

Métricas: MSE (Error Cuadrático Medio), R² Score.

Clasificación

Regresión Logística

A pesar del nombre, es para clasificación. Predice probabilidades usando una función sigmoide.

$$P(y=1) = \frac{1}{1 + e^{-(mx+b)}}$$

from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model.fit(X_train, y_train)
predicciones = model.predict(X_test)

Casos de uso: Detección de spam, diagnóstico médico (sí/no).

Árboles de Decisión

Un árbol de condiciones if/else que divide los datos.

         [¿Edad > 30?]
        /              \
      Sí                No
  [¿Ingresos > 50K?]  [¿Estudiante?]
   /         \          /         \
 Compra   No Compra  Compra   No Compra
from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier(max_depth=5)
model.fit(X_train, y_train)

Pros: Fácil de entender, no necesita escalado. Contras: Se sobreajusta fácilmente.

K-Nearest Neighbors (KNN)

Clasifica basándose en los K puntos de datos más cercanos.

from sklearn.neighbors import KNeighborsClassifier

model = KNeighborsClassifier(n_neighbors=5)
model.fit(X_train, y_train)

Casos de uso: Recomendación, reconocimiento de imágenes.

Métodos Ensemble

Combinan múltiples modelos para mejores resultados.

Random Forest

Muchos árboles de decisión entrenados en subconjuntos aleatorios → votan la respuesta.

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)

Por qué funciona: Cada árbol es ligeramente diferente. Juntos, se cancelan los errores.

Gradient Boosting

Los árboles se construyen uno tras otro, cada uno corrigiendo los errores del anterior.

from sklearn.ensemble import GradientBoostingClassifier

model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
model.fit(X_train, y_train)

Implementaciones populares: XGBoost, LightGBM, CatBoost.

Clustering

K-Means

Agrupa datos en K clusters basándose en distancia.

1. Elegir K centros aleatorios
2. Asignar cada punto al centro más cercano
3. Mover centros a la media de los puntos asignados
4. Repetir hasta que sea estable
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(X)
etiquetas = model.labels_

Casos de uso: Segmentación de clientes, compresión de imágenes.

Máquinas de Vectores de Soporte (SVM)

Encuentra la mejor frontera (hiperplano) para separar clases, maximizando el margen.

  Clase A: o o o  |  x x x :Clase B
              o   |   x x
           o o    |    x
                  |
        ← margen →
from sklearn.svm import SVC

model = SVC(kernel="rbf", C=1.0)
model.fit(X_train, y_train)

Truco del kernel: Mapea datos a dimensiones más altas donde se vuelven separables.

KernelCuándo Usar
linearDatos linealmente separables
rbfDatos no lineales (por defecto)
polyFronteras polinómicas

Evaluación del Modelo

Métricas de Clasificación

MétricaQué Mide
Accuracy% de predicciones correctas
PrecisionDe los positivos predichos, cuántos son correctos
RecallDe los positivos reales, cuántos se encontraron
F1 ScoreBalance entre precision y recall
from sklearn.metrics import classification_report
print(classification_report(y_test, predicciones))

Validación Cruzada

from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)

Resumen

AlgoritmoTipoMejor Para
Regresión LinealRegresiónPredecir números
Regresión LogísticaClasificaciónBinario sí/no
Árbol de DecisiónAmbosReglas interpretables
Random ForestAmbosPropósito general, robusto
Gradient BoostingAmbosCompeticiones, mejor accuracy
K-MeansClusteringAgrupar datos sin etiquetas
SVMClasificaciónDatasets pequeños/medianos