проект по машинному обучению
Идеи проектов машинного обучения для начинающих
Авторизуйтесь
Идеи проектов машинного обучения для начинающих
В 2021 году навыки машинного обучения остаются важными. Если вы новичок, необходимо работать над проектами, которые помогут прокачать навыки. Предлагаем несколько идей для портфолио. А ещё советуем посмотреть нашу подборку готовых датасетов.
Система музыкальных рекомендаций
Цель этого проекта машинного обучения — рекомендовать пользователям музыку, опираясь на поиск и старые треки, как делает, например Spotify. В какой-то мере, компьютер должен думать примерно, как человек, чтобы выдать релевантный результат. Для этого полезно полагаться на методы машинного обучения и нейронных сетей.
Системы музыкальных рекомендаций бывают нескольких типов. Контент-ориентированные берут за основу прошлый выбор пользователя. Коллаборативные предсказывают песни, основанные на том, что ранее слушали другие люди с похожим вкусом. Гибридные используют оба типа данных. Независимо от типа для обучения системы понадобится датасет. Например, Million Songs, содержащий информацию о разных музыкальных жанрах.
Кстати, потом по такому же принципу можно создать софт, который будет рекомендовать фильмы, сериалы, товары, мероприятия и так далее.
Система прогнозирования продаж
Цель — прогнозировать продажи для каждого отдела в каждой торговой точке. Оно нужно, чтобы помочь компании принимать более эффективные решения для оптимизации каналов и планирования запасов. Для тренировки можно использовать датасеты Walmart, которые содержат данные о продажах 98 продуктов в 45 торговых точках. В них есть информация о каждом магазине, в каждом отделе и на каждый день недели. А также — данные об акциях и скидках, которые влияют на продажи и которые тоже стоит принимать во внимание.
Система прогнозирования цен на жильё
Цель — спрогнозировать стоимость нового дома, на основе данных о ценах на жильё и фактах о доме: пощади, расположении, инфраструктуре и так далее. Чтобы начать, можете использовать датасет Boston House Prices. Он небольшой, но включает достаточно данных для первого проекта машинного обучения. В нём есть информация о ценах на дома Бостона, возрасте владельцев, уровне преступности в районе и так далее — всего 14 показателей.
Анализатор настроений
Имея при себе систему, которая могла бы анализировать настроения, стоящие по текстам и постам, организации могли бы куда точнее понимать поведение потребителей. Это позволило бы им улучшить обслуживание клиентов.
Социальные платформы, например Twitter, Facebook, YouTube и Reddit, генерируют огромное количество данных. Так, используя датасет Twitter, можно получить содержимое твитов, а также информацию о хэштегах, ретвитах, местоположении, пользователя — словом, обо всём, что можно использовать для обучения системы. С ним можно понять, о чём сейчас говорит мир и как относится к актуальным событиям и модным трендам. Работа с таким датасетом разобраться с интеллектуальным анализом данных в соцсетях и классификаторах.
Анализатор активности
Этот проект машинного обучения направлен на построение модели, которая может точно распознавать физическую активность человека. Цель в том, чтобы классифицировать деятельность по одной из шести категорий, которые будет распознавать смартфон. Эти категории: ходьба, бег, подъём и спуск по ступенькам, сидение, стояние и лежание.
Например, здесь датасет содержит информацию об активности 30 людей — её получили с помощью смартфона, оснащённого специальными трекерами.
Система распознавания рукописного ввода
Прежде чем переходить к глубокому обучению, можно создать проект на основе простого датасета, например MNIST. Он предназначен для обучения машин распознаванию рукописных цифр и подойдёт для новичков, которым пока трудно работать с графическими данными.
В этом проекте будем использовать сверточные нейронные сети и датасет MNIST. В нём 60 тысяч обучающих изображений рукописных цифр от нуля до девяти и 10 тысяч изображений для тестирования. При этом он достаточно лёгкий, чтобы поместиться в памяти компьютера.
Система распознавания объектов
Обнаружение объектов — метод компьютерного зрения, который позволяет идентифицировать и находить объекты на изображении или видео. Его можно использовать для подсчёта объектов в сцене и отслеживания их точного расположения. Так, система подойдёт для наблюдения за футбольным мячом или подсчёта машин на дороге.
В разработке проекта помогут глубокие нейронные сети (DNNs). В ходе работы придётся создать модель, способную классифицировать объекты и точно локализовать объекты разных классов.
15 проектов для развития навыков работы с машинным обучением
Рубрика #чтопочитать и материал для совершенствования навыков в области машинного обучения.
Данный проект очень полезен при применении NLP (Natural Language Processing) для выявления фальшивых новостей, то есть, поддельной информации из недостоверных источников. Основой этого проекта является идея о том, что формулировка фейковых новостей отличается от настоящих, и модель машинного обучения может заметить эти отличия. Такую модель можно обучить, используя пассивно-агрессивный алгоритм классификации, который может классифицировать большие потоки данных, а его имплементация не займет много времени.
Ссылка на набор данных: Fake news Dataset
Это, пожалуй, самый известный набор данных, когда дело доходит до распознавания шаблонов. Всего он включает в себя три вида ирисов (Iris Setosa, Iris Versicolour, Iris Virginica) по 50 примеров для каждого, с различными типами лепестков и чашелистиков. Один из видов линейно отделим от остальных двух, в то время как остальные два вида линейно неразделимы друг от друга. Для этого набора данных стоит использовать регрессионную или классификационную модель. Классификация — это процесс распределения предметов в соответствующие классы.
Ссылка на набор данных: Iris Dataset
Этот датасет можно использовать для обучения алгоритма классификации, который в последующем сможет распознавать рукописные цифры.
Ссылка на набор данных: MNIST
Этот набор данных часто используется в распознавании шаблонов. Он содержит информацию о различных местах жительства в Бостоне, включая уровень преступности, налоги, количество комнат и т.д. Всего в нём 506 записей и 14 параметров. Вы можете использовать этот набор данных для прогнозирования цены нового места жительства, используя линейную регрессию. Линейная регрессия используется для вычисления неизвестного значения, в случае если оно линейно взаимосвязанно с уже имеющимися значениями.
15 апреля 1912 года Титаник потонул и унес жизни 1502 из 2224 пассажиров. Представленный ниже набор данных содержит информацию о пассажирах, включая имя, возраст, пол и т.д. 891 пассажир относятся к набору обучения и 418 к набору тестирования. Используя данный датасет и линейную регрессию, можно обучить модель, прогнозирующую, выжил бы человек на Титанике или нет.
Ссылка на набор данных: Titanic Dataset
Этот набор данных содержит транзакции, совершенные с банковских карт и помеченные как мошеннические или подлинные. На основе этого набора можно обучить модель, которая сможет замечать мошеннические действия, что очень важно для компаний, использующих транзакционные системы. Попробуйте использовать различные алгоритмы, например, ансамбль методов, логистическую регрессию и нейронные сети для определения лучшего из них.
Приведенный набор данных содержит информацию об индийских школах за 2013-2014 и 2015-2016 учебные года. Благодаря ему, начинающие ученые по данным могут сразу начать работать с данными, ведь он собирает в одном месте всю изначально разрозненную информацию от индийского правительства. Полезно это будет как просто новичкам, так и людям, которым интересно узнать, как образование в Индии развивается с течением времени. Начать свое исследование вы можете с ответов на следующие вопросы:
Этот набор данных содержит информацию об уровне загрязнения воздуха в Сеуле, столице Республики Корея. Он включает в себя средние значения шести химических элементов (SO2, NO2, CO, O3, PM10, PM2.5).
Этот набор данных разделен на четыре файла:
30 самых удивительных проектов по машинному обучению
Ex-редактор направления «Истории».
Платформа Mybridge проанализировала около 8800 прошлогодних проектов по машинному обучению с открытым исходным кодом и выбрала топ-30. В этом списке перечислены лучшие библиотеки для машинного обучения, датасеты и приложения, опубликованные в период с января по декабрь 2017 года. При оценке учитывались популярность, новизна и активность.
1. FastText
Библиотека для изучения вложений слов и текстовой классификации. [11786 звезд на Github] Создатель – Facebook Research.
2. Deep Photo Style Transfer
Программа для рендеринга фотографий с перенесением стилей с помощью нейросетей. [9747 звезд на Github] Создатель – Фудзюн Луань, профессор Корнеллского университета.
3. Face Recognition
Самый простой API для распознавания лиц для Python. [8672 звезды на Github] Создатель –Адам Гейтгей.
4. Magneta
Генерация музыки и живописи при помощи машинного интеллекта. [8113 звезд на Github].
5. Sonnet
Библиотека для работы с нейронными сетями, основанная на TensorFlow. [5731 звезда на Github] Создатель – Малкольм Рейнолдс из Deepmind.
6. deeplearn.js
Библиотека для машинного обучения, которая работает в браузере. [5462 звезды на Github] Создатель – Нихил Торат из Google Brain.
7. Fast Style Transfer in TensorFlow
Быстрая передача стиля с помощью TensorFlow. [4843 звезды на Github] Создатель – Логан Энгсторм из Массачусетского технологического института.
8. Pysc2
Среда обучения для StarCraft II. [3683 звезды на Github] Создатель – Тимо Эвальдс из DeepMind.
9. AirSim
Проект с открытым исходным кодом, созданный на Unreal Engine, который моделирует физику полета мультикоптера. [3861 звезда на Github] Создатель – Шитал Шах из Microsoft.
10. Facets
Визуализации для датасетов машинного обучения. [3371 звезда на Github] Создатель – Google Brain.
11. Style2Paints
ИИ-раскраска изображений. [3310 звезд на Github].
12. Tensor2Tensor
Унифицированная модель глубинного обучения, которая способна решать задачи из разных областей – Google Research. [3087 звезд на Github] Создатель – Райан Сепасси из Google Brain.
13. Image-to-image translation in PyTorch
Image-to-image трансформация рисунков. Например, трансформация лошадей в зебр, картины Моне — в фотографию, летнего пейзажа — в зимний и т.д. [2847 звезд на Github] Создатель – Дзюн-Ян Зу, профессор Калифорнийского университета в Беркли.
14. Faiss
Библиотека для эффективного поиска подобия и кластеризации векторов. [2629 звезд на Github] Создатель – Facebook Research.
15. Fashion-mnist
База данных продуктов моды для машинного обучения. [2780 звезд на Github] Создатель – Хань Сяо, исследователь Zalando Tech.
16. ParlAI
Основа для обучения и оценки моделей ИИ на наборе данных из множества диалогов. [2578 звезд на Github] Создатель – Александр Миллер из Facebook Research.
17. Fairseq
Сверточная нейронная сеть для машинного перевода. [2571 звезда на Github] Создатель – Facebook AI.
18. Pyro
Глубокое универсальное вероятностное программирование с Python и PyTorch. [2387 звезд на Github] Создатель – Uber AI Labs.
19. iGAN
Интерактивная генерация изображений. [2369 звезд на Github].
20. Deep-image-prior
Восстановление изображений с помощью нейронных сетей, но без обучения. [2188 звезд на Github] Создатель – Дмитрий Ульянов из Сколковского института науки и технологий.
21. Face_classification
Обнаружение лиц в реальном времени и эмоциональная/гендерная классификация с использованием наборов данных fer2013/IMDB. [1967 звезд на Github].
22. Speech-to-Text-WaveNet
End-to-end распознавание речи на английском языке с использованием WaveNet и tensorflow. [1961 звезда на Github] Создатель – Намджу Ким из Kakao Brain.
23. StarGAN
24. ML-agents
Плагин с открытым кодом, который является средой для обучения агентов в Unity. [1658 звезд на Github] Создатель – Артур Юлиани.
25. DeepVideoAnalytics
Платформа для поиска и аналитики визуальных данных. [1494 звезды на Github] Создатель – Акшай Бхат, профессор Корнеллского университета.
26. OpenNMT
Открытая система машинного перевода, использующая методы машинного обучения. Для построения нейронной сети проект использует возможности библиотеки глубинного машинного обучения Torch. [1490 звезд на Github].
27. Pix2pixHD
Фотореалистичный синтез и преобразование изображений с высоким разрешением (2048×1024). [1283 звезды на Github] Создатель – Мин-Ю Лиу из Nvidia.
28. Horovod
Фреймворк распределенного обучения для TensorFlow. [1188 звезд на Github] Создатель – Uber Engineering.
29. AI-Blocks
Мощный и интуитивно понятный WYSIWYG-интерфейс, который позволяет любому человеку создавать модели для машинного обучения. [899 звезд на Github].
30. Deep neural networks for voice conversion in Tensorflow
Глубокие нейронные сети для передачи стиля голоса. [845 звезд на Github]. Создатель – Даби Ань из Kakao Brain.
Расскажи, как цифровая трансформация изменила твой бизнес
Примеры проектов по машинному обучению — 10 лучших
Обучение искусственного интеллекта — задача непростая, но затраченные усилия сполна окупятся невероятными результатами, которых можно достичь благодаря ИИ. Хотите узнать больше о самых классных проектах по машинному обучению? Читайте нашу подборку.
Magenta
Magenta — детище компании Google, принцип работы которого основан на технологии машинного обучения. ИИ способен создавать музыкальные композиции, а также умеет работать с изобразительным искусством. Кроме того, инструмент может самообучаться и развиваться. Главная цель Magenta — разработка алгоритмов, которые смогут сочинять музыку и создавать другие произведения искусства, основываясь на уже существующих.
TensorFlow
TensorFlow — это фреймворк для построения нейросетей и работы с ними от команды Google Brain. По своей сути, TensorFlow — огромная нейронная сеть, используя которую, можно не только решать различные задачи, но и обрабатывать данные для поиска правильного решения.
Подробнее о новой версии TF мы уже как-то писали.
Deep Photo Style Transfer
Deep Photo Style Transfer будет интересен не только программистам, но и тем, кто занимается фотографией и обработкой изображений. Эта программа способна скопировать особенности стиля одной фотографии и перенести их на другую, при этом сохранив фотореалистичность.
Fast Style Transfer in TensorFlow
Fast Style Transfer in TensorFlow — технология на базе TensorFlow, которая, подобно предыдущей, может переносить стиль одного изображения на другое. Основное отличие состоит в том, что с помощью Fast Style Transfer вы можете преобразовать свои фотографии в картины, выполненные в технике любого художника, или накладывать на них различные визуальные эффекты.
Style2Paints
Style2Paints станет хорошим помощником для тех художников, которые боятся цвета. Искусственный интеллект способен самостоятельно раскрасить изображение, при этом он может не только взять за основу цветовую гамму другой картинки, но и создать свои стили.
Unity Machine Learning Agents
Unity Machine Learning Agents — интересный и полезный продукт для разработчиков и научных сотрудников. Разработанный софт способен симулировать различные ситуации и игры для обучения ИИ — это делается с помощью API Python при использовании Unity Editor. В Unity Machine Learning Agents вы также можете имитировать различные среды для обучения искусственного интеллекта.
Deep-image-prior
Вам нужно реставрировать изображение или повысить его разрешение? Используйте Deep-image-prior. Эта программа использует нейронные сети, чтобы убрать с изображения шумы и улучшить его качество. Одной из самых любопытных особенностей проекта является возможность восстановить утраченные части изображения, используя нейросеть.
GANimation
GANimation — ИИ, который анимирует лица. Чтобы сотворить чудо, технологии нужно лишь одно изображение, при этом анимация не покажется жуткой, а будет максимально приближена к мимике реального человека. Для определении эмоций и при составлении сценария лицевых движений используются двигательные единицы.
Deep voice conversion
Deep voice conversion — это инструмент для работы со звуком. С его помощью можно имитировать голос любого человека, сохраняя при этом тембр, речевые особенности и многое другое. Для синтеза, естественно, понадобятся реальные записи или живой пример.
Face Recognition
Face Recognition — простая, но полезная технология, задействующая машинное обучение. Способна практически со стопроцентной вероятностью распознать лицо человека. При этом нейросеть работает в режиме реального времени и может понять, кто изображен на фотографии.
В SkillFactory есть несколько курсов для желающих изучать машинное обучение, например, «Обучение нейронным сетям» и «Комплексный курс по глубокому обучению на Python для начинающих».
Обучение нейронным сетям
Научитесь применять алгоритмы для решения бизнес-задач. На курсе вы обучите 7 нейронных сетей. Скидка по промокоду BLOG 5%.
Делаем проект по машинному обучению на Python. Часть 1
Когда читаешь книгу или слушаешь учебный курс про анализ данных, нередко возникает чувство, что перед тобой какие-то отдельные части картины, которые никак не складываются воедино. Вас может пугать перспектива сделать следующий шаг и целиком решить какую-то задачу с помощью машинного обучения, но с помощью этой серии статей вы обретёте уверенность в способности решить любую задачу в сфере data science.
Чтобы у вас в голове наконец сложилась цельная картина, мы предлагаем разобрать от начала до конца проект применения машинного обучения с использованием реальных данных.
Последовательно пройдём через этапы:
Описание задачи
Прежде чем писать код, необходимо разобраться в решаемой задаче и доступных данных. В этом проекте мы будем работать с выложенными в общий доступ данными об энергоэффективности зданий в Нью-Йорке.
Наша цель: использовать имеющиеся данные для построения модели, которая прогнозирует количество баллов Energy Star Score для конкретного здания, и интерпретировать результаты для поиска факторов, влияющих на итоговый балл.
Данные уже включают в себя присвоенные баллы Energy Star Score, поэтому наша задача представляет собой машинное обучение с управляемой регрессией:
Очистка данных
Далеко не каждый набор данных представляет собой идеально подобранное множество наблюдений, без аномалий и пропущенных значений (намек на датасеты mtcars и iris). В реальных данных мало порядка, так что прежде чем приступить к анализу, их нужно очистить и привести к приемлемому формату. Очистка данных — неприятная, но обязательная процедура при решении большинства задач по анализу данных.
Сначала можно загрузить данные в виде кадра данных (dataframe) Pandas и изучить их:
Так выглядят реальные данные.
Когда мы получили эти данные, то не стали спрашивать о значениях, а посмотрели на название файла:
и решили поискать по запросу «Local Law 84». Мы нашли эту страницу, на которой говорилось, что речь идёт о действующем в Нью-Йорке законе, согласно которому владельцы всех зданий определённого размера должны отчитываться о потреблении энергии. Дальнейший поиск помог найти все значения колонок. Так что не пренебрегайте именами файлов, они могут быть хорошей отправной точкой. К тому же это напоминание, чтобы вы не торопились и не упустили что-нибудь важное!
Мы не будем изучать все колонки, но точно разберёмся с Energy Star Score, которая описывается так:
Ранжирование по перцентили от 1 до 100, которая рассчитывается на основе самостоятельно заполняемых владельцами зданий отчётов об энергопотреблении за год. Energy Star Score — это относительный показатель, используемый для сравнения энергоэффективности зданий.
Наверняка некоторые колонки, которые явно содержат числа (например, ft²), сохранены как объекты. Мы не можем применять числовой анализ к строковым значениям, так что конвертируем их в числовые типы данных (особенно float )!
Этот код сначала заменяет все «Not Available» на not a number ( np.nan ), которые можно интерпретировать как числа, а затем конвертирует содержимое определённых колонок в тип float :
Когда значения в соответствующих колонках у нас станут числами, можно начинать исследовать данные.
Отсутствующие и аномальные данные
Наряду с некорректными типами данных одна из самых частых проблем — отсутствующие значения. Они могут отсутствовать по разным причинам, и перед обучением модели эти значения нужно либо заполнить, либо удалить. Сначала давайте выясним, сколько у нас не хватает значений в каждой колонке (код здесь).
Для создания таблицы использована функция из ветки на StackOverflow.
Убирать информацию всегда нужно с осторожностью, и если много значений в колонке отсутствует, то она, вероятно, не пойдёт на пользу нашей модели. Порог, после которого колонки лучше выкидывать, зависит от вашей задачи (вот обсуждение), а в нашем проекте мы будем удалять колонки, пустые более чем на половину.
Также на этом этапе лучше удалить аномальные значения. Они могут возникать из-за опечаток при вводе данных или из-за ошибок в единицах измерений, либо это могут быть корректные, но экстремальные значения. В данном случае мы удалим «лишние» значения, руководствуясь определением экстремальных аномалий:
Разведочный анализ данных
Скучный, но необходимый этап очистки данных закончен, можно перейти к исследованию! Разведочный анализ данных (РАД) — неограниченный по времени процесс, в ходе которого мы вычисляем статистику и ищем в данных тенденции, аномалии, шаблоны или взаимосвязи.
Коротко говоря, РАД — это попытка выяснить, что нам могут сказать данные. Обычно анализ начинается с поверхностного обзора, затем мы находим интересные фрагменты и анализируем их подробнее. Выводы могут быть интересными сами по себе, или они могут способствовать выбору модели, помогая решить, какие признаки мы будем использовать.
Однопеременные графики
Выглядит подозрительно! Балл Energy Star Score является процентилем, значит следует ожидать единообразного распределения, когда каждый балл присваивается одному и тому же количеству зданий. Однако высший и низший результаты получило непропорционально большое количество зданий (для Energy Star Score чем больше, тем лучше).
Если мы снова посмотрим на определение этого балла, то увидим, что он рассчитывается на основе «самостоятельно заполняемых владельцами зданий отчётов», что может объяснить избыток очень больших значений. Просить владельцев зданий сообщать о своём энергопотреблении, это как просить студентов сообщать о своих оценках на экзаменах. Так что это, пожалуй, не самый объективный критерий оценки энергоэффективности недвижимости.
Если бы у нас был неограниченный запас времени, то можно было бы выяснить, почему так много зданий получили очень высокие и очень низкие баллы. Для этого нам пришлось бы выбрать соответствующие здания и внимательно их проанализировать. Но нам нужно только научиться прогнозировать баллы, а не разработать более точный метод оценки. Можно пометить себе, что у баллов подозрительное распределение, но мы сосредоточимся на прогнозировании.
Поиск взаимосвязей
Главная часть РАД — поиск взаимосвязей между признаками и нашей целью. Коррелирующие с ней переменные полезны для использования в модели, потому что их можно применять для прогнозирования. Один из способов изучения влияния категориальной переменной (которая принимает только ограниченный набор значений) на цель — это построить график плотности с помощью библиотеки Seaborn.
График плотности можно считать сглаженной гистограммой, потому что он показывает распределение одиночной переменной. Можно раскрасить отдельные классы на графике, чтобы посмотреть, как категориальная переменная меняет распределение. Этот код строит график плотности Energy Star Score, раскрашенный в зависимости от типа здания (для списка зданий с более чем 100 измерениями):
Как видите, тип здания сильно влияет на количество баллов. Офисные здания обычно имеют более высокий балл, а отели более низкий. Значит нужно включить тип здания в модель, потому что этот признак влияет на нашу цель. В качестве категориальной переменной мы должны выполнить one-hot кодирование типа здания.
Аналогичный график можно использовать для оценки Energy Star Score по районам города:
Район не так сильно влияет на балл, как тип здания. Тем не менее мы включим его в модель, потому что между районами существует небольшая разница.
Хотя этот коэффициент не может отражать нелинейные зависимости, с него можно начать оценку взаимосвязей переменных. В Pandas можно легко вычислить корреляции между любыми колонками в кадре данных (dataframe):
Самые отрицательные корреляции с целью:
и самые положительные:
Есть несколько сильных отрицательных корреляций между признаками и целью, причём наибольшие из них относятся к разным категориям EUI (способы расчёта этих показателей слегка различаются). EUI (Energy Use Intensity, интенсивность использования энергии) — это количество энергии, потреблённой зданием, делённое на квадратный фут площади. Эта удельная величина используется для оценки энергоэффективности, и чем она меньше, тем лучше. Логика подсказывает, что эти корреляции оправданны: если EUI увеличивается, то Energy Star Score должен снижаться.
Двухпеременные графики
Воспользуемся диаграммами рассеивания для визуализации взаимосвязей между двумя непрерывными переменными. К цветам точек можно добавить дополнительную информацию, например, категориальную переменную. Ниже показана взаимосвязь Energy Star Score и EUI, цветом обозначены разные типы зданий:
Наш последний исследовательский график называется Pairs Plot (парный график). Это прекрасный инструмент, позволяющий увидеть взаимосвязи между различными парами переменных и распределение одиночных переменных. Мы воспользуемся библиотекой Seaborn и функцией PairGrid для создания парного графика с диаграммой рассеивания в верхнем треугольнике, с гистограммой по диагонали, двухмерной диаграммой плотности ядра и коэффициентов корреляции в нижнем треугольнике.
Конструирование и выбор признаков
Конструирование и выбор признаков зачастую приносит наибольшую отдачу с точки зрения времени, потраченного на машинное обучение. Сначала дадим определения:
Мы сделаем следующее:
Добавление преобразованных признаков поможет модели узнать о нелинейных взаимосвязях внутри данных. В анализе данных является нормальной практикой извлекать квадратные корни, брать натуральные логарифмы или ещё как-то преобразовывать признаки, это зависит от конкретной задачи или вашего знания лучших методик. В данном случае мы добавим натуральный логарифм всех числовых признаков.
Этот код выбирает числовые признаки, вычисляет их логарифмы, выбирает два категориальных признака, применяет к ним one-hot кодирование и объединяет оба множества в одно. Судя по описанию, предстоит куча работы, но в Pandas всё получается довольно просто!
Теперь у нас есть больше 11 000 наблюдений (зданий) со 110 колонками (признаками). Не все признаки будут полезны для прогнозирования Energy Star Score, поэтому займёмся выбором признаков и удалим часть переменных.
Выбор признаков
Многие из имеющихся 110 признаков избыточны, потому что сильно коррелируют друг с другом. К примеру, вот график EUI и Weather Normalized Site EUI, у которых коэффициент корреляции равен 0,997.
Признаки, которые сильно коррелируют друг с другом, называются коллинеарными. Удаление одной переменной в таких парах признаков часто помогает модели обобщать и быть более интерпретируемой. Обратите внимание, что речь идёт о корреляции одних признаков с другими, а не о корреляции с целью, что только помогло бы нашей модели!
Существует ряд методов вычисления коллинеарности признаков, и один из самых популярных — фактор увеличения дисперсии (variance inflation factor). Мы для поиска и удаления коллинеарных признаков воспользуемся коэффициентом В-корреляции (thebcorrelation coefficient). Отбросим одну пару признаков, если коэффициент корреляции между ними больше 0,6. Код приведён в блокноте (и в ответе на Stack Overflow).
Это значение выглядит произвольным, но на самом деле я пробовал разные пороги, и приведённый выше позволил создать наилучшую модель. Машинное обучение эмпирично, и часто приходится экспериментировать, чтобы найти лучшее решение. После выбора у нас осталось 64 признака и одна цель.
Выбираем базовый уровень
Мы очистили данные, провели разведочный анализ и сконструировали признаки. И прежде чем перейти к созданию модели, нужно выбрать исходный базовый уровень (naive baseline) — некое предположение, с которым мы будем сравнивать результаты работы моделей. Если они окажутся ниже базового уровня, мы будем считать, что машинное обучение неприменимо для решения этой задачи, или что нужно попробовать иной подход.
Для регрессионных задач в качестве базового уровня разумно угадывать медианное значение цели на обучающем наборе для всех примеров в тестовом наборе. Эти наборы задают барьер, относительно низкий для любой модели.
В качестве метрики возьмём среднюю абсолютную ошибку (mae) в прогнозах. Для регрессий есть много других метрик, но мне нравится совет выбирать какую-то одну метрику и с её помощью оценивать модели. А среднюю абсолютную ошибку легко вычислить и интерпретировать.
Прежде чем вычислять базовый уровень, нужно разбить данные на обучающий и тестовый наборы:
Теперь вычислим показатель для исходного базового уровня:
The baseline guess is a score of 66.00
Baseline Performance on the test set: MAE = 24.5164
Средняя абсолютная ошибка на тестовом наборе составила около 25 пунктов. Поскольку мы оцениваем в диапазоне от 1 до 100, то ошибка составляет 25 % — довольно низкий барьер для модели!
Заключение
Вы этой статье мы прошли через три первых этапа решения задачи с помощью машинного обучения. После постановки задачи мы:
В следующей статье мы научимся с помощью Scikit-Learn оценивать модели машинного обучения, выбирать лучшую модель и выполнять её гиперпараметрическую настройку.