Конвейеры обучения с учителем

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

Стандартный конвейер обучения с учителем: проектирование признаков, разбивка данных на обучающую и тестовую выборки, оценка и выбор модели. Однако стандартного конвейера не всегда достаточно для реальных задач.

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

О чём этот курс?

  1. Масштабируемая настройка конвейера.
  2. Обеспечение релевантности прогнозов с привлечением экспертов в предметной области.
  3. Поддержание качества модели на протяжении времени.
  4. Обучение моделей при нехватке размеченных данных.
Проектирование рабочих процессов машинного обучения на Python

Могли ли вы предотвратить ипотечный кризис?

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

Preparing Video For Download...