Salta el contingut

Rúbrica PR5072/01: Pipeline ML amb scikit-learn

Mòdul: 5072 Sistemes d'Aprenentatge Automàtic Pràctica: PR5072/01 — Pipeline de ML amb scikit-learn i Docker Hores estimades: 8 hores Lliurament: Notebook .ipynb + model .pkl + informe PDF


Criteris d'avaluació

Criteri Pes Excel·lent (9-10) Notable (7-8) Aprovat (5-6) Insuficient (<5)
Configuracio Docker 10% Dockerfile funcional, contenidor arrencat correctament, volums muntats, healthcheck present Contenidor funcional sense healthcheck Contenidor arrencat manualment sense Dockerfile Docker no usat o no funcional
EDA i preprocés 20% EDA exhaustiu: distribucions, correlacions, valors nuls, target balance; visualitzacions clares i comentades; preprocés complet i justificat amb ColumnTransformer EDA correcte amb les visualitzacions principals; preprocés adequat EDA basic amb 1-2 grafics; preprocés funcional sense justificacio EDA absent o incorrecte; preprocés inexistent o trencat
Entrenament i comparacio 25% 3 models implementats com a Pipeline sklearn; cross-validation StratifiedKFold(5); AUC-ROC i F1 correctament calculats i comparats; grafic comparatiu 3 models, cross-val correcte, 1-2 metriques 2 models, avaluacio basica sense cross-val Menys de 2 models; sense Pipeline; metriques absents
Optimitzacio d'hiperparametres 20% Optuna implementat correctament (>=30 trials), visualitzacio de convergencia, millora demostrada respecte al model base, justificacio dels hiperparametres triats Optuna o GridSearchCV implementat, millora present Optimitzacio parcial (menys de 10 trials o parametres insuficients) Sense cap optimitzacio d'hiperparametres
Qualitat del codi 15% Codi net, comentat en catala, funcions reutilitzables, variables ALUMNE/ALUMNE_ID usades a tot arreu, reproducible amb random_state=42 Codi llegible, comentat, Pipeline sklearn present, pocs problemes estilistics Codi funcional amb comentaris basics, alguns random_state absents Codi desordenat, sense comentaris, no reproducible
Informe i conclusions 15% Resum executiu clar, metodologia descrita, taula comparativa de resultats, recomanacio de negoci concreta i justificada, preguntes de reflexio completament resposes Conclusions correctes, resultats clars, 5-6 preguntes resposes Conclusions basiques, resultats presents, 3-4 preguntes resposes Sense conclusions; preguntes de reflexio no resposes
Personalitzacio (nom alumne) 5% Nom visible a: variable ALUMNE, tots els fitxers de sortida (.pkl, .json, .png), noms del contenidor Docker, cel·la de titol del notebook Nom visible als fitxers principals i variable ALUMNE Nom parcialment present (manquen alguns fitxers) Sense personalitzacio del nom

Detall dels criteris

Configuració Docker (10%)

Per obtenir la maxima nota en aquest criteri cal:

  • Dockerfile correcte basat en jupyter/scipy-notebook:python-3.11
  • Fitxer requirements.txt amb totes les dependencies i versions fixades
  • Ordre docker run amb --name sklearn-[nom-alumne]
  • Volums muntats per a notebooks i dades
  • Healthcheck configurat al Dockerfile
  • Evidencia d'execucio (captures de pantalla o logs al notebook)

Consell

Inclou una cel·la al notebook que executi !docker ps o que mostri la versio de Python i les biblioteques instal·lades per demostrar que treballes dins el contenidor.

EDA i preprocés (20%)

L'EDA ha d'incloure com a minim:

  • Shape del dataset i tipus de cada columna
  • Recompte i tractament de valors nuls
  • Distribucio de la variable target (grafic i percentatges)
  • Distribucio de les variables numeriques (histogrames o boxplots)
  • Analisi de les variables categoriques (grafics de barres)
  • Matriu de correlacio
  • Almenys una visualitzacio de relacio entre features i target

El ColumnTransformer ha d'estar justificat: per que escalar les numeriques? per que OneHotEncoder i no LabelEncoder per a les categoriques?

Entrenament i comparació (25%)

  • Els 3 models han d'estar encapsulats dins un Pipeline de scikit-learn (preprocessor + model)
  • La validacio creuada ha de ser StratifiedKFold(n_splits=5) per respectar el desbalanceig
  • S'han de reportar com a minim: AUC-ROC i F1
  • La comparacio ha d'incloure intervals de confianca (mitja +/- desviacio estandard del CV)
# Exemple de com hauria de ser la comparacio
for nom, pipeline in models.items():
    scores = cross_val_score(pipeline, X_train, y_train,
                             cv=StratifiedKFold(5), scoring='roc_auc')
    print(f"{nom}: {scores.mean():.4f} +/- {scores.std():.4f}")

Optimització d'hiperparàmetres (20%)

  • Optuna (preferit) o GridSearchCV sobre el millor model
  • Minim 30 trials si s'usa Optuna
  • La funcio objectiu ha d'incloure el preprocessor (Pipeline complet)
  • S'ha de demostrar millora respecte al model base (AUC-ROC)
  • Visualitzacio de la convergencia de l'optimitzacio

Qualitat del codi (15%)

Aspectes valorats:

Aspecte Excellent Insuficient
Comentaris En catala, cada bloc explicat Absents
Variables ALUMNE i ALUMNE_ID Usades a tot arreu Absents
random_state=42 A tots els elements estocastics Absent
Funcions Codi encapsulat en funcions reutilitzables Tot al nivell global
Reproduibilitat Executa sense errors de dalt a baix Errors en executar

Informe i conclusions (15%)

L'informe (cel·les Markdown del notebook) ha de tenir:

  1. Resum executiu (3-5 frases): quin problema, quin model, quin resultat
  2. Metodologia aplicada (preprocés, algoritmes, validacio)
  3. Taula comparativa de tots els models amb les metriques
  4. Analisi de les features importants: quines son mes predictores?
  5. Recomanacio de negoci concreta: quin umbral usar en produccio? quins clients prioritzar?
  6. Respostes a les 7 preguntes de reflexio (desenvolupa, no respostes d'una linia)

Taula de puntuació

Nota Descripció
9-10 Excel·lent: supera els requisits en tots els criteris. Codi net, analisi profunda, recomanacions de negoci solides.
7-8 Notable: compleix tots els requisits basics correctament. Pot tenir algunes mancances menors.
5-6 Aprovat: els elements principals son presents i funcionals pero amb mancances significatives.
3-4 Insuficient: manca algun element clau (un model, l'optimitzacio, les conclusions).
0-2 No presentat o no funcional: el notebook no executa o manca mes de la meitat dels continguts.

Penalitzacions

Situació Penalització
AUC-ROC del model final < 0.75 -1 punt
Notebook no executat de dalt a baix -2 punts
Nom de l'alumne absent als fitxers -1 punt
Lliurament fora de termini (1-3 dies) -1 punt per dia
Plagi detectat 0 (cas academic)

Rúbrica de les preguntes de reflexió (part de l'informe)

Cada pregunta resolta correctament aporta fins a 1,43 punts dins el criteri "Informe i conclusions" (7 preguntes x 1,43 ≈ 10 punts).

Pregunta Resposta insuficient Resposta acceptable Resposta excel·lent
1. XGBoost vs Regressio Logistica "XGBoost es millor" Menciona arbres de decisio i boosting Explica bias-variance tradeoff, capacitat de modelar no-linealitats, handling de valors nuls
2. Gestio del desbalanceig "Usem class_weight" Explica que significa i quan aplicar-ho Compara class_weight, SMOTE, umbral de decisio, PR-AUC vs ROC-AUC
3. Interpretacio AUC-ROC "Es la corba ROC" Explica TP rate vs FP rate Interpreta en context de negoci: probabilitat que un positiu tingui score > negatiu
4. Ordre d'operacions al Pipeline "Perque si" Menciona que imputer va primer Explica data leakage si l'ordre fos incorrecte
5. Data drift "Monitoritzar el model" Menciona distribucio de prediccions Proposa metriques especifiques (PSI, KL-divergence), eines (Evidently, WhyLogs)
6. Biaixos del model "Podria tenir biaixos" Menciona variables sensibles Identifica variables proxy, proposa analisi de subgrups, equitat algorismica
7. Accions preventives "Oferir descomptes" Proposa accio especifica Analitza cost/benefici, falsos positius, segmentacio de la resposta

Exemple de fitxers de lliurament correctes

churn_joan_garcia.ipynb              <- Notebook principal
model_churn_joan_garcia.pkl          <- Model serialitzat
metadata_model_joan_garcia.json      <- Metadata en JSON
informe_churn_joan_garcia.pdf        <- Notebook exportat a PDF
eda_joan_garcia.png                  <- (opcional) grafics exportats
comparativa_models_joan_garcia.png   <- (opcional)
avaluacio_final_joan_garcia.png      <- (opcional)

Nom correcte dels fitxers

Tots els fitxers han d'incloure el cognom (o nom complet) de l'alumne. Fitxers amb noms genèrics com notebook.ipynb o model.pkl no seran acceptats.


Rubrica PR5072/01 | Modul 5072 Sistemes d'Aprenentatge Automatic | Institut Sa Palomera (Blanes) | Curs IABD 2026-2027