Potoki uczenia nadzorowanego

Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Dane z etykietami

  • Zmienne cech (skrót: X)
  • Etykiety lub klasa (skrót: 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
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Inżynieria cech

  • Większość klasyfikatorów wymaga cech numerycznych
  • Kolumny tekstowe należy przekonwertować na liczby

Przetwarzanie wstępne za pomocą LabelEncoder z sklearn.preprocessing:

le = LabelEncoder()
le.fit_transform(credit_scoring['checking_status'])[:4]
array([1, 0, 3, 1])
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Dopasowywanie 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% dokładności na pierwszych 5 przykładach.

Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Selekcja modelu

  • .fit() optymalizuje parametry danego modelu
  • A co z innymi modelami?

AdaBoostClassifier wyprzedza GaussianNB na pierwszych pięciu punktach danych:

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']
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Ocena wydajności

Większy rozmiar próby $\Rightarrow$ dokładniejsze oszacowania:

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 jest błędne w tym obliczeniu?

Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Przeuczenie i podział danych

Przeuczenie: model zawsze osiąga lepsze wyniki na danych treningowych niż na nowych danych.

Trenowanie na X_train, y_train, ocena dokładności 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)
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Standardowy potok uczenia nadzorowanego: inżynieria cech, podział na zbiór treningowy i testowy, ocena modelu i selekcja modelu. Standardowy potok bywa niewystarczający dla rzeczywistych problemów.

Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Czego dotyczy ten kurs?

  1. Skalowalne metody dostrajania potoku.
  2. Zapewnienie trafności prognoz przy udziale ekspertów dziedzinowych.
  3. Utrzymanie wysokiej wydajności modelu w czasie.
  4. Dopasowywanie modeli przy niewystarczającej liczbie etykiet.
Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Czy można było zapobiec kryzysowi hipotecznemu?

Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Preparing Video For Download...