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

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

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

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

Само машинное обучение подразделяется на 2 типа: обучение с учителем и обучение без учителя.

Контролируемое обучение

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

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

Неконтролируемое обучение

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

Шаги в машинном обучении

  • Сбор данных
  • Понимание данных
  • Предварительная обработка данных
  • Разработка функций
  • Выбор модели
  • Обучение модели
  • Оценка модели
  • Настройка гиперпараметров
  • Развертывание модели
  • Мониторинг и обслуживание
  • Итерационный процесс

Что это за шаги? чтобы было проще, давайте рассмотрим это на учебном примере!

Совместное использование велосипедов: регрессионное прогнозирование общего числа клиентов с использованием контролируемого обучения

Прежде чем мы продолжим, мы должны глубоко изучить и понять этот случай. Здесь мы в основном уже сделали шаги по сбору данных, ПОЛУЧИТЕ ДАННЫЕ!

Capital Bikeshare — известная программа проката велосипедов, действующая в столичном районе Вашингтона, округ Колумбия. Диапазон временных рамок набора данных - с 2011 по 2012 год.

Проблема: начало новогоднего цикла (2013 г.) и расширение на новые местоположения.

Цели:команде Capital Bikeshare Business Strategic нужен инструмент, который может прогнозировать потенциальных клиентов.

Аналитический подход: выяснение отношения или влияния X (независимые переменные) на Y (цель изучается и прогнозируется)

Понимание данных

Мы должны делать заметки об этом, чтобы лучше понять это позже при моделировании. Что означает каждая колонка. Зная это, мы можем предварительно обработать данные, как это должно быть, а затем мы также можем узнать, какую функцию можно спроектировать.

В машинном обучении с учителем сначала мы должны знать, что будет X (функции) и что будет Y (цель).

Потенциальные Y – это случайные, зарегистрированныеи счетные. Мы будем использовать count для этого учебного случая, поскольку он представляет общее количество клиентов. случайный + зарегистрированный равен count. Таким образом, мы собираемся прогнозировать общее количество клиентов в день на основе функций / X, таких как дата-время, влажность, погода, праздник, сезон, температура, температура и час.

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

В корреляции тепловой карты мы также видим, что temp и atemp сильно коррелируют до 0,99, что означает, что это в основном одно и то же (мультиколлинеарность), поэтому мы можем использовать только один из них. .

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

Разработка функций

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

Как мы видим, я расширил измерение времени в dateday несколькими новыми функциями, такими как month, dayDate, dayName, year, weekdays. Они в основном обогащают информацию, которую машинное обучение изучит, чтобы повысить ее точность.

Предварительная обработка данных

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

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

Инструменты, которые мы можем использовать в этом наборе данных, — это OneHotEncoder() для преобразования каждого значения в да/нет (1/0).

Представьте, что у вас есть список погодных условий, и вы хотите использовать компьютерную программу для их понимания и анализа. Однако компьютер может работать только с числами, а не со словами типа «дождь», «солнечно» или «буря». Итак, чтобы помочь компьютеру, вы решаете использовать специальный инструмент под названием «One-Hot Encoder».

One-Hot Encoder подобен волшебному переводчику, который преобразует названия погодных условий в числа, понятные компьютеру. Вот как это работает: для каждого животного в списке One-Hot Encoder создает новый набор чисел, где только одно из чисел равно «1», а все остальные — «0». Позиция «1» в этом наборе сообщает компьютеру, какую погоду он представляет.

После этого мы можем разделить данные между X и Y, функциями и целью, используя приведенный выше скрипт.

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

Выбор модели, обучение модели и оценка модели

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

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

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

Как видите, мы используем 4 оценочные метрики при перекрестной проверке. Метрики, используемые здесь, в основном являются измерением ошибок. Все было основано на MAE, но в разных формах.

MAE:среднее значение абсолютной ошибки

MAPE —(наш основной показатель): среднее значение абсолютной процентной ошибки.

MSE: среднее значение квадрата ошибки

RMSE: корень из среднеквадратичной ошибки

Кажется, он по-прежнему дает высокий MAPE (диапазон ошибок, но в процентах). Кто поверит этой модели с таким высоким процентом ошибок?

Это связано с тем, что цель имеет более низкие значения по сравнению с общим диапазоном данных. Больше сосредоточено в низких значениях (правый блок-график_. Итак, если есть небольшое число, скажем, 2, и было предсказано как 10, MAE было всего 8, но MAPE может быть 500 процентов! Так что нам лучше масштабировать его , я использую логарифмическую шкалу, поэтому она преобразует диапазон в меньшее число и сделает концентрацию более высокой (левая диаграмма).

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

MAPE стал намного лучше. Теперь у нас есть две самые производительные базовые модели с хорошим MAPE. Случайный лес и XG Boost. Мы можем сделать гипернастройку этих моделей.

Настройка гиперпараметров

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

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

Мы можем использовать поиск по сетке или рандомизированный поиск, чтобы найти наилучшее сочетание параметров.

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

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

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

Подогнать под тестовый набор

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

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

Наш MAE невелик по сравнению с диапазоном данных, который составляет от 1 до 970 клиентов. Это похоже на то, что если общее количество клиентов должно быть равно 500, машина может предсказать, что это будет 523 или 477 или около того числа. Но процент все равно большой.

Мы можем провести остаточный анализ, чтобы увидеть, какие прогнозы дают высокий MAPE. мы можем видеть, что некоторые из прогнозов далеки от точности в отношении общего количества клиентов от 100 до 600. Это то, что делает MAPE высоким.

Наконец, в итоге мы получили, что настроенная версия XG Boost Regressor — лучшая модель для использования в данном случае.

Это конец работы. Если вам интересна полная работа, вы можете получить доступ к моей записной книжке Jupyter на GitHub здесь. Я также сделал видео на YouTube, объясняющее это, вы можете посмотреть его здесь.

Эта модель создана Дики Ренандой / @dikisahkan. Вы можете связаться со мной через любые социальные сети GitHub, Kaggle, Replit, LinkedIn, IG и TikTok.