Övervakade inlärningspipelines

Att designa maskininlärningsflöden i Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Etiketterade data

  • Särdragsvariabler (förkortning: X)
  • Etiketter eller klass (förkortning: 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
Att designa maskininlärningsflöden i Python

Särdragskonstruktion

  • De flesta klassificerare kräver numeriska särdrag
  • Strängkolumner behöver konverteras till tal

Förbearbeta med LabelEncoder från sklearn.preprocessing:

le = LabelEncoder()
le.fit_transform(credit_scoring['checking_status'])[:4]
array([1, 0, 3, 1])
Att designa maskininlärningsflöden i Python

Modellanpassning

  • .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% noggrannhet på de första 5 exemplen.

Att designa maskininlärningsflöden i Python

Modellval

  • .fit() optimerar parametrarna för den givna modellen
  • Vad händer med andra modeller?

AdaBoostClassifier presterar bättre än GaussianNB på de första fem datapunkterna:

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']
Att designa maskininlärningsflöden i Python

Prestandautvärdering

Större urvalsstorlekar $\Rightarrow$ bättre noggrannhetsuppskattningar:

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

Vad är fel med den här beräkningen?

Att designa maskininlärningsflöden i Python

Överanpassning och datadelning

Överanpassning: en modell presterar alltid bättre på träningsdata än på osedd data.

Träna på X_train, y_train, utvärdera noggrannhet på 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)
Att designa maskininlärningsflöden i Python

Ett standard övervakat inlärningsflöde som börjar med särdragskonstruktion, datadelning i tränings- och testdata, följt av modellbedömning och modellval. Standardpipelinen räcker ibland inte till för verkliga problem.

Att designa maskininlärningsflöden i Python

Vad handlar kursen om?

  1. Skalbara sätt att finjustera din pipeline.
  2. Säkerställa att dina förutsägelser är relevanta genom att involvera domänexperter.
  3. Säkerställa att modellen fortsätter prestera väl över tid.
  4. Anpassa modeller när du saknar tillräckligt med etiketter.
Att designa maskininlärningsflöden i Python

Kunde du ha förhindrat bolånekrisen?

Att designa maskininlärningsflöden i Python

Preparing Video For Download...