Saltar al contenido principal

Modelos Soportados

godml incluye una librería de modelos listos para usar. Configura el tipo con model.type en el YAML.

Resumen

model.typeAlgoritmoTareaprovider: mlflowprovider: sagemaker
xgboostXGBClassifierClasificación
random_forestRandomForestClassifierClasificación
logistic_regressionLogisticRegressionClasificación
linear_regressionLinearRegressionRegresión
lstm_forecastLSTM (Keras)Regresión / series de tiempo✅ (godml[deep])
lightgbmLightGBMClasificación

xgboost y random_forest están implementados como clasificadores — no sirven para un target continuo pese a que XGBoost/RandomForest en general sí soportan regresión. Para regresión usa linear_regression o lstm_forecast.

XGBoost

model:
type: xgboost
hyperparameters:
max_depth: 6
eta: 0.3 # learning rate
n_estimators: 200
objective: binary:logistic # el AutoTuner lo completa si lo omites
random_state: 42

Random Forest

model:
type: random_forest
hyperparameters:
n_estimators: 100
max_depth: 10 # null = sin límite
max_features: sqrt # sqrt | log2 | null
random_state: 42

Logistic Regression

model:
type: logistic_regression
hyperparameters:
random_state: 42
hyperparameters va directo a sklearn

logistic_regression y linear_regression pasan hyperparameters sin filtrar a sklearn.linear_model.LogisticRegression/LinearRegression. Un campo que esas clases no acepten (p.ej. max_depth) hace fallar el entrenamiento.

Linear Regression

model:
type: linear_regression
hyperparameters: {} # LinearRegression de sklearn no acepta max_depth/eta/n_estimators/random_state

LSTM Forecast (series de tiempo)

model:
type: lstm_forecast
hyperparameters:
look_back: 5 # tamaño de la ventana de secuencia
units: 50 # neuronas en la capa LSTM
learning_rate: 0.001
epochs: 100
batch_size: 16

Requiere:

pip install godml[deep] # incluye TensorFlow + Keras

Métricas calculadas: mse, mae, r2 (no auc/accuracy).

LightGBM

Solo disponible con provider: sagemaker (_SUPPORTED_MODELS del executor de SageMaker). Con provider: mlflow, model.type: lightgbm falla porque no está en el registro de modelos core.

AutoTuner

godml detecta si el target es clasificación binaria, multiclase o regresión y completa los hiperparámetros de objective/eval_metric/criterion/solver que falten — nunca pisa un valor que ya definiste:

ModeloBinariaMulticlaseRegresión
xgboostobjective: binary:logistic, eval_metric: aucobjective: multi:softprob, num_class, eval_metric: mloglossobjective: reg:squarederror
random_forestcriterion: entropycriterion: ginicriterion: squared_error
logistic_regressionsolver: liblinearmulti_class: ovr, solver: lbfgs
lstm_forecastcompleta epochs/batch_size si faltan

No ajusta hiperparámetros según tamaño del dataset ni detecta desbalance de clases (scale_pos_weight) todavía.

Modelo personalizado

Implementa BaseClassificationModel o BaseRegressionModel (de godml.model_service.base_model_interface) — heredar de la subclase correcta hace que godml calcule las métricas adecuadas (clasificación vs. regresión) automáticamente.

Restricciones de source: local:

  • El archivo debe vivir en <proyecto>/models/<nombre>.py.
  • model.type (y el nombre del archivo) solo puede ser custom_model, user_model o project_model — no un nombre arbitrario.
  • Importa el módulo base con alias, no la clase directamente: si haces from ... import BaseClassificationModel en tu archivo, godml puede detectar esa clase base importada en vez de la tuya (escanea el módulo alfabéticamente buscando la primera subclase de BaseModel) y falla al instanciarla por ser abstracta.
models/custom_model.py
import godml.model_service.base_model_interface as bmi

class MiModelo(bmi.BaseClassificationModel):
def train(self, X_train, y_train, X_test, y_test, params):
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(random_state=params.get("random_state"))
model.fit(X_train, y_train)
preds = model.predict_proba(X_test)[:, 1]
return model, preds, {} # (modelo, predicciones, métricas — {} deja que godml las calcule)

def predict(self, X):
return self.model.predict(X)
model:
type: custom_model
source: local

Métricas calculadas automáticamente

Para clasificación binaria:

  • auc — Area Under ROC Curve
  • accuracy — Exactitud
  • precision — Precisión
  • recall — Exhaustividad
  • f1 — F1-Score

Para regresión (linear_regression, lstm_forecast):

  • mse — Error cuadrático medio
  • mae — Error absoluto medio
  • r2 — Coeficiente de determinación

Ejemplo: Churn Classification