10 Способов улучшить модели машинного обучения

10 Способов улучшить модели машинного обучения - манекены

Теперь, когда вы используете алгоритм машинного обучения, закончили изучение данных, полученных с помощью Python или R, вы размышляете над результаты вашего тестового набора и задаются вопросом, можете ли вы их улучшить или действительно достигли наилучшего результата. Существует ряд проверок и действий, которые намекают на методы, которые вы можете использовать для повышения производительности машинного обучения и достижения более общего предиктора, способного одинаково хорошо работать с вашим набором тестов или новыми данными. Этот список из десяти методов дает вам возможность улучшить результат, достигнутый с помощью алгоритмов машинного обучения.

Изучение кривых обучения

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

Python помогает вам легко рисовать кривые обучения с помощью функции Scikit-learn (). Вы также можете легко достичь того же результата, используя R с пользовательскими функциями, как описано блоком аналитики Revolution.

Правильная кросс-валидация

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

Перекрестная проверка дает вам подсказки, когда шаги, которые вы делаете, верны. Важно, но не критично, что оценки CV точно повторяют измерения ошибок вне образца. Однако очень важно, чтобы оценки CV правильно отражали улучшение или ухудшение в фазе тестирования из-за ваших решений моделирования. Как правило, есть две причины, по которым оценки перекрестной проверки могут варьироваться от истинных результатов ошибки:

  • Snooping
  • Неправильная выборка

Python предлагает сэмплер CV с разбивкой-k-fold. R может стратифицировать выборки, используя метод createFolds библиотеки каретки, когда вы предоставляете параметр y в качестве фактора.

Выбор правильной ошибки или показателя метрики

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

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

Поиск лучших гиперпараметров

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

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

Тестирование нескольких моделей

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

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

Поскольку вас могут заинтересовать только те потребители, которые, скорее всего, будут реагировать на ваше предложение, заказы на прогнозы от большинства до наименее вероятных будут подчеркивать, насколько хороши ваши модели для прогнозирования наиболее перспективных клиентов. Эти ответы Quora помогут вам понять, как работают диаграммы усиления и подъема: что такое кривая ROC? и что такое кривая подъема? ,

Тестирование нескольких моделей и интроспекция могут также содержать предложения относительно того, какие функции необходимо преобразовать для создания объектов или какая функция не учитывается при выборе функций.

Модели усреднения

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

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

Stacking models

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

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

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

Применение технологии

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

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

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

Выбор функций и примеров

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

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

Вы можете узнать больше о выборе стабильности, просмотрев пример на веб-сайте Scikit-learn. Кроме того, вы можете практиковать, используя функции RandomizedLogisticRegression и RandomizedLasso Scikit-learn в модуле linear_model.

Поиск дополнительных данных

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

Если вы хотите добавить еще несколько случаев, просто посмотрите, есть ли у вас похожие данные. Если вы хотите добавить новые функции, найдите источник данных с открытым исходным кодом, если это возможно, чтобы соответствовать вашим данным с его записями. Еще один отличный способ получить как новые случаи, так и новые возможности - очистить данные из Интернета. Часто данные доступны между различными источниками или через интерфейс прикладного программирования (API). Например, API Google предлагает множество источников географической и деловой информации.