Машинное обучения с учителем (supervised learning)

https://github.com/amueller/introduction_to_ml_with_python/blob/master/02-supervised-learning.ipynb

Обучение с учителем используется всякий раз, когда мы хотим предсказать определенный результат (ответ) по данному объекту, и у нас есть пары объект-ответ. Мы строим модель машинного обучения на основе этих пар объект-ответ, которые составляют наш обучающий набор данных. Наша цель состоит в том, чтобы получить точные прогнозы для новых, никогда ранее не встречавшихся данных. Машинное обучение с учителем часто требует вмешательства человека, чтобы получить обучающий набор данных, но потом оно автоматизирует и часто ускоряет решение трудоемких или неосуществимых задач.

Есть две основные задачи машинного обучения с учителем:

  • классификация (classification)
  • регрессия (regression)


Переобучение (overfitting) - модель слишком точно подстраивается под особенности обучающего набора. В результате чего, хорошо работает на обучающем наборе, но не умеет обобщать результат на новые данные.

Недообучение (underfitting) - недостаточный охват многообразия и изменчивости данных. Модель плохо работает даже на обучающем наборе.

Регуляризация (regularization) - явное ограничение модели для предотвращения переобучения.


Алгоритмы машинного обучения с учителем:

  • Ближайшие соседи (k-Nearest Neighbors) - Подходит для небольших наборов данных, хорош в качестве базовой модели, прост в объяснении.
  • Линейные модели (Linear Models) - Считается первым алгоритмом, который нужно попробовать, хорош для очень больших наборов данных, подходит для данных с очень высокой размерностью.
  • Наивный байесовский классификатор (Naive Bayes Classifiers) - Подходит только для классификации. Работает даже быстрее, чем линейные модели, хорош для очень больших наборов данных и высокоразмерных данных. Часто менее точен, чем линейные модели.
  • Деревья решений (Decision trees)- Очень быстрый метод, не нужно масштабировать данные, результаты можно визуализировать и легко объяснить.
  • Случайные леса (Random forests) - Почти всегда работают лучше, чем одно дерево решений, очень устойчивый и мощный метод. Не нужно масштабировать данные. Плохо работает с данными очень высокой размерности и разреженными данными.
  • Градиентный бустинг деревьев решений (Gradient Boosted Regression Trees (Gradient Boosting Machines)) - Как правило, немного более точен, чем случайный лес. В отличие от случайного леса медленнее обучается, но быстрее предсказывает и требует меньше памяти. По сравнению со случайным лесом требует настройки большего числа параметров.
  • Машины опорных векторов (Kernelized Support Vector Machines, SVM) - Мощный метод для работы с наборами данных среднего размера и признаками, измеренными в едином масштабе. Требует масштабирования данных, чувствителен к изменению параметров.
  • Нейронные сети (Neural Networks (Deep Learning)) - Можно построить очень сложные модели, особенно для больших наборов данных. Чувствительны к масштабированию данных и выбору параметров. Большим моделям требуется много времени для обучения.