Этот пост в блоге охватывает лекции 8, 9 и 10 Стэнфордского курса машинного обучения http://cs229.stanford.edu/syllabus-spring2020.html.

Полные версии лекций можно найти здесь:

Лекция 8: https://www.youtube.com/watch?v=rjbkWSTjHzM

Лекция 9: https://www.youtube.com/watch?v=iVOxMcumR4A

Лекция 10: https://www.youtube.com/watch?v=wr9gUr-eWdA

На данный момент мы узнали о нескольких теоретических классах алгоритмов, но у нас не было возможности охватить некоторые из наиболее практических аспектов построения алгоритма машинного обучения. В этом посте мы рассмотрим некоторые ключевые концепции, которые помогут вам применить свои знания в области машинного обучения к реальным задачам.

Предвзятость и дисперсия

Предвзятость и дисперсия — основные концепции машинного обучения, которые кажутся относительно простыми, но их очень сложно применить на практике.

  • Иногда при разработке алгоритма машинного обучения мы делаем слишком сильные предположения. Примером этого является подгонка прямой линии через данные, которые являются квадратичными по своей природе, или подгонка в целом. Если мы делаем слишком строгие предположения, алгоритм показывает высокую систематическую ошибку. Другой способ думать о смещении состоит в том, что при высоком смещении, когда вы берете разные случайные выборки данных, параметр веса центрируется где-то, кроме «истинного» значения.
  • Переобучение противоположно недообучению: алгоритм слишком близко подходит к обучающим данным. Учитывая n обучающих примеров, теоретически можно подогнать полином степени n-1, но это приведет к крайне неточным предсказаниям. Поскольку переобучение приводит к большим различиям в алгоритмах для разных случайных выборок обучающих данных, алгоритмы, которые переобучают данные, демонстрируют высокую дисперсию. Когда вы получите больше обучающих данных, дисперсия уменьшится.

На практике лучше всего подобрать что-то быстрое и простое, например, линейную или логистическую регрессию, и проверить, есть ли большое смещение или высокая дисперсия. Вы можете проверить это, сравнив производительность тренировочного набора с производительностью тестового набора. Если вы этого не поняли, это объясняется позже в блоге.

Регуляризация

Переоснащение часто происходит, когда количество признаков в данных относительно велико по сравнению с количеством примеров. Если вы обнаружите, что ваш алгоритм переоснащает данные, полезно добавить параметр допуска λ||θ||² (помните, что θ — это вектор весов) к функции стоимости, которую вы пытаетесь минимизировать (или вычитая ее из функция правдоподобия, которую вы пытаетесь максимизировать). Когда вы увеличиваете λ, увеличивается «штраф» за большие веса, поэтому данные меньше подходят. Если λ слишком велико, смещение алгоритма становится слишком большим, поэтому важно найти оптимальное значение λ, которое обеспечивает соответствие данных «Златовласки».

Перекрестная проверка

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

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

Для задач с меньшим количеством примеров k-кратная перекрестная проверка позволяет сократить потери данных в наборах для разработки и тестирования. Вы просто делите данные на k блоков (k обычно равно 10) и

  1. Обучайте разные модели на блоках k-1,
  2. Протестируйте последний блок и вычислите ошибку,
  3. Повторяйте шаги 1 и 2, пока каждый блок не будет использован в качестве тестового блока.
  4. Усреднить ошибку.

Вы можете дополнительно подогнать выбранную модель ко всем данным.

Ошибка

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

Минимизатор эмпирического риска (ERM) пытается свести к минимуму количество ошибочных догадок алгоритма. Это использовалось в той или иной форме во всех алгоритмах, которые мы рассматривали до сих пор.

Иллюстрация: деревья решений

Если у нас есть данные, которые не являются линейно разделимыми, большинство наших алгоритмов до сих пор не могут с ними справиться. Мы могли бы использовать SVM, но есть и другой вариант. Дерево решений в основном воспроизводит 20 вопросов с данными (хотя может быть любое количество вопросов), чтобы провести несколько линий разделения, чтобы разбить данные на более мелкие фрагменты. Ход мысли выглядит так:

Данные будут разделены на регионы или листья, «Да на вопрос 1» и «Нет на вопрос 1». Каждая из этих результирующих областей будет разделена новым вопросом. Каждая конечная область предсказывает большинство в этой области для задач классификации и среднее значение для задач регрессии. Если большинство в области «да-да» являются отрицательными примерами, то дерево решений классифицирует любой новый пример «да-да» как отрицательный.

Возникает вопрос: как мы решаем, какие вопросы задавать (т. е. какие деления делать). Для задач классификации мы хотим выбрать разбиения, которые максимизируют снижение перекрестной энтропийной потери от родительской области к дочерним областям. Мы используем перекрестную потерю энтропии, так как это всегда приводит к расщеплению, которое дает нам больше информации. Для задач регрессии вы используете квадрат расстояния от среднего значения области.

Вы можете сказать, что если вы позволите своему дереву полностью вырасти, оно просто разделится на регионы, содержащие каждую точку данных отдельно. Это алгоритм с высокой дисперсией, поэтому его необходимо упорядочить. Это можно сделать несколькими способами, такими как минимальный размер листа или максимальная глубина. Другим способом является сокращение, когда вы полностью расширяете дерево и работаете в обратном направлении, чтобы увидеть полезность каждого вопроса. Это приводит к тому, что вопросы, которые действительно значительно уменьшили потери, но являются результатами вопросов, которые на самом деле не уменьшили потери, все еще остаются, но окончательные разделения, которые на самом деле не дают информации, отменяются. При сокращении используется набор разработчиков, а не набор поездов, который создал дерево решений или регрессии.

Другие сообщения в серии

Часть 3: https://medium.com/@ayanabh/support-vector-machines-machine-learning-for-high-schoolers-a9d1025dfdbb

Часть 5: https://medium.com/@ayanabh/neural-networks-machine-learning-for-high-schoolers-f42eed3458a

Отдельное спасибо Ishita Sharma за отзыв в этом блоге!