Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
7.1 Введение в ансамблевые методы (L07: Ансамблевые методы)
7.1 Введение в ансамблевые методы (L07: Ансамблевые методы)
В лекции на этой неделе мы углубимся в ансамблевые методы, которые являются важной областью машинного обучения. Эти методы широко используются в прикладных исследованиях машинного обучения для достижения высокой производительности в реальных приложениях. Твердые методы, известные своей эффективностью на практике, часто дают наилучшие результаты.
В лекции также будут рассмотрены деревья решений и рассмотрены некоторые вопросы, поднятые на Piazza, об их актуальности. Несмотря на то, что это относительно старый и знакомый алгоритм, деревья решений остаются актуальными и сегодня. Они не только интерпретируемы, но и часто используются в ансамблевых методах, где демонстрируют исключительную производительность. Лекция также направлена на изучение этого аспекта.
Прежде чем углубляться в ансамблевые методы, важно подвести итоги, на котором мы находимся в этом семестре. В настоящее время мы завершаем третью часть, посвященную древовидным методам. Однако стоит отметить, что некоторые из этих методов выходят за рамки деревьев решений и охватывают другие методы, в том числе твердые методы, применяемые к глубоким нейронным сетям. Деревья решений были отнесены к третьей части из-за их тесной связи с большинством ансамблевых методов.
После завершения этого раздела мы углубимся в оценку модели, прежде чем обсуждать неконтролируемое обучение и, если позволяет время, байесовское обучение. Хотя первоначальный план состоял в том, чтобы провести промежуточный экзамен и охватить другие методы раньше, продвижение курса заняло больше времени, чем предполагалось. Тем не менее дополнительное время, потраченное на настройку среды Python и ознакомление всех, особенно тех, у кого нет опыта работы с Python, было полезным. Это гарантирует, что все участники находятся на одной странице и готовы к предстоящей домашней работе, которая будет включать реализацию дерева решений CART (деревьев классификации и регрессии), не полагаясь на предварительно созданные библиотеки, такие как scikit-learn.
Лекция состоит из семи частей. В первой части представлены введение и обзор ансамблевых методов. Впоследствии мы изучим различные внутренние методы, начиная с мажоритарного голосования, самого простого типа ансамблевого метода. Затем мы углубимся в бэггинг, метод, который включает бутстрепную выборку из тренировочного набора. Полезность этого метода будет объяснена. Также будет рассмотрено усиление, которое включает в себя преобразование слабых обучаемых (таких как короткие деревья решений) в сильные модели. В частности, мы обсудим повышение градиента — один из самых популярных на сегодняшний день алгоритмов, известный своими успехами в соревнованиях Kaggle. Будут представлены еще один широко известный ансамблевый метод — случайные леса. Эти модели известны своей простотой использования, поскольку они часто обеспечивают превосходную производительность без обширной настройки гиперпараметров. Они рекомендуются людям, которые ищут прогностические модели в различных областях науки, особенно если им не хватает опыта в области машинного обучения.
Также будут упомянуты машины опорных векторов (SVM), особенно их популярность в прошлом из-за их производительности, особенно с ядрами RBF (Radial Basis Function). Однако случайные леса часто дают такие же хорошие или лучшие результаты без необходимости обширной настройки, что делает их предпочтительными для практических приложений. Наконец, будет обсуждаться стекирование, еще один популярный метод в приложениях.
Чтобы проиллюстрировать значение ансамблевых методов, будет представлен рисунок, демонстрирующий пример со случайными лесами. Эта модель не ограничивается задачами классификации и может легко вычислять важность признаков. Например, в упомянутом примере атомы серы были идентифицированы как наиболее важные признаки для предсказания активности молекул. Такие выводы могут быть полезны на практике.
Кроме того, ансамблевые методы, включая случайные леса и повышение градиента, являются одними из наиболее широко используемых моделей машинного обучения без глубокого обучения. Несмотря на то, что глубокое обучение становится все более популярным, ансамбли по-прежнему очень актуальны из-за их выдающейся производительности и простоты реализации. В статье упоминается рост экстремального повышения градиента (XGBoost) как «новой королевы» в алгоритмах машинного обучения. Это подчеркивает важность древовидных моделей, особенно повышения градиента, в различных приложениях.
Таким образом, лекция на этой неделе обеспечит всестороннее понимание ансамблевых методов. Он будет охватывать различные типы ансамблевых техник и их применение.
7.2 Голосование большинством (L07: ансамблевые методы)
7.2 Голосование большинством (L07: ансамблевые методы)
В этом видео мы рассмотрим один из фундаментальных случаев модельных ансамблей, известный как голосование по большинству. На игрушечном примере мы рассмотрим преимущества мажоритарного голосования по сравнению с изолированным использованием одного классификатора.
Для начала давайте рассмотрим сценарий, в котором у нас есть проблема бинарной классификации. У нас есть набор данных, состоящий из нескольких наблюдений, каждое из которых связано с набором функций и соответствующей меткой класса. Наша цель — создать классификатор, который может точно предсказать метки классов для новых, невидимых экземпляров.
Чтобы продемонстрировать концепцию голосования большинством, мы начинаем с обучения трех отдельных классификаторов в нашем наборе данных. Каждый классификатор использует свой алгоритм или модель для прогнозирования. Для простоты предположим, что эти классификаторы являются деревьями решений.
После того, как мы обучили наши три классификатора дерева решений, теперь мы можем делать прогнозы для новых экземпляров. Однако вместо того, чтобы полагаться на прогноз одного классификатора, мы используем принцип голосования по большинству. При мажоритарном голосовании каждый классификатор в ансамбле отдает голос за свою прогнозируемую метку класса. Метка класса, получившая наибольшее количество голосов, считается окончательным прогнозом ансамбля.
Теперь давайте посмотрим, почему голосование большинством может быть более эффективным, чем использование одного классификатора. Рассмотрим сценарий, в котором каждый отдельный классификатор дерева решений имеет некоторую степень ошибки из-за собственного шума или изменчивости в наборе данных. Эти ошибки могут привести к неправильным прогнозам, снижая общую точность одного классификатора.
Однако, объединяя прогнозы нескольких классификаторов посредством голосования большинством, мы потенциально можем смягчить влияние отдельных ошибок. Даже если один или два классификатора дерева решений делают неверные прогнозы, процесс голосования по большинству может компенсировать эти ошибки. Метка класса, получившая большинство голосов, с большей вероятностью будет правильной, что приведет к повышению точности по сравнению с использованием одного классификатора.
Чтобы проиллюстрировать это, давайте представим ситуацию, когда два классификатора дерева решений предсказывают правильную метку класса, а один классификатор делает ошибочный прогноз. В этом случае правильная метка класса получит два голоса, тогда как ошибочный прогноз получит только один голос. В результате процесс голосования ансамбля правильно идентифицирует метку класса с наибольшим количеством голосов в качестве окончательного прогноза, отменяя неверный прогноз отдельного классификатора.
Этот пример демонстрирует силу ансамблевых методов, особенно голосования большинством, в повышении точности предсказания. Комбинируя прогнозы нескольких классификаторов, мы можем использовать сильные стороны каждого классификатора и минимизировать влияние их отдельных недостатков или ошибок.
В заключение, это видео подчеркивает важность голосования большинством как основной формы модельных ансамблей. На игрушечном примере мы увидели, как голосование по большинству может превзойти использование одного классификатора, особенно когда отдельные классификаторы демонстрируют ошибки или изменчивость. Методы ансамбля, такие как голосование большинством, предлагают мощный подход к повышению точности прогнозирования и широко используются в практических приложениях машинного обучения.
7.3 Бэггинг (L07: Методы ансамбля)
7.3 Бэггинг (L07: Методы ансамбля)
После подробного обсуждения концепции мажоритарного голосования в предыдущем видео, в следующем видео мы углубимся в другой фундаментальный метод, известный как бэггинг, который означает агрегацию начальной загрузки. Термин «бэггинг» происходит от комбинации инициалов «B» и «ag G» и тесно связан с концепцией начальной загрузки. Этот метод был первоначально предложен Лео Брейманом, видным деятелем в области деревьев решений, в частности деревьев классификации и регрессии (CART). Мы рассмотрим вклад Бреймана более подробно в будущей лекции, посвященной случайным лесам.
Для начала наметим алгоритм бэггинга. Хотя на первый взгляд он может показаться сложным, на самом деле он довольно прост и состоит всего из шести строк кода или пяти, если исключить пустую строку. Алгоритм работает следующим образом: предположим, что у нас есть в общей сложности n выборок или раундов начальной загрузки. Для каждого раунда i мы берем бутстреп-выборку размера m из обучающей выборки. Здесь m представляет размер обучающей выборки. Важно отметить, что использование одиночных букв для переменных может показаться нетрадиционным, но оно было необходимо из-за ограничений, накладываемых выбором букв. В предыдущем видео мы использовали n для представления количества выборок начальной загрузки, что соответствует количеству классификаторов в групповых классификаторах голосования, которые мы обсуждали.
Для каждого бутстрап-образца мы обучаем классификатор и применяем мажоритарное голосование. Этот процесс очень похож на классификатор ансамблевого голосования, который мы рассмотрели ранее, с той лишь разницей, что вместо обучения каждого классификатора на всем обучающем наборе мы обучаем каждый базовый классификатор на выборке начальной загрузки, извлеченной из обучающего набора.
Прежде чем мы продолжим, давайте кратко повторим концепцию начальной загрузки. Рассмотрим набор данных размером m. Каждая выборка начальной загрузки, полученная из этого набора данных, также будет иметь размер m на основе вышеупомянутого алгоритма. Выборка начальной загрузки включает случайный выбор точек данных из набора данных с заменой. Например, если у нас есть десять точек данных, помеченных от одного до десяти, и мы выполняем выборку с заменой, некоторые точки данных будут дублироваться в наборе данных начальной загрузки. Это дублирование происходит потому, что каждая позиция извлекается из тренировочного набора независимо. Следовательно, некоторые точки данных могут появляться несколько раз, в то время как другие могут не появляться вообще, что приводит к тому, что мы называем выборками вне пакета (OOB). Эти выборки OOB представляют собой точки данных, которые не включены в выборку начальной загрузки для определенного раунда.
Чтобы лучше понять вероятность, связанную с невыбором определенного элемента в бутстрап-выборке, давайте рассмотрим вероятность того, что не будет выбрана конкретная точка данных для одной позиции. Вероятность выбора конкретной точки данных для данной позиции равна 1/m, так как в обучающей выборке имеется m примеров. Следовательно, вероятность того, что эта конкретная точка данных не будет выбрана, составляет 1–1/м. Поскольку у нас есть m вариантов, вероятность не выбрать конкретный пример во всей начальной выборке составляет (1 - 1/m)^n. Когда m станет достаточно большим, примерно 36,8% точек не будут включены в бутстреп-выборку. Следовательно, 63,2% точек данных будут уникальными в бутстраповой выборке, а остальные точки будут дублироваться.
Визуализация бутстреп-семплирования в рамках процедуры бэггинга может помочь в дальнейшем понимании концепции. Проводится несколько раундов бутстрап-выборки, каждый из которых приводит к новой бутстрап-выборке. Затем классификатор обучается независимо на каждом образце начальной загрузки. Этот процесс способствует параллелизму модели, поскольку нет зависимости между раундами начальной загрузки. Следовательно, каждый раунд может выполняться одновременно, что расширяет возможности параллельной обработки.
Блок-схема классификатора мешков дает обзор необходимых шагов. Подобно классификатору голосования, классификатор мешков начинается с обучающего набора. Однако при бэггинге мы повторно используем обучающий набор для создания нескольких образцов начальной загрузки. Каждая начальная выборка используется для обучения классификатора, в результате чего получается m классификаторов. Каждый классификатор генерирует прогнозы, а окончательный прогноз определяется большинством голосов. Этот подход помогает уменьшить переоснащение и улучшить стабильность и обобщение модели.
Бэггинг имеет ряд преимуществ:
Несмотря на свои преимущества, бэггинг имеет и некоторые ограничения:
В этом разделе мы углубимся в концепции, обсуждавшиеся ранее. Когда прогнозы модели демонстрируют значительные вариации, это указывает на высокую дисперсию. Например, давайте рассмотрим сложное дерево решений для оранжевого случая. Прогнозы этой модели будут значительно отличаться от прогнозов синей модели. Точно так же зеленый случай будет иметь свой собственный набор различных прогнозов. Эти различные прогнозы иллюстрируют концепцию высокой дисперсии.
Чтобы лучше понять влияние высокой дисперсии, давайте рассмотрим фактические деревья решений, соответствующие этим наборам данных. Несмотря на их вариации, случай с высокой дисперсией по-прежнему обеспечивает хороший средний прогноз. Важно отметить, что даже несмотря на то, что я явно не показал здесь средний прогноз, усреднение прогнозов трех моделей (модели один, два и три), подогнанных к разным обучающим наборам, приведет к прогнозу, близкому к истинной функции. . Напротив, модели с высоким смещением, как показано ранее, точны только в определенных местах, где линии пересекаются с истинной функцией. Во всех остальных случаях они работают плохо из-за высокой предвзятости.
Однако, используя модель с высокой дисперсией и усредняя прогнозы из нескольких моделей, мы все же можем получать точные прогнозы. Эта концепция лежит в основе бэггинга, который включает в себя использование различных обучающих наборов, созданных с помощью бутстрап-выборки. При бэггинге каждая начальная выборка используется для соответствия дереву решений, что приводит к множеству моделей с высокой дисперсией. Затем эти модели усредняются с помощью голосования по ансамблю либо с учетом меток классов в задачах классификации, либо с учетом результатов регрессии в задачах регрессии. Этот процесс усреднения помогает получать высокоточные прогнозы за счет уменьшения дисперсии.
Усредняя предсказания трех деревьев решений, подогнанных к разным обучающим наборам, мы получили бы среднее предсказание, близкое к истинной функции. Это усреднение похоже на концепцию бэггинга, где каждый обучающий набор действует как набор данных начальной загрузки. Во-вторых, важно отметить, что деревья решений не могут интерполировать значения. Они могут только прогнозировать целевые значения, которые существуют в обучающем наборе, или их средние значения. Таким образом, ступенчатая функция, показанная на рисунке, является аппроксимацией неусеченного дерева решений.
В заключение можно сказать, что бэггинг — это эффективный метод уменьшения дисперсии путем усреднения прогнозов моделей с высокой дисперсией. Используя распараллеливание, пакетирование может ускорить подбор модели за счет использования нескольких ЦП. Однако на некоторых компьютерах с Windows могут возникнуть проблемы с многопроцессорностью в Python, что ограничивает использование нескольких заданий. Также стоит упомянуть, что классификаторы пакетов могут вычислять точность вне пакета, что включает использование точек данных, которые не включены в выборку начальной загрузки, для оценки производительности модели. Это обеспечивает полезную метрику для оценки способности модели к обобщению. В примере кода с использованием scikit-learn классификатор пакетов можно импортировать из подмодуля ансамбля.
Базовый оценщик, который в данном случае является деревом решений, инициализируется с максимальной глубиной, равной None, чтобы создать несокращенное дерево решений. Количество оценщиков определяет количество раундов начальной загрузки, а распараллеливание может быть достигнуто путем соответствующей установки параметра n_jobs. Кроме того, параметр oob_score позволяет вычислять нестандартную оценку. После обучения классификатора мешков можно оценить оценку вне мешка и точность тестового набора.
В целом, бэггинг предлагает эффективный подход к уменьшению высокой дисперсии и повышению точности прогнозов за счет объединения нескольких моделей с высокой дисперсией. Таким образом, бэггинг — это мощный ансамблевый метод, который объединяет несколько классификаторов, обученных на разных выборках начальной загрузки, для повышения точности прогнозирования и уменьшения дисперсии. Это особенно полезно при работе со сложными наборами данных и может повысить стабильность и обобщение модели. Однако он также имеет некоторые ограничения, в том числе снижение интерпретируемости и повышенную вычислительную сложность.
7.4 Бустирование и AdaBoost (L07: Методы ансамбля)
7.4 Бустирование и AdaBoost (L07: Методы ансамбля)
В предыдущем видео мы обсуждали концепцию моделей с высокой дисперсией и низким смещением, уделяя особое внимание необрезанным деревьям решений. Мы также узнали о методе под названием бэггинг, который помогает повысить производительность моделей с высокой дисперсией за счет уменьшения дисперсии за счет усреднения.
В этой лекции мы переключим внимание на бустинг, который работает в обратном направлении. Повышение включает использование моделей с высоким смещением и низкой дисперсией, таких как простые пни дерева решений, и их усиление для повышения общей производительности модели. В этом первом видео будет представлен обзор концепций бустинга и представлено бустинг в целом, а в следующем видео будет рассмотрен популярный тип бустинга, называемый градиентным бустингом.
Буст можно разделить на два основных типа: адаптивный буст (например, adaboost) и градиентный буст. Исторически сложилось так, что повышение градиента использовалось менее широко из-за его вычислительной сложности. Однако недавние достижения, такие как внедрение XGBoost в 2016 году, значительно улучшили производительность повышения градиента. В настоящее время появились еще лучшие варианты, такие как LightGBM, о которых мы поговорим в следующем видео. Хотя повышение градиента приобрело популярность, важно понимать общую процедуру повышения с помощью адаптивного повышения.
Процедура бустинга следует определенной схеме, которая отличается от процедуры бэггинга. Одним заметным отличием является наличие зависимостей между раундами. Процедура повышения включает в себя несколько классификаторов, обозначенных как классификатор один, классификатор два и т. д., вплоть до классификатора М. Первоначально мы начинаем с обычного набора обучающих данных и подбираем классификатор один. Основываясь на прогнозах первого классификатора, мы взвешиваем обучающие выборки, используя определенный метод взвешивания, который мы обсудим более подробно позже. Затем второй классификатор использует этот взвешенный обучающий набор данных, и процесс продолжается. Взвешивание зависит от предсказаний предыдущих классификаторов, что затрудняет распараллеливание повышения. В отличие от бэггинга, когда классификаторы могут обучаться одновременно, бустинг требует ожидания до тех пор, пока предыдущий классификатор не сделает прогнозы, прежде чем обновлять набор данных для следующего классификатора. Делая окончательные прогнозы, бустинг использует взвешенную комбинацию классификаторов, в отличие от голосования по ансамблю или усреднения, используемых при бэггинге. Взвешенная комбинация определяется на основе функции знака, которая присваивает веса предсказаниям каждого классификатора. Для двоичной классификации функция знака возвращает 1 для положительных результатов и -1 для отрицательных результатов. Это взвешенное предсказание приводит к окончательному предсказанию либо -1, либо 1. Процесс может быть расширен для обработки произвольного количества классов с использованием индикаторных функций.
Чтобы лучше понять общую процедуру бустинга, давайте опишем необходимые шаги. Во-первых, мы инициализируем весовой вектор с одинаковыми весами для каждого обучающего примера. Эти веса представляют важность каждого обучающего примера. Затем мы входим в цикл, который перебирает различные классификаторы или раунды процедуры повышения. В каждом раунде мы применяем слабого ученика, который является классификатором немного лучше, чем случайное угадывание, к взвешенным обучающим примерам. Мы можем присвоить более высокие веса конкретным примерам или использовать бутстреп-выборки со взвешенными вероятностями. После обучения слабого ученика мы увеличиваем вес неправильно классифицированных примеров, позволяя следующему классификатору сосредоточиться на этих неправильно классифицированных примерах. Этот цикл повторяется несколько раз, и, наконец, на обученных классификаторах проводится взвешенное большинство голосов для получения окончательных прогнозов.
Теперь давайте сосредоточимся на алгоритме adaboost, который тесно связан с общей процедурой повышения, описанной ранее. Adaboost похож на общую схему повышения, где классификаторы подбираются на взвешенных обучающих примерах. Алгоритм начинается с инициализации весов для каждой точки обучающих данных. Затем начинается основной цикл for, состоящий из раундов adaboost. В каждом раунде веса нормализуются, чтобы их сумма равнялась единице. Затем слабый ученик обучается на взвешенном обучающем наборе и вычисляются взвешенные ошибки предсказания. Ошибки прогнозирования взвешиваются по весам тренировочного набора и указывают на неправильные классификации. Ошибки прогнозирования затем используются для расчета вклада слабого ученика в окончательный прогноз. Вклад определяется точностью слабого учащегося, при этом более точные учащиеся имеют более высокий вклад. Затем вклад используется для обновления весов обучающих примеров. Веса неправильно классифицированных примеров увеличиваются, а веса правильно классифицированных примеров уменьшаются. Эта корректировка подчеркивает важность неправильно классифицированных примеров в последующих раундах.
После обновления весов процесс переходит к следующему раунду, где слабый ученик обучается на обновленном взвешенном тренировочном наборе. Этот итеративный процесс продолжается в течение заданного количества раундов или до тех пор, пока не будет выполнен определенный критерий. После того, как все раунды завершены, окончательный прогноз делается путем объединения прогнозов всех слабых учеников. Вес прогноза каждого слабого ученика определяется его вкладом в общую точность во время обучения.
Алгоритм adaboost эффективно объединяет прогнозы слабых учеников для создания сильной ансамблевой модели. Веса, присвоенные каждому прогнозу слабого ученика, отражают его эффективность в классификации обучающих примеров. Повторно корректируя веса и фокусируясь на неправильно классифицированных примерах, adaboost может со временем повысить точность модели.
Важно отметить, что adaboost чувствителен к выбросам и шуму в данных. Выбросы могут оказать существенное влияние на обновления веса, что может привести к переоснащению. Поэтому рекомендуется предварительная обработка данных для обработки выбросов и зашумленных выборок. Кроме того, adaboost может быть склонен к переобучению, если слабые ученики слишком сложны или если количество раундов слишком велико. Методы регуляризации, такие как ограничение глубины деревьев решений или использование ранней остановки, могут помочь смягчить переоснащение.
Если бы мы грубо набросали концепцию, это выглядело бы так: у нас есть стрелка на оси x, представляющая значение альфа. Значение альфа определяет важность каждого классификатора в окончательном прогнозе. Когда мы используем альфа-значение для взвешивания оценки и прогноза, мы обнаруживаем, что если классификатор имеет большую ошибку, альфа-значение будет относительно небольшим. Это означает, что классификатор с высокой ошибкой не так важен для окончательного прогноза. С другой стороны, классификаторы с небольшими ошибками будут иметь более высокий вес, потому что мы больше доверяем им при подсчете голосов большинства.
Мы используем альфа-значение двумя способами: во-первых, мы используем его для взвешивания оценки и прогноза, а во-вторых, мы используем его для обновления весов для следующего раунда. Если прогноз верен, вес, присвоенный этому обучающему примеру, будет небольшим. Это означает, что если мы делаем правильный прогноз, мы не уделяем этому обучающему примеру особого внимания в следующем раунде. Это считается простым примером. С другой стороны, если мы допустим ошибку, вес, присвоенный этому примеру, будет больше. Это означает, что мы уделяем больше внимания неправильно классифицированным примерам в следующем раунде. Чем меньше значение альфа, тем больший вес присваивается ошибочно классифицированным примерам.
Чтобы проиллюстрировать эту концепцию, давайте рассмотрим двумерный случай. У нас есть игрушечный пример с двумя функциями, x1 и x2. Мы подгоняем пень дерева решений, который является деревом решений только с одним расщеплением. Пень дерева решений правильно классифицирует некоторые точки, но допускает ошибки в других. В первом раунде AdaBoost мы присваиваем больший вес неправильно классифицированным примерам и меньший вес правильно классифицированным примерам. Затем мы подгоняем еще один пень дерева решений, сосредоточившись на неправильно классифицированных примерах из предыдущего раунда. Этот процесс продолжается, и каждый новый классификатор учится на ошибках предыдущего классификатора и уделяет больше внимания неправильно классифицированным примерам. Наконец, когда мы объединяем все классификаторы, используя голосование по большинству, мы можем получить классификатор, который правильно классифицирует все примеры.
AdaBoost может быть немного сложным для понимания, но есть ресурсы, которые могут помочь. Оригинальная статья об AdaBoost содержит подробное объяснение, но для более доступного введения рекомендуется использовать учебную статью Манвани. Прежде чем перейти к примерам кода, стоит упомянуть модификацию алгоритма AdaBoost для многоклассовой классификации под названием AdaBoost.M2 или SAMME. Он представляет собой небольшую модификацию исходного алгоритма для обработки нескольких классов. Существует также версия с реальными числами под названием SAMME.R. Если вам интересно, вы можете изучить эти варианты в соответствующих статьях.
В scikit-learn AdaBoost реализован как повышающий классификатор. Он использует пни дерева решений в качестве слабых классификаторов и корректирует веса обучающих примеров на основе результатов их классификации. Повышая эффективность этих слабых классификаторов, AdaBoost повышает общую производительность. Сравнивая точность необрезанного дерева решений и пня дерева решений в наборе данных радужной оболочки, AdaBoost с пнями дерева решений достигает более высокой точности. Процесс обучения включает в себя обновление весов выборки, поэтому нет возможности распараллеливания, как в бэггинге. AdaBoost в scikit-learn предоставляет эффективный способ повысить эффективность слабых классификаторов и добиться лучших результатов классификации.
Далее мы углубимся в повышение градиента, еще один популярный вариант повышения. Усиление градиента основано на концепциях AdaBoost, но содержит дополнительные улучшения.
Повышение градиента — популярный вариант алгоритма повышения, целью которого является дальнейшее повышение производительности слабых классификаторов путем итеративного улучшения их слабых сторон. Он основан на концепции градиентного спуска, которая обычно используется в задачах оптимизации. При повышении градиента слабые классификаторы последовательно обучаются и объединяются для создания сильного классификатора.
Основная идея повышения градиента заключается в итеративном обучении слабых классификаторов, а затем корректировке весов обучающих примеров на основе ошибок, допущенных ансамблем классификаторов. Эта корректировка выполняется путем вычисления градиентов функции потерь по отношению к предсказаниям ансамбля. Минимизируя функцию потерь, ансамбль постепенно улучшает свои характеристики.
Чтобы проиллюстрировать концепцию, давайте рассмотрим простой пример. Предположим, у нас есть проблема бинарной классификации, в которой мы хотим классифицировать точки данных как положительные или отрицательные. Мы начинаем с обучения исходного слабого классификатора, такого как пень дерева решений, на обучающих данных. Этот классификатор будет делать некоторые ошибки, и мы вычисляем ошибки или остатки, сравнивая его прогнозы с истинными метками обучающих примеров.
На следующей итерации мы обучаем новый слабый классификатор прогнозировать остатки предыдущего классификатора. Этот новый классификатор фокусируется на исправлении ошибок, допущенных предыдущим. Мы вычисляем остатки, вычитая предсказанные значения из истинных остатков. Опять же, этот новый классификатор будет делать некоторые ошибки, и мы вычисляем остатки.
Мы повторяем этот процесс, последовательно обучая новые слабые классификаторы предсказанию невязок ансамбля и обновляя невязки на основе ошибок, допущенных текущим ансамблем. Каждый слабый классификатор обучается минимизировать функцию потерь по отношению к текущим остаткам. Окончательный ансамбль получается путем объединения всех слабых классификаторов, при этом каждый классификатор вносит взвешенный голос в зависимости от его эффективности.
Веса слабых классификаторов определяются скоростью обучения, которая контролирует вклад каждого классификатора в окончательный прогноз. Меньшая скорость обучения приводит к более медленной сходимости, но может привести к лучшему обобщению. Более высокая скорость обучения может привести к более быстрой сходимости, но также может привести к переоснащению.
Повышение градиента оказалось мощным методом для широкого круга задач машинного обучения, включая проблемы регрессии, классификации и ранжирования. Он успешно применяется в различных областях, таких как компьютерное зрение, обработка естественного языка и биоинформатика.
На практике доступно несколько реализаций повышения градиента, включая XGBoost, LightGBM и CatBoost, которые предлагают эффективные и оптимизированные алгоритмы повышения градиента. Эти реализации предоставляют дополнительные функции, такие как распараллеливание, методы регуляризации и обработку пропущенных значений, для дальнейшего повышения производительности и гибкости моделей повышения градиента.
На этом введение в бустинг и обзор алгоритма adaboost завершены. В следующем видео мы более подробно рассмотрим повышение градиента, включая концепции градиентного спуска, функции потерь и конкретные алгоритмы, которые были разработаны для улучшения процесса повышения градиента.
7.5 Повышение градиента (L07: Методы ансамбля)
7.5 Повышение градиента (L07: Методы ансамбля)
Концепция повышения градиента представлена как современная версия повышения, в которой используются деревья решений и дифференцируемая функция потерь. Хотя повышение градиента похоже на AdaBoost, оно отличается тем, как подгоняются деревья решений. При повышении градиента используются более глубокие деревья, и обучающим примерам или классификаторам не присваиваются веса. Ключевой идеей повышения градиента является использование градиентов из функции потерь для улучшения модели, что приводит к повышению производительности на табличных наборах данных. Этот алгоритм приобрел популярность, особенно в соревнованиях по машинному обучению.
В контексте регрессии повышение градиента начинается с построения базового дерева. Например, в задаче прогнозирования цен на жилье исходное базовое дерево состоит только из корневого узла. Цель прогнозируется на основе среднего значения в этом узле, которое в данном случае является средней ценой четырех домов в обучающей выборке. Затем следующее дерево строится на основе ошибки предсказания предыдущего дерева. Эта предсказанная ошибка используется для подбора нового дерева. Деревья из первого и второго шагов объединяются, и этот процесс повторяется несколько раз, при этом каждое последующее дерево подгоняется по ошибкам предыдущих деревьев. Комбинируя простое дерево решений с новым, основанным на остатках, модель может делать более точные и точные прогнозы.
Обсуждается концепция повышения градиента как аддитивной модели, в которой прогнозы всех деревьев последовательно объединяются путем их суммирования. Также вводится скорость обучения или размер шага, который определяет вес или вклад каждого дерева в окончательный прогноз. Повышение градиента выполняется путем повторения процесса подбора деревьев на ошибках предыдущего прогноза, постепенного построения модели с небольшим размером шага для предотвращения переобучения. Этот процесс продолжается до тех пор, пока не будет завершено заранее определенное количество деревьев, основанное на настройках гиперпараметров.
Докладчик объясняет алгоритм повышения градиента, который используется как для задач регрессии, так и для задач классификации. Алгоритм включает инициализацию модели как корневого узла, а затем подгонку нескольких деревьев и создание конечных узлов. Прогнозы делаются в каждом узле и вычисляются потери. Алгоритм можно повторять до тех пор, пока не будет достигнуто желаемое количество деревьев с общей целью минимизировать потери.
Чтобы вычислить текущую модель, предыдущая модель и новый шаг прогнозирования объединяются, взвешиваются по скорости обучения или размеру шага, чтобы определить обновленную модель. Этот процесс повторяется до тех пор, пока не будет достигнуто желаемое количество деревьев, обозначенное как T. Вычисляются псевдоостатки, за которыми следует вычисление производной потери на основе истинных меток и прогнозов модели предыдущего раунда. Затем вычисляются остатки и определяется прогнозируемое значение, которое минимизирует потери в конкретном узле. Модель соответственно обновляется, и этот процесс повторяется до тех пор, пока не будут достигнуты T моделей. Хотя для классификации могут использоваться дифференцируемые функции потерь, такие как отрицательная логарифмическая потеря правдоподобия, основное внимание в этом классе уделяется сумме квадратов ошибок или среднеквадратичных ошибок.
В видео обсуждаются этапы повышения градиента и его практическое применение. Первый шаг включает в себя минимизацию потерь для всех обучающих примеров в заданном узле путем нахождения предсказания, которое минимизирует выражение. На втором этапе для T деревьев используется цикл, и прогноз для каждого конечного узла вычисляется путем усреднения примеров в этом узле. Среднее предсказание объединяется с предыдущей моделью, а предсказания для каждого дерева складываются. Скорость обучения используется для уменьшения псевдоневязок и предотвращения переобучения. Видео также кратко затрагивает другие интересные аспекты градиентного бустинга, используемые на практике.
Видео подчеркивает потенциальные недостатки бустинга как последовательного алгоритма, поскольку он не может полностью использовать несколько процессов или вычислительных узлов. Однако существует реализация под названием xgBoost, которая включает в себя несколько приемов, позволяющих сделать процесс повышения градиента более эффективным. Фактически, среди 29 решений, выигравших испытания, опубликованных на Kaggle с 2015 по 2017 год, 17 из них использовали xgBoost. Восемь из этих решений полагались исключительно на xgBoost для обучения модели, в то время как другие сочетали xgBoost с нейронными сетями или использовали стекирование, популярный метод ансамблевого голосования. В видео представлены две таблицы из статьи, в которых сравниваются различные реализации бустинга, демонстрирующие уникальные особенности xgBoost, способствующие его эффективности.
В видео обсуждается Extra Boost, вариант повышения градиента, который предлагает несколько преимуществ, таких как приблизительное глобальное обучение вне ядра, осведомленность о разреженности и параллелизм. Extra Boost включает в себя методы аппроксимации, чтобы найти наилучшее разделение, используя сводную статистику распределенных подмножеств данных. В видео сравнивается производительность Extra Boost с другими реализациями повышения градиента с использованием точного жадного метода и демонстрируется, что Extra Boost обеспечивает производительность, идентичную одной реализации, но со значительно меньшим временем на дерево, что делает его более привлекательным для настройки гиперпараметров.
Кроме того, в видео объясняются различные улучшения, предлагаемые Extra Boost, такие как методы регуляризации, обработка отсутствующих функций посредством импутации и кэширование. Эти улучшения помогают уменьшить переоснащение и повысить общую производительность Extra Boost. Кроме того, Extra Boost использует подвыборку на основе столбцов и строк, которая случайным образом выбирает подмножества функций и обучающих примеров, повышая как вычислительную эффективность, так и уменьшая переоснащение. Видео предлагает обратиться к статье о Extra Boost для более подробного объяснения его методов.
В видео представлен обзор Extra Boost, новой реализации машин для повышения градиента. Extra Boost направлен на уменьшение переобучения и повышение точности прогнозов. В видео обсуждаются различные методы поиска разбиений, в том числе точный жадный алгоритм и поиск разбиений на основе гистограммы. Последний подход включает объединение непрерывной функции в дискретную гистограмму, что может повысить скорость обучения и уменьшить использование памяти. Видео также сравнивает Extra Boost с Light GBM, еще одной реализацией, которая еще быстрее и точнее. Light GBM использует разделение на основе гистограммы и предлагает меньшее использование памяти и более высокую точность предсказания по сравнению с Extra Boost.
В видео обсуждается реализация классификаторов повышения градиента в scikit-learn и представлен новый классификатор повышения градиента, который был добавлен в последнюю версию библиотеки. Новый классификатор использует разделение на основе гистограмм, вдохновленное LightGBM, что делает его быстрее, чем предыдущий классификатор. В видео предлагается использовать оба классификатора повышения градиента и сравнивать их с XGBoost, чтобы определить, какой из них работает лучше всего. Примеры кода предназначены для использования в качестве шаблонов для классных проектов или общего использования, включая реализацию классификатора повышения градиента в scikit-learn и использование нового классификатора повышения градиента гистограммы.
Докладчик обсуждает повышение градиента с помощью библиотек XGBoost и LightGBM. Библиотека XGBoost похожа, но немного сложнее, чем scikit-learn. Это требует преобразования массивов NumPy в формат DMatrix, и вместо использования метода подгонки для обучения модели используется метод обучения. Прогнозы можно сделать, вызвав метод прогнозирования, чтобы получить вероятности членства в классе. С другой стороны, библиотека Microsoft LightGBM имеет API, похожий на scikit-learn. Перед установкой машины повышения градиента необходимо установить гиперпараметры, а метод оценки можно использовать для вычисления точности. В представленном случае модель демонстрирует 100% точность обучения без настройки гиперпараметров.
Видео завершается подчеркиванием эффективности методов повышения градиента, особенно за счет использования таких библиотек, как XGBoost и LightGBM. Эти библиотеки предоставляют мощные инструменты для реализации моделей повышения градиента и предлагают различные оптимизации для повышения производительности и точности.
Кроме того, докладчик признает важность настройки гиперпараметров при повышении градиента. Различные гиперпараметры, такие как скорость обучения, количество деревьев и глубина деревьев, могут существенно повлиять на производительность модели. Поэтому рекомендуется поэкспериментировать с различными конфигурациями гиперпараметров, чтобы найти оптимальные настройки для конкретной задачи.
Для дальнейшего изучения повышения градиента в видео предлагается обратиться к исследовательским работам и документации по XGBoost, LightGBM и другим соответствующим реализациям. Эти ресурсы содержат подробные объяснения алгоритмов, методов и расширенных функций повышения градиента.
Таким образом, в видео представлен всесторонний обзор повышения градиента, его концепций и практических реализаций с использованием таких библиотек, как XGBoost и LightGBM. В нем подчеркиваются преимущества повышения градиента, такие как его способность обрабатывать сложные наборы табличных данных, его эффективность в соревнованиях и его потенциал для повышения точности прогнозирования. Понимая принципы и методы повышения градиента, специалисты-практики могут использовать этот мощный алгоритм для решения различных задач регрессии и классификации.
7.6 Случайные леса (L07: ансамблевые методы)
7.6 Случайные леса (L07: ансамблевые методы)
Большой! Наконец-то мы добрались до последней части лекции 5, которая оказалась самой интересной: конвейеры священного обучения. Священные конвейеры обучения — это объекты или классы, которые объединяют различные этапы обработки данных и прогнозирования, что делает их чрезвычайно полезными в реальных приложениях. Чтобы помочь вам понять, как работают конвейеры, давайте взглянем на блок-схему. Я не буду сейчас углубляться во все тонкости, но мы вернемся к этому вскоре после того, как я приведу пример конвейера.
По сути, конвейер можно рассматривать как API оценки и преобразователя. Подобно оценщику, конвейер имеет метод подбора, который можно использовать на обучающем наборе. Внутри выполняются несколько шагов подгонки и преобразования, за которыми следует шаг окончательной подгонки. В зависимости от компонентов, включенных в конвейер, вы можете определить последовательность операций, таких как масштабирование данных (например, стандартизация или масштабирование минимум-максимум) или уменьшение размерности с последующим обучением алгоритма обучения. Затем конвейер возвращает прогностическую модель, которую можно использовать в тестовом наборе.
На этапе прогнозирования, когда вы вызываете метод прогнозирования для тестового набора, конвейер внутри использует преобразование для применения того же масштабирования, которое было выполнено для обучающего набора. Он также применяет последний шаг прогнозирования, например, возвращает метки классов в случае классификатора. Давайте рассмотрим простой пример кода конвейера, чтобы проиллюстрировать эту концепцию.
Здесь я создаю конвейер, используя функцию make_pipeline из подмодуля scikit-learn.dot.pipeline от Holy Learn. Хотя существуют разные способы создания пайплайнов, этот метод достаточно удобен. В этом примере я создаю простой конвейер, состоящий из классификатора и стандартного масштабатора. Стандартный масштабатор, как обсуждалось в предыдущем видео, стандартизирует данные, чтобы иметь нулевое среднее значение и единичную дисперсию. После создания конвейера мы можем использовать метод подгонки для обучения конвейера на обучающих данных. Затем мы можем использовать метод прогнозирования, чтобы делать прогнозы на тестовом наборе.
Теперь давайте углубимся в то, как метод подгонки работает в конвейере. Когда вызывается подгонка, сначала применяется стандартный скейлер. Он изучает среднее значение и стандартное отклонение из обучающих данных и использует их для масштабирования данных. Этот процесс включает в себя этап подгонки и преобразования, когда стандартный модуль масштабирования вычисляет масштабированные данные и передает их на следующий этап. В этом случае следующим шагом является классификатор K ближайших соседей. Классификатор K ближайших соседей получает стандартизированные данные, эффективно объединяя эти четыре шага в один. При вызове pipe.fit все эти шаги выполняются автоматически, что избавляет нас от необходимости выполнять их по отдельности.
На этапе прогнозирования происходит тот же процесс, за исключением того, что нет шага подгонки. Вместо этого конвейер повторно использует параметры обучающего набора для масштабирования тестовых данных, обеспечивая согласованность. Затем он передает масштабированные тестовые данные классификатору для прогнозирования.
Чтобы лучше представить себе этот процесс, давайте вернемся к блок-схеме. Как пользователь, вам нужно использовать только методы подгонки и прогнозирования. При вызове fit конвейер автоматически вызывает шаг преобразования. Важно отметить, что в конвейерах принято использовать последний шаг в качестве классификатора. Только последний шаг вызывает подгонку, в то время как все предыдущие шаги вызывают подгонку и преобразование. Следовательно, конвейер может иметь несколько преобразователей, таких как стандартный масштабатор или даже методы уменьшения размерности, такие как анализ основных компонентов (PCA). Однако он может иметь только один классификатор в качестве последнего шага. Такая конструкция обеспечивает совместимость и функциональность трубопровода.
Чтобы проиллюстрировать конвейер в действии, давайте рассмотрим простой сценарий выбора модели с использованием метода удержания. Обратите внимание, что это всего лишь базовая демонстрация, и мы рассмотрим более продвинутые методы выбора модели, такие как перекрестная проверка K-кратности, в следующих лекциях.
Метод удержания включает в себя разделение данных на два подмножества: обучающий набор и набор проверки. Учебный набор используется для обучения конвейера, а проверочный набор используется для оценки его производительности и выбора лучшей модели.
Вот пример того, как вы можете реализовать метод удержания с конвейером:
Далее мы создаем конвейер с помощью make_pipeline и выполняем нужные шаги. В этом случае мы включаем StandardScaler для стандартизации данных и KNeighborsClassifier с n_neighbors=3 в качестве классификатора.
Мы обучаем конвейер, вызывая метод подгонки для обучающих данных (X_train и y_train).
После обучения мы используем конвейер для прогнозирования проверочного набора (X_val), вызывая метод прогнозирования.
Наконец, мы оцениваем точность конвейера, сравнивая предсказанные метки (y_pred) с истинными метками (y_val) с помощью функции precision_score.
Это базовый пример использования конвейера с методом удержания для выбора модели. Имейте в виду, что существуют более продвинутые методы, такие как перекрестная проверка, которые могут обеспечить более надежную оценку производительности конвейера.
7.7 Стекирование (L07: ансамблевые методы)
7.7 Стекирование (L07: ансамблевые методы)
Да, это была долгая, долгая седьмая лекция. И, наконец, мы подошли к последнему видео, чтобы поговорить о стекировании.
На протяжении этой лекции мы рассмотрели много вопросов. Мы обсудили голосование по большинству и бэггинг, где мы подогнали деревья решений к образцам начальной загрузки. Мы также рассмотрели бустинг, когда мы подбираем глубоких учеников на основе ошибок или ошибок предыдущих учеников, а также остаточные значения и повышение градиента. Кроме того, мы изучили случайные леса, которые повышают производительность по сравнению с обычным пакетированием за счет использования случайных подмножеств функций в каждом узле. И теперь мы, наконец, поговорим о стекинге.
Стекирование похоже на голосование большинством, но с метаклассификатором, объединяющим прогнозы других классификаторов, а не просто голосование большинством. Давайте углубимся в детали укладки.
Прежде чем мы продолжим, позвольте мне напомнить вам тему этого видео: укладка. Прошу прощения за ненужный слайд, но давайте сосредоточимся на основах алгоритма стекирования, предложенного Дэвидом Х. Вулпертом в его статье под названием «Обобщение с накоплением», опубликованной в 1992 году. Хотя это старая статья, обозначения, использованные в более поздней книге I Я ссылаюсь, чтобы было легче понять. Итак, начнем с этой базовой версии стекирования.
В этом алгоритме мы определяем вход и выход, что создает проблему. Мы работаем с обучающим набором данных размера «n». Каждый вектор признаков, обозначенный как «x_i», является «m»-мерным вектором. Точно так же метки классов, соответствующие обучающим примерам, обозначаются как «y_i». Результатом этого алгоритма является классификатор ансамбля, который мы будем называть вторым классификатором.
Теперь давайте сосредоточимся на шагах, связанных с укладкой. Первый шаг — изучить классификаторы первого уровня. Мы используем цикл от единицы до «t», чтобы соответствовать этим классификаторам. Итак, у нас есть набор классификаторов, обозначенных от «h_1» до «h_t», которые обучаются на входных данных «X» и метках классов «Y».
Переходя ко второму шагу, мы создаем новые наборы данных из обучающего набора. Для каждого обучающего примера «x_i» мы создаем новый набор данных, содержащий измененный вектор признаков «x_i prime». Модифицированный вектор признаков «x_i prime» содержит предсказания классификаторов первого уровня. Эти прогнозы могут быть метками классов или даже вероятностями членства в классе. Используя эти прогнозы, мы можем провести голосование большинством, аналогично тому, что мы обсуждали ранее. Однако мы не останавливаемся на достигнутом; переходим к третьему шагу.
На третьем этапе вместо проведения голосования большинством мы изучаем классификатор второго уровня на основе прогнозов классификаторов первого уровня. «x_i prime» представляет собой модифицированную матрицу дизайна, где каждый столбец содержит прогнозы от классификаторов «h_1» до «h_t». Мы можем подобрать классификатор для этих прогнозов, принимая во внимание либо метки класса, либо вероятности членства в классе. Этот классификатор второго уровня будет обучен этим прогнозам.
Одним из недостатков базовой процедуры суммирования является ее подверженность переоснащению. Если какой-либо из классификаторов первого уровня превосходит обучающий набор, это может негативно повлиять на производительность метаклассификатора и привести к общей переобученности системы. Чтобы решить эту проблему, мы можем улучшить процедуру стекирования, включив перекрестную проверку.
Перекрестная проверка — это метод, при котором мы разбиваем набор данных на несколько подмножеств и обучаем модель на различных комбинациях этих подмножеств. Это помогает уменьшить переоснащение и получить более надежную оценку производительности. Одним из часто используемых вариантов является k-кратная перекрестная проверка, когда набор данных разбивается на «k» подмножеств или сгибов. Мы обучаем модель на сгибах «k-1» и оцениваем ее производительность на оставшихся сгибах. Этот процесс повторяется «k» раз, каждый раз используя разные складки в качестве проверочного набора. Затем результаты производительности каждой кратности можно усреднить, чтобы получить более надежную оценку производительности модели.
В контексте наложения мы можем использовать перекрестную проверку для улучшения обучения классификаторов первого уровня. Вместо того, чтобы тренировать их на всем обучающем наборе, мы делим данные на k сгибов. Для каждой складки мы обучаем классификаторы первого уровня оставшимся «k-1» сгибам и используем их для прогнозирования оставшейся складки. Этот процесс повторяется для каждой складки, в результате чего получаются прогнозы для всей обучающей выборки.
Получив прогнозы от классификаторов первого уровня для всего обучающего набора, мы можем перейти к третьему шагу алгоритма суммирования, где мы обучаем классификатор второго уровня на этих прогнозах. Включая перекрестную проверку, мы гарантируем, что классификатор второго уровня обучается на разнообразных и надежных прогнозах классификаторов первого уровня, снижая риск переобучения.
После обучения классификатора второго уровня мы можем использовать его для прогнозирования новых, невидимых данных. Прогнозы обычно получаются путем подачи входных данных через классификаторы первого уровня для получения их прогнозов, а затем использования этих прогнозов в качестве входных данных для классификатора второго уровня. Выход классификатора второго уровня представляет собой окончательный прогноз ансамбля суммирования.
Стекирование — это мощный метод ансамблевого обучения, который использует сильные стороны нескольких классификаторов для повышения общей производительности. Комбинируя прогнозы нескольких классификаторов, суммирование может охватывать различные аспекты данных и делать более точные прогнозы. Это гибкая и универсальная техника, которую можно адаптировать к различным предметным областям и типам классификаторов.
В заключение, суммирование — это метод обучения ансамбля, который выходит за рамки простого голосования большинством. Он объединяет прогнозы нескольких классификаторов с помощью метаклассификатора второго уровня, что позволяет принимать более сложные решения. Включив перекрестную проверку, мы можем повысить надежность и способность к обобщению алгоритма суммирования. Стекирование — ценный инструмент машинного обучения, который широко используется в различных приложениях для повышения эффективности прогнозирования.
8.1 Введение в переоснащение и недооснащение (L08: Оценка модели, часть 1)
8.1 Введение в переоснащение и недооснащение (L08: Оценка модели, часть 1)
Всем добрый день! Надеюсь, у вас все хорошо. У меня есть несколько интересных новостей, которыми я хочу поделиться с вами сегодня, так что давайте начнем прямо сейчас.
Прежде всего, я закончил оценку ваших проектных предложений и должен сказать, что я действительно в восторге от идей и планов, которые я увидел. Очевидно, что каждый из вас тщательно продумывал свои проекты и имеет четкое представление о предстоящих неделях, пока в середине декабря не будут представлены презентации и отчеты по проектам. Я искренне впечатлен уровнем детализации и продуманности ваших предложений.
Однако, если кто-то из вас чувствует потребность в дополнительных отзывах или разъяснениях, или если вам нужны рекомендации по изучению дополнительных методов, пожалуйста, не стесняйтесь обращаться ко мне. Я буду более чем счастлив оказать вам дальнейшую помощь и поддержку любым возможным способом. Просто отправьте мне электронное письмо или запланируйте встречу, и я буду рядом, чтобы помочь.
Переходим к другим хорошим новостям: мы успешно завершили лекцию по ансамблевым методам, а это значит, что пришло время приступить к новой интересной теме. В следующей серии лекций мы сосредоточимся на оценке модели. В отличие от предыдущих лекций, где мы представили различные классификаторы и алгоритмы машинного обучения, на этот раз мы рассмотрим, как объективно оценить производительность этих алгоритмов.
В этой новой серии мы рассмотрим ряд тем. Мы начнем с понимания концепций недообучения и переобучения и того, как они связаны со смещением и разложением дисперсии функции потерь. Затем мы углубимся в методы перекрестной проверки, которые позволяют нам эффективно сравнивать модели. Кроме того, мы обсудим методы сравнения различных алгоритмов машинного обучения, чтобы определить их производительность на конкретных наборах данных. Важно различать выбор модели и выбор алгоритма, и мы рассмотрим это различие более подробно.
Без лишних слов давайте начнем с введения в оценку модели и углубимся в мир переобучения и недообучения. В этой лекции (лекции восьмой) мы обсудим декомпозицию смещения и дисперсии и ее связь с переоснащением и недообучением. Мы проанализируем декомпозицию смещения и дисперсии как потерь квадрата ошибки (относящихся к регрессии), так и потерь 01 (относящихся к классификации), чтобы получить полное представление об этих концепциях. Кроме того, мы коснемся различных типов погрешностей в машинном обучении, выходящих за рамки статистической погрешности, охватываемой декомпозицией.
Прежде чем мы углубимся в лекционный материал, давайте сделаем шаг назад и кратко подытожим, на каком этапе курса мы находимся. Мы рассмотрели введение, вычислительные аспекты, такие как Python, NumPy и scikit-learn, а также методы на основе дерева. Мы также обсудили актуальность древовидных методов и популярность ансамблевых методов, в частности бустинга и случайных лесов, в отрасли. Теперь, сосредоточив внимание на оценке модели, мы рассмотрим различные подтемы, включая доверительные интервалы, перекрестную проверку, выбор модели, выбор алгоритма и показатели производительности. В конце мы коснемся уменьшения размерности и обучения без учителя.
Хочу вас заверить, что эта лекция будет короче предыдущей по ансамблевым методам, так как она относительно лаконична. Тем не менее, он охватывает важные концепции, которые помогут нам лучше понять оценку модели. Итак, давайте углубимся в шесть подтем, составляющих восьмую лекцию: переоснащение, недообучение, декомпозиция смещения и дисперсии, взаимосвязь с переоснащением и недообучением, декомпозиция смещения и дисперсии потери 01, а также обзор различных типов смещений в машинном обучении.
На протяжении всей этой лекции я призываю вас делать паузы и размышлять над вопросами, которые я задаю, помимо викторин. Всегда полезно сделать паузу и сформулировать свои собственные мысли, прежде чем рассматривать мою точку зрения на этот вопрос. Работая с материалом таким образом, вы улучшите свой учебный опыт.
Переобучение может быть вызвано тем, что модели слишком сложны и имеют слишком много параметров по сравнению с объемом доступных обучающих данных. Это приводит к тому, что модель соответствует шуму в обучающих данных, а не истинным базовым шаблонам. С другой стороны, недообучение происходит, когда модель недостаточно сложна, чтобы фиксировать закономерности в данных.
Смещение и дисперсия могут быть математически разложены. Ожидаемый квадрат ошибки модели можно разложить на квадрат смещения, дисперсию и неустранимую ошибку. Квадрат смещения измеряет среднюю разницу между предсказаниями модели и истинными значениями. Дисперсия измеряет изменчивость прогнозов модели для заданных входных данных. Неустранимая ошибка представляет собой присущий данным шум, который не может быть уменьшен ни одной моделью.
С другой стороны, недостаточное соответствие связано с высоким смещением и низкой дисперсией. Модель слишком проста и не может фиксировать базовые закономерности в данных, что приводит к низкой производительности как на обучающих, так и на тестовых данных.
Разложение смещения-дисперсии потери 01 похоже на разложение квадрата ошибки ошибки, но включает более сложную математику. Квадрат смещения измеряет ожидаемую разницу в скорости ошибочной классификации между предсказаниями модели и истинными метками. Дисперсия измеряет изменчивость скорости ошибочной классификации для данного входа.
Понимание этих различных типов предубеждений имеет решающее значение для построения справедливых и надежных моделей машинного обучения.
На этом основные темы, затронутые в восьмой лекции, заканчиваются. Как видите, переоснащение, недооснащение, смещение и дисперсия — это взаимосвязанные понятия, которые играют решающую роль в оценке модели. Важно найти баланс между сложностью и обобщаемостью, чтобы избежать переобучения или недообучения ваших моделей. Кроме того, знание различных типов предубеждений может помочь решить вопросы справедливости и этики в машинном обучении.
8.2 Интуиция, стоящая за предвзятостью и дисперсией (L08: Оценка модели, часть 1)
8.2 Интуиция, стоящая за предвзятостью и дисперсией (L08: Оценка модели, часть 1)
Всем привет! Надеюсь у тебя все хорошо. У меня есть несколько интересных новостей, которыми я хочу поделиться со всеми вами. Во-первых, я выполнил задачу по оценке ваших проектных предложений. Позвольте мне выразить свое восхищение чтением всех ваших блестящих идей и планов на оставшуюся часть семестра. Действительно впечатляет то, что у каждого из вас есть четко определенная дорожная карта на предстоящие недели, ведущая к презентациям и отчетам по проекту.
Если кто-то из вас чувствует необходимость в дополнительной обратной связи или требует разъяснений по какому-либо аспекту, не стесняйтесь обращаться ко мне по электронной почте или любым другим способом. Я более чем счастлив предоставить вам дополнительные рекомендации и указатели на дополнительные методы, которые могут иметь отношение к вашим проектам.
Теперь давайте перейдем к следующей хорошей новости. Мы успешно завершили лекцию по ансамблевым методам, и пришло время погрузиться в новую интересную тему. В предстоящей серии лекций мы рассмотрим тему оценки моделей. В отличие от предыдущих лекций, где мы представили различные классификаторы и алгоритмы машинного обучения, на этот раз мы сосредоточимся на справедливой оценке этих алгоритмов.
Лекции по оценке моделей будут охватывать несколько аспектов. Мы начнем с понимания концепций недообучения и переобучения и их связи со смещением и декомпозицией дисперсии в функции потерь. Затем мы рассмотрим методы перекрестной проверки, которые позволяют нам эффективно сравнивать модели. Позже мы обсудим методы сравнения различных алгоритмов машинного обучения и их производительность на конкретных наборах данных.
Важно отметить, что выбор модели, который включает в себя выбор подходящего алгоритма, также будет обсуждаться более подробно. Мы рассмотрим, чем она отличается от оценки модели. Итак, давайте начнем наше путешествие с введения в оценку модели и продолжим наращивать наши знания оттуда.
Прежде чем мы углубимся в новую тему, давайте подведем итоги нашего прогресса в этом курсе. Мы начали с введения и рассмотрели важные вычислительные аспекты, такие как Python, NumPy и scikit-learn. Мы также изучили методы на основе деревьев, что вызвало интересные дискуссии об их актуальности в отрасли.
Теперь, когда мы приступаем к этапу оценки модели, мы рассмотрим несколько подтем, связанных с недообучением и переоснащением. В этой конкретной лекции (Лекция восьмая) мы сосредоточимся на декомпозиции смещения и дисперсии и ее связи с переоснащением и недообучением. Мы рассмотрим, как компоненты смещения и дисперсии влияют на эффективность обобщения модели.
Кроме того, мы изучим декомпозицию смещения и дисперсии потерь 0-1, что более актуально для задач классификации. Этот анализ даст нам более глубокое понимание переобучения и недообучения в контексте задач классификации.
Чтобы завершить эту лекцию, мы кратко коснемся различных типов предубеждений в машинном обучении, помимо статистической предвзятости, обсуждавшейся ранее.
Теперь давайте переключим наше внимание на основные концепции переобучения и недообучения. В машинном обучении наша конечная цель — разработать модели (регрессионные или классификационные), демонстрирующие хорошие характеристики обобщения. Это означает, что модели должны хорошо работать с невидимыми данными, которые обычно поступают из тестового набора. Хотя мы также рассматриваем производительность на тестовом наборе, она служит оценкой производительности обобщения невидимых данных.
При отсутствии подгонки или обучения модели мы ожидаем, что ошибка обучения будет аналогична ошибке теста. Однако, когда мы подгоняем модель к тренировочному набору, мы часто наблюдаем, что ошибка обучения ниже, чем ошибка теста. Это результат переобучения, когда модель слишком тесно адаптируется к обучающим данным, включая шум, что приводит к оптимистичной оценке производительности.
И наоборот, недообучение происходит, когда модель не может уловить основные закономерности в данных, что приводит к высоким ошибкам обучения и тестирования. В данном случае модели не хватает.
достаточная сложность, чтобы представить истинную связь между функциями и целевой переменной.
Чтобы лучше понять переоснащение и недооснащение, давайте рассмотрим компромисс между смещением и дисперсией. Смещение относится к ошибке, вызванной аппроксимацией реальной проблемы упрощенной моделью. Модель с высоким смещением имеет тенденцию чрезмерно упрощать основные закономерности в данных и может привести к недообучению. С другой стороны, дисперсия относится к ошибке, вносимой чувствительностью модели к колебаниям обучающих данных. Модель с высокой дисперсией улавливает шум и случайные вариации обучающих данных, что приводит к переоснащению.
Компромисс между смещением и дисперсией можно проиллюстрировать, разложив ожидаемую ошибку теста на три компонента: неустранимую ошибку, член смещения и член дисперсии. Неустранимая ошибка представляет собой присущий данным шум, который не может быть уменьшен ни одной моделью. Член смещения измеряет ошибку, вызванную аппроксимацией реальной проблемы с помощью упрощенной модели, а член дисперсии измеряет ошибку, вызванную чувствительностью модели к колебаниям обучающих данных.
Математически мы можем выразить ожидаемую ошибку теста следующим образом:
Ожидаемая ошибка теста = неустранимая ошибка + погрешность ^ 2 + дисперсия
В идеале мы хотим найти баланс между смещением и дисперсией, который минимизирует ожидаемую ошибку теста. Однако уменьшение одного компонента часто приводит к увеличению другого. Этот компромисс имеет решающее значение при выборе и оценке модели.
В контексте задач классификации мы также можем изучить декомпозицию смещения и дисперсии потерь 0-1, которая является обычной функцией потерь, используемой в задачах классификации. Потеря 0-1 измеряет ошибку как долю ошибочно классифицированных экземпляров. Разложение смещения-дисперсии потери 0-1 дает представление об источниках ошибок в моделях классификации.
Помимо статистической погрешности, существуют и другие типы погрешностей, которые могут повлиять на модели машинного обучения. Эти смещения могут возникать из различных источников, включая смещение выборки, смещение измерения и алгоритмическое смещение. Понимание этих предубеждений необходимо для создания справедливых и надежных систем машинного обучения.
В следующей лекции мы углубимся в перекрестную проверку, мощную технику для оценки эффективности обобщения модели. Перекрестная проверка позволяет нам оценить, насколько хорошо модель будет работать с невидимыми данными, моделируя процесс обучения и тестирования на различных подмножествах данных. Мы рассмотрим различные типы методов перекрестной проверки, такие как перекрестная проверка в k-кратном порядке и стратифицированная перекрестная проверка, и обсудим их преимущества и ограничения.
На сегодняшней лекции все. Я призываю вас ознакомиться с пройденным материалом и подготовиться с любыми вопросами, которые могут у вас возникнуть к нашему следующему занятию. Спасибо Вам и хорошего дня!
8.3 Разложение квадрата ошибки по смещению и дисперсии (L08: Оценка модели, часть 1)
8.3 Разложение квадрата ошибки по смещению и дисперсии (L08: Оценка модели, часть 1)
В предыдущей лекции мы получили некоторое представление о смещении и дисперсии и кратко коснулись разложения функции потерь на смещение-дисперсию. Теперь, в этой лекции, мы углубимся в декомпозицию смещения и дисперсии, сосредоточив внимание на квадрате потери ошибки. Если мы начнем с квадрата потери ошибки, это сделает его более простым и интуитивно понятным, прежде чем мы исследуем его связь с переоснащением и недообучением. Кроме того, мы кратко обсудим декомпозицию смещения-дисперсии потерь 0-1, которая является более спорной темой, поскольку ей посвящены недавние работы. Однако сначала мы рассмотрим случай квадрата ошибки, так как он обеспечивает более простое понимание.
Кратко подытоживая, предвзятость и дисперсия были более подробно рассмотрены в предыдущем видео, но было бы полезно уделить немного времени повторению настройки. Мы смотрим на точечную оценку за вычетом прогноза, который представляет прогнозируемую цель для данной модели и определенного обучающего набора. Ожидание принимается для разных обучающих наборов, взятых из одного и того же распределения или населения. Это ожидание представляет собой средний прогноз для данной точки данных в тестовом наборе.
Смещение измеряет, насколько средний прогноз отличается от истинного целевого значения, а дисперсия количественно определяет величину, на которую каждый отдельный прогноз отклоняется от среднего прогноза. Член дисперсии возводится в квадрат, чтобы игнорировать знак и сосредоточиться на общем разбросе прогнозов вокруг среднего значения.
Квадрат ошибок может быть представлен как (тета - тета шляпа) ^ 2, где тета - это истинное значение, а тета шляпа - прогнозируемое значение для конкретной точки данных. В этой лекции мы сосредоточимся на разложении квадрата ошибки на разложение по смещению и дисперсии, принимая во внимание только смещение и дисперсию и игнорируя шум.
Чтобы продолжить декомпозицию смещения-дисперсии, мы вводим некоторые обозначения и настройки для сценария. Мы рассматриваем истинную функцию, которая генерирует метки (y), и у нас есть гипотеза (h) в качестве нашей модели, которая аппроксимирует истинную функцию, генерирующую данные. Мы используем y hat для представления прогноза. Используя эти термины, мы можем выразить квадрат ошибки как (y - y hat)^2. Чтобы избежать путаницы с символом ожидания (E), мы обозначаем квадрат ошибки как (s).
Теперь давайте разложим квадрат ошибки на компоненты смещения и дисперсии. Чтобы достичь этого, мы используем математический прием, вставляя и вычитая ожидание предсказания. Делая это, мы расширяем квадратное выражение и разделяем его на три члена: (y^2, -2yy шляпа, y шляпа^2).
Затем мы применяем ожидание к обеим частям уравнения. Применение ожидания к первому члену дает y ^ 2, которое остается неизменным, поскольку y является константой. Математическое ожидание второго слагаемого, -2yy hat, равно нулю, поскольку мы неоднократно вычитаем одно и то же значение (математическое ожидание y hat) из самого себя. Что касается третьего члена, математическое ожидание y hat^2 представляет собой среднее значение прогнозов.
После применения математического ожидания у нас остаются два термина: квадрат смещения и дисперсия. Квадрат смещения равен (y - E[y hat])^2, что измеряет разницу между истинной меткой и средним прогнозом. Дисперсия равна E[(y hat - E[y hat])^2], количественно определяя среднеквадратичное отклонение отдельных прогнозов от среднего прогноза.
Чтобы продемонстрировать устранение термина -2yy при применении математического ожидания, мы разбиваем шаги. Применение ожидания к шляпе -2yy приводит к 2E[yy hat]. Расширяя выражение дальше, мы находим, что математическое ожидание yy hat равно E[y]E[y hat], поскольку y является константой. Следовательно, ожидание -2yy hat упрощается до -2E[y]E[y hat].
Вычитание этого члена из квадрата ошибки (s) дает нам:
s = y^2 - 2yy hat + y hat^2 = y^2 - 2yy hat + y hat^2 - 2E[y]E[y hat] + 2E[y]E[y hat]
Теперь давайте переставим термины:
s = (y - E[y hat])^2 + 2(E[y]E[y hat] - yy hat)
Мы можем еще больше упростить выражение, признав, что E[y]E[y hat] — это постоянное значение, обозначаемое как c. Таким образом, мы имеем:
s = (y - E[yy hat])^2 + 2(c - yy hat)
Наконец, давайте сосредоточимся на втором члене, 2(c - yy hat). Этот термин можно разложить следующим образом:
2(с - уу шапка) = 2с - 2уу шапка
Первый член, 2c, является константой и не зависит от предсказания y hat. Второй член, -2yy hat, представляет взаимодействие между истинной меткой y и прогнозом y hat.
Теперь мы можем резюмировать разложение квадрата ошибки по смещению и дисперсии следующим образом:
s = (y - E[y hat])^2 + 2c - 2yy hat
Первый член (y - E[y hat])^2 соответствует квадрату смещения. Он измеряет расхождение между истинной меткой y и средним прогнозом E[y hat].
Второй член, 2c, является константой и представляет квадрат смещения. На него не влияет выбор предсказания y.
Третий член, -2yy hat, представляет дисперсию. Он фиксирует изменчивость индивидуальных прогнозов y hat вокруг их среднего значения E[y hat]. На него напрямую влияет выбор предсказания у шляпы.
Таким образом, мы можем заключить, что квадрат потери ошибки может быть разложен на квадрат смещения, постоянный квадрат смещения и член дисперсии.
Понимание декомпозиции смещения и дисперсии помогает нам лучше понять поведение модели. Высокое смещение указывает на недостаточное соответствие, когда модель не может уловить основные закономерности в данных. Высокая дисперсия указывает на переоснащение, когда модель слишком чувствительна к обучающим данным и не может хорошо обобщить невидимые данные.
Анализируя компоненты смещения и дисперсии, мы можем принимать обоснованные решения о сложности модели, методах регуляризации и стратегиях сбора данных для оптимизации производительности наших моделей.
В следующей лекции мы расширим разложение смещения-дисперсии на потери 0-1 и обсудим его последствия.