Конвеєри з навчанням з учителем

Проєктування робочих процесів машинного навчання в Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Розмічені дані

  • Змінні-ознаки (скорочено: X)
  • Мітки або клас (скорочено: 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
Проєктування робочих процесів машинного навчання в Python

Інженерія ознак

  • Більшість класифікаторів очікують числові ознаки
  • Потрібно перетворити рядкові стовпці на числа

Попередня обробка за допомогою LabelEncoder з sklearn.preprocessing:

le = LabelEncoder()
le.fit_transform(credit_scoring['checking_status'])[:4]
array([1, 0, 3, 1])
Проєктування робочих процесів машинного навчання в Python

Навчання моделі

  • .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% точності на перших 5 прикладах.

Проєктування робочих процесів машинного навчання в Python

Вибір моделі

  • .fit() оптимізує параметри заданої моделі
  • А як щодо інших моделей?

AdaBoostClassifier перевершує GaussianNB на перших п'яти спостереженнях:

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']
Проєктування робочих процесів машинного навчання в Python

Оцінювання якості

Більша вибірка $\Rightarrow$ краща оцінка точності:

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

Що не так із цим обчисленням?

Проєктування робочих процесів машинного навчання в Python

Перенавчання і поділ даних

Перенавчання: модель завжди працює краще на даних, на яких її навчали, ніж на нових.

Навчайте на X_train, y_train, оцінюйте точність на 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)
Проєктування робочих процесів машинного навчання в Python

Стандартний робочий процес навчання з учителем: інженерія ознак, поділ даних на train і test, потім оцінка та вибір моделі. Утім, стандартного конвеєра інколи замало для задач реального світу.

Проєктування робочих процесів машинного навчання в Python

Про що цей курс?

  1. Масштабовані способи налаштування конвеєра.
  2. Як забезпечити релевантність прогнозів за участі доменних експертів.
  3. Як утримувати високу якість моделі з часом.
  4. Навчання, коли бракує міток.
Проєктування робочих процесів машинного навчання в Python

Чи могли б ви запобігти іпотечній кризі?

Проєктування робочих процесів машинного навчання в Python

Preparing Video For Download...