Pipeline řízeného učení

Designing Machine Learning Workflows in Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Označená data

  • Příznakové proměnné (zkratka: X)
  • Štítky nebo třída (zkratka: y)
credit_scoring.head(4)
  checking_status  duration  ...  foreign_worker class
0            '<0'         6  ...             yes  good
1      '0<=X<200'        48  ...             yes   bad
2   'no checking'        12  ...             yes  good
3            '<0'        42  ...             yes  good
Designing Machine Learning Workflows in Python

Příprava příznaků

  • Většina klasifikátorů vyžaduje číselné příznaky
  • Řetězcové sloupce je třeba převést na čísla

Předzpracování pomocí LabelEncoder z sklearn.preprocessing:

le = LabelEncoder()
le.fit_transform(credit_scoring['checking_status'])[:4]
array([1, 0, 3, 1])
Designing Machine Learning Workflows in Python

Trénování modelu

  • .fit(features, labels)
  • .predict(features)
features, labels = credit_scoring.drop('class', 1), credit_scoring['class']

model_nb = GaussianNB() model_nb.fit(features, labels) model_nb.predict(features.head(5))
['good' 'bad' 'good' 'bad' 'good']

60% přesnost na prvních 5 příkladech.

Designing Machine Learning Workflows in Python

Výběr modelu

  • .fit() optimalizuje parametry daného modelu
  • Co jiné modely?

AdaBoostClassifier překonává GaussianNB na prvních pěti datových bodech:

model_ab = AdaBoostClassifier()
model_ab.fit(features, labels)
model_ab.predict(features.head(5))
numpy.array(labels[0:5])
['good' 'bad' 'good' 'good' 'bad']
['good' 'bad' 'good' 'good' 'bad']
Designing Machine Learning Workflows in Python

Hodnocení výkonnosti

Větší vzorky $\Rightarrow$ přesnější odhady přesnosti:

from sklearn.metrics import accuracy_score
accuracy_score(labels, model_nb.predict(features)) # naive bayes
0.706
accuracy_score(labels, model_ab.predict(features)) # adaboost
0.802

Co je na tomto výpočtu špatně?

Designing Machine Learning Workflows in Python

Přeučení a rozdělení dat

Přeučení: model vždy dosahuje lepších výsledků na trénovacích datech než na nových datech.

Trénování na X_train, y_train, hodnocení přesnosti na X_test, y_test:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

GaussianNB().fit(X_train, y_train).predict(X_test)
Designing Machine Learning Workflows in Python

Standardní postup řízeného učení začínající přípravou příznaků, rozdělením dat na trénovací a testovací část, hodnocením modelu a výběrem modelu. Standardní pipeline však pro reálné problémy někdy nestačí.

Designing Machine Learning Workflows in Python

O čem je tento kurz?

  1. Škálovatelné způsoby ladění pipeline.
  2. Zajištění relevance predikcí pomocí expertů z oboru.
  3. Zajištění dlouhodobé výkonnosti modelu.
  4. Trénování modelů při nedostatku štítků.
Designing Machine Learning Workflows in Python

Mohli jste předejít hypoteční krizi?

Designing Machine Learning Workflows in Python

Preparing Video For Download...