Введение в машинное обучение
Благодаря машинному обучению программист не обязан писать инструкции, учитывающие все возможные проблемы и содержащие все решения. Вместо этого в компьютер (или отдельную программу) закладывают алгоритм самостоятельного нахождения решений путём комплексного использования статистических данных, из которых выводятся закономерности и на основе которых делаются прогнозы.
Технология машинного обучения на основе анализа данных берёт начало в 1950 году, когда начали разрабатывать первые программы для игры в шашки. За прошедшие десятилетий общий принцип не изменился. Зато благодаря взрывному росту вычислительных мощностей компьютеров многократно усложнились закономерности и прогнозы, создаваемые ими, и расширился круг проблем и задач, решаемых с использованием машинного обучения.
Чтобы запустить процесс машинного обучение, для начала необходимо загрузить в компьютер Датасет(некоторое количество исходных данных), на которых алгоритм будет учиться обрабатывать запросы. Например, могут быть фотографии собак и котов, на которых уже есть метки, обозначающие к кому они относятся. После процесса обучения, программа уже сама сможет распознавать собак и котов на новых изображениях без содержания меток. Процесс обучения продолжается и после выданных прогнозов, чем больше данных мы проанализировали программой, тем более точно она распознает нужные изображения.
Благодаря машинному обучению компьютеры учатся распознавать на фотографиях и рисунках не только лица, но и пейзажи, предметы, текст и цифры. Что касается текста, то и здесь не обойтись без машинного обучения: функция проверки грамматики сейчас присутствует в любом текстовом редакторе и даже в телефонах. Причем учитывается не только написание слов, но и контекст, оттенки смысла и другие тонкие лингвистические аспекты. Более того, уже существует программное обеспечение, способное без участия человека писать новостные статьи (на тему экономики и, к примеру, спорта).
1.2 Типы задач машинного обучения
Все задачи, решаемые с помощью ML, относятся к одной из следующих категорий.
1)Задача регрессии – прогноз на основе выборки объектов с различными признаками. На выходе должно получиться вещественное число (2, 35, 76.454 и др.), к примеру цена квартиры, стоимость ценной бумаги по прошествии полугода, ожидаемый доход магазина на следующий месяц, качество вина при слепом тестировании.
2)Задача классификации – получение категориального ответа на основе набора признаков. Имеет конечное количество ответов (как правило, в формате «да» или «нет»): есть ли на фотографии кот, является ли изображение человеческим лицом, болен ли пациент раком.
3)Задача кластеризации – распределение данных на группы: разделение всех клиентов мобильного оператора по уровню платёжеспособности, отнесение космических объектов к той или иной категории (планета, звёзда, чёрная дыра и т. п.).
4)Задача уменьшения размерности – сведение большого числа признаков к меньшему (обычно 2–3) для удобства их последующей визуализации (например, сжатие данных).
5)Задача выявления аномалий – отделение аномалий от стандартных случаев. На первый взгляд она совпадает с задачей классификации, но есть одно существенное отличие: аномалии – явление редкое, и обучающих примеров, на которых можно натаскать машинно обучающуюся модель на выявление таких объектов, либо исчезающе мало, либо просто нет, поэтому методы классификации здесь не работают. На практике такой задачей является, например, выявление мошеннических действий с банковскими картами.
1.3 Основные виды машинного обучения
Основная масса задач, решаемых при помощи методов машинного обучения, относится к двум разным видам: обучение с учителем (supervised learning) либо без него (unsupervised learning). Однако этим учителем вовсе не обязательно является сам программист, который стоит над компьютером и контролирует каждое действие в программе. «Учитель» в терминах машинного обучения – это само вмешательство человека в процесс обработки информации. В обоих видах обучения машине предоставляются исходные данные, которые ей предстоит проанализировать и найти закономерности. Различие лишь в том, что при обучении с учителем есть ряд гипотез, которые необходимо опровергнуть или подтвердить. Эту разницу легко понять на примерах.
Машинное обучение с учителем
Предположим, в нашем распоряжении оказались сведения о десяти тысячах московских квартир: площадь, этаж, район, наличие или отсутствие парковки у дома, расстояние от метро, цена квартиры и т. п. Нам необходимо создать модель, предсказывающую рыночную стоимость квартиры по её параметрам. Это идеальный пример машинного обучения с учителем: у нас есть исходные данные (количество квартир и их свойства, которые называются признаками) и готовый ответ по каждой из квартир – её стоимость. Программе предстоит решить задачу регрессии.
Ещё пример из практики: подтвердить или опровергнуть наличие рака у пациента, зная все его медицинские показатели. Выяснить, является ли входящее письмо спамом, проанализировав его текст. Это всё задачи на классификацию.
Машинное обучение без учителя
В случае обучения без учителя, когда готовых «правильных ответов» системе не предоставлено, всё обстоит ещё интереснее. Например, у нас есть информация о весе и росте какого-то количества людей, и эти данные нужно распределить по трём группам, для каждой из которых предстоит пошить рубашки подходящих размеров. Это задача кластеризации. В этом случае предстоит разделить все данные на 3 кластера (но, как правило, такого строгого и единственно возможного деления нет).
Если взять другую ситуацию, когда каждый из объектов в выборке обладает сотней различных признаков, то основной трудностью будет графическое отображение такой выборки. Поэтому количество признаков уменьшают до двух или трёх, и становится возможным визуализировать их на плоскости или в 3D. Это – задача уменьшения размерности.
1.4 Основные алгоритмы моделей машинного обучения
1. Дерево принятия решений
Это метод поддержки принятия решений, основанный на использовании древовидного графа: модели принятия решений, которая учитывает их потенциальные последствия (с расчётом вероятности наступления того или иного события), эффективность, ресурсозатратность.
Для бизнес-процессов это дерево складывается из минимального числа вопросов, предполагающих однозначный ответ — «да» или «нет». Последовательно дав ответы на все эти вопросы, мы приходим к правильному выбору. Методологические преимущества дерева принятия решений – в том, что оно структурирует и систематизирует проблему, а итоговое решение принимается на основе логических выводов.
2. Наивная байесовская классификация
Наивные байесовские классификаторы относятся к семейству простых вероятностных классификаторов и берут начало из теоремы Байеса, которая применительно к данному случаю рассматривает функции как независимые (это называется строгим, или наивным, предположением). На практике используется в следующих областях машинного обучения:
- определение спама, приходящего на электронную почту;
- автоматическая привязка новостных статей к тематическим рубрикам;
- выявление эмоциональной окраски текста;
- распознавание лиц и других паттернов на изображениях.
Всем, кто хоть немного изучал статистику, знакомо понятие линейной регрессии. К вариантам её реализации относятся и наименьшие квадраты. Обычно с помощью линейной регрессии решают задачи по подгонке прямой, которая проходит через множество точек. Вот как это делается с помощью метода наименьших квадратов: провести прямую, измерить расстояние от неё до каждой из точек (точки и линию соединяют вертикальными отрезками), получившуюся сумму перенести наверх. В результате та кривая, в которой сумма расстояний будет наименьшей, и есть искомая (эта линия пройдёт через точки с нормально распределённым отклонением от истинного значения).
Линейная функция обычно используется при подборе данных для машинного обучения, а метод наименьших квадратов – для сведения к минимуму погрешностей путем создания метрики ошибок.
4. Логистическая регрессия
Логистическая регрессия – это способ определения зависимости между переменными, одна из которых категориально зависима, а другие независимы. Для этого применяется логистическая функция (аккумулятивное логистическое распределение). Практическое значение логистической регрессии заключается в том, что она является мощным статистическим методом предсказания событий, который включает в себя одну или несколько независимых переменных. Это востребовано в следующих ситуациях:
- кредитный скоринг;
- замеры успешности проводимых рекламных кампаний;
- прогноз прибыли с определённого товара;
- оценка вероятности землетрясения в конкретную дату.
Это целый набор алгоритмов, необходимых для решения задач на классификацию и регрессионный анализ. Исходя из того что объект, находящийся в N-мерном пространстве, относится к одному из двух классов, метод опорных векторов строит гиперплоскость с мерностью (N – 1), чтобы все объекты оказались в одной из двух групп. На бумаге это можно изобразить так: есть точки двух разных видов, и их можно линейно разделить. Кроме сепарации точек, данный метод генерирует гиперплоскость таким образом, чтобы она была максимально удалена от самой близкой точки каждой группы.
SVM и его модификации помогают решать такие сложные задачи машинного обучения, как сплайсинг ДНК, определение пола человека по фотографии, вывод рекламных баннеров на сайты.
6. Метод ансамблей
Он базируется на алгоритмах машинного обучения, генерирующих множество классификаторов и разделяющих все объекты из вновь поступающих данных на основе их усреднения или итогов голосования. Изначально метод ансамблей был частным случаем байесовского усреднения, но затем усложнился и оброс дополнительными алгоритмами:
- бустинг (boosting) – преобразует слабые модели в сильные посредством формирования ансамбля классификаторов (с математической точки зрения это является улучшающим пересечением);
- бэггинг (bagging) – собирает усложнённые классификаторы, при этом параллельно обучая базовые (улучшающее объединение);
- корректирование ошибок выходного кодирования.
- он сводит к минимуму влияние случайностей, усредняя ошибки каждого базового классификатора;
- уменьшает дисперсию, поскольку несколько разных моделей, исходящих из разных гипотез, имеют больше шансов прийти к правильному результату, чем одна отдельно взятая;
- исключает выход за рамки множества: если агрегированная гипотеза оказывается вне множества базовых гипотез, то на этапе формирования комбинированной гипотезы оно расширяется при помощи того или иного способа, и гипотеза уже входит в него.
Кластеризация заключается в распределении множества объектов по категориям так, чтобы в каждой категории – кластере – оказались наиболее схожие между собой элементы.
Кластеризировать объекты можно по разным алгоритмам. Чаще всего используют следующие:
- на основе центра тяжести треугольника;
- на базе подключения;
- сокращения размерности;
- плотности (основанные на пространственной кластеризации);
- вероятностные;
- машинное обучение, в том числе нейронные сети.
8. Метод главных компонент (PCA)
Метод главных компонент, или PCA, представляет собой статистическую операцию по ортогональному преобразованию, которая имеет своей целью перевод наблюдений за переменными, которые могут быть как-то взаимосвязаны между собой, в набор главных компонент – значений, которые линейно не коррелированы.
Практические задачи, в которых применяется PCA, – визуализация и большинство процедур сжатия, упрощения, минимизации данных для того, чтобы облегчить процесс обучения. Однако метод главных компонент не годится для ситуаций, когда исходные данные слабо упорядочены (то есть все компоненты метода характеризуются высокой дисперсией). Так что его применимость определяется тем, насколько хорошо изучена и описана предметная область.
9. Сингулярное разложение
В линейной алгебре сингулярное разложение, или SVD, определяется как разложение прямоугольной матрицы, состоящей из комплексных или вещественных чисел. Так, матрицу M размерностью [m*n] можно разложить таким образом, что M = UΣV, где U и V будут унитарными матрицами, а Σ – диагональной.
Одним из частных случаев сингулярного разложения является метод главных компонент. Самые первые технологии компьютерного зрения разрабатывались на основе SVD и PCA и работали следующим образом: вначале лица (или другие паттерны, которые предстояло найти) представляли в виде суммы базисных компонент, затем уменьшали их размерность, после чего производили их сопоставление с изображениями из выборки. Современные алгоритмы сингулярного разложения в машинном обучении, конечно, значительно сложнее и изощрённее, чем их предшественники, но суть их в целом нем изменилась.
10. Анализ независимых компонент (ICA)
Это один из статистических методов, который выявляет скрытые факторы, оказывающие влияние на случайные величины, сигналы и пр. ICA формирует порождающую модель для баз многофакторных данных. Переменные в модели содержат некоторые скрытые переменные, причем нет никакой информации о правилах их смешивания. Эти скрытые переменные являются независимыми компонентами выборки и считаются негауссовскими сигналами.
В отличие от анализа главных компонент, который связан с данным методом, анализ независимых компонент более эффективен, особенно в тех случаях, когда классические подходы оказываются бессильны. Он обнаруживает скрытые причины явлений и благодаря этому нашёл широкое применение в самых различных областях – от астрономии и медицины до распознавания речи, автоматического тестирования и анализа динамики финансовых показателей.
1.5 Примеры применения в реальной жизни
Пример 1. Диагностика заболеваний
Пациенты в данном случае являются объектами, а признаками – все наблюдающиеся у них симптомы, анамнез, результаты анализов, уже предпринятые лечебные меры (фактически вся история болезни, формализованная и разбитая на отдельные критерии). Некоторые признаки – пол, наличие или отсутствие головной боли, кашля, сыпи и иные – рассматриваются как бинарные. Оценка тяжести состояния (крайне тяжёлое, средней тяжести и др.) является порядковым признаком, а многие другие – количественными: объём лекарственного препарата, уровень гемоглобина в крови, показатели артериального давления и пульса, возраст, вес. Собрав информацию о состоянии пациента, содержащую много таких признаков, можно загрузить её в компьютер и с помощью программы, способной к машинному обучению, решить следующие задачи:
- провести дифференциальную диагностику (определение вида заболевания);
- выбрать наиболее оптимальную стратегию лечения;
- спрогнозировать развитие болезни, её длительность и исход;
- просчитать риск возможных осложнений;
- выявить синдромы – наборы симптомов, сопутствующие данному заболеванию или нарушению.
Пример 2. Поиск мест залегания полезных ископаемых
В роли признаков здесь выступают сведения, добытые при помощи геологической разведки: наличие на территории местности каких-либо пород (и это будет признаком бинарного типа), их физические и химические свойства (которые раскладываются на ряд количественных и качественных признаков).
Для обучающей выборки берутся 2 вида прецедентов: районы, где точно присутствуют месторождения полезных ископаемых, и районы с похожими характеристиками, где эти ископаемые не были обнаружены. Но добыча редких полезных ископаемых имеет свою специфику: во многих случаях количество признаков значительно превышает число объектов, и методы традиционной статистики плохо подходят для таких ситуаций. Поэтому при машинном обучении акцент делается на обнаружение закономерностей в уже собранном массиве данных. Для этого определяются небольшие и наиболее информативные совокупности признаков, которые максимально показательны для ответа на вопрос исследования – есть в указанной местности то или иное ископаемое или нет. Можно провести аналогию с медициной: у месторождений тоже можно выявить свои синдромы. Ценность применения машинного обучения в этой области заключается в том, что полученные результаты не только носят практический характер, но и представляют серьёзный научный интерес для геологов и геофизиков.
Пример 3. Оценка надёжности и платёжеспособности кандидатов на получение кредитов
С этой задачей ежедневно сталкиваются все банки, занимающиеся выдачей кредитов. Необходимость в автоматизации этого процесса назрела давно, ещё в 1960–1970-е годы, когда в США и других странах начался бум кредитных карт.
Лица, запрашивающие у банка заём, – это объекты, а вот признаки будут отличаться в зависимости от того, физическое это лицо или юридическое. Признаковое описание частного лица, претендующего на кредит, формируется на основе данных анкеты, которую оно заполняет. Затем анкета дополняется некоторыми другими сведениями о потенциальном клиенте, которые банк получает по своим каналам. Часть из них относятся к бинарным признакам (пол, наличие телефонного номера), другие — к порядковым (образование, должность), большинство же являются количественными (величина займа, общая сумма задолженностей по другим банкам, возраст, количество членов семьи, доход, трудовой стаж) или номинальными (имя, название фирмы-работодателя, профессия, адрес).
Для машинного обучения составляется выборка, в которую входят кредитополучатели, чья кредитная история известна. Все заёмщики делятся на классы, в простейшем случае их 2 – «хорошие» заёмщики и «плохие», и положительное решение о выдаче кредита принимается только в пользу «хороших».
Более сложный алгоритм машинного обучения, называемый кредитным скорингом, предусматривает начисление каждому заёмщику условных баллов за каждый признак, и решение о предоставлении кредита будет зависеть от суммы набранных баллов. Во время машинного обучения системы кредитного скоринга вначале назначают некоторое количество баллов каждому признаку, а затем определяют условия выдачи займа (срок, процентную ставку и остальные параметры, которые отражаются в кредитном договоре). Но существует также и другой алгоритм обучения системы – на основе прецедентов.
P.S. В следующих статьях мы более подробно рассмотрим алгоритмы создания моделей машинного обучения, включая математическую часть и реализацию на Python.
- Машинное обучение
- Введение в алгоритмы
- Курс по ML
Как построить модель предсказывающую стоимость автомобиля

Data Scientist Был больше месяца назад
По договорённости
28 лет (родился 17 марта 1995)
Москва , готов к переезду , готов к командировкам
Селигерская
полная занятость
Гражданство
Профессиональные навыки
Data Science
Machine Learning
Data Analysis
Scikit-learn
Машинное Обучение
PostgreSQL
Показать контакты
Добавить в избранное
Поделиться
Фото, имя и контакты доступны только авторизованным пользователям
Опыт работы 4 года и 3 месяца
- Октябрь 2021 – январь 2023
- 1 год и 4 месяца
Data scientist, разработчик
Стартап «MEGABOT»
Обязанности:
Достижения: — Стабилизировал доход (уменьшил колебания финансовых показателей дохода) — Автоматизировал процесс проставления исходов (до этого был полуавтомат) — Разработал алгоритм работы с новым подходом — Увеличил выручку на 18% Основные обязанности: — Построение моделей предсказывающих исход события — Разработка новых поведенческих алгоритмов — Сопровождение бота и наблюдение за его исправностью во время работы — Анализ статистики
- Июль 2021 – март 2022
- 9 месяцев
Data Scientist (учебно-проектный опыт)
Яндекс Практикум, Москва
Обязанности:
Окончил курс «Data Science» в Яндекс Практикум. За время обучения выполнил проекты для различных сфер деятельности (банки, мобильный оператор, металлургические компании, нефтяные компании, классификация текстов и фото) Решил задачи классификации, регрессии, кластеризации, A/B-тестирование, компьютерное зрение. Примеры нескольких проектов: 1.Телеком. Отток клиентов. Используемый технологический стек: NumPy, Pandas, Sklearn, MatPlotLib, AUC-ROC, Seaborn, Scipy, phik, LGBMClassifier, GradientBoostingClassifier, CatBoostClassifier. Цель проекта: Определить, какие факторы способствуют уходу клиента (какие клиенты планируют уходить), и на их основании создать модель прогнозирования оттока клиентов Выявили модель с лучшей метрикой ROC-AUC на тестовой модели: 0.9274. F1 на тестовой модели: 0.7476, что говорит о высокой точности модели https://clck.ru/33vTMj 2. Защита персональных данных клиентов. Используемый технологический стек: NumPy, Pandas, Sklearn, MatPlotLib, Seaborn. В ходе работы были разработаны несколько методов кодирования данных таким способом, что при попадании в руки злоумышленника, он никак не смог бы ими воспользоваться. После преобразования на этих данных была обучена модель линейной регрессии и её метрика R2 осталась на том, что уровне, что и до кодирования. https://clck.ru/33hBBh 3. Прогнозирование цены на автомобиль. Используемый технологический стек: NumPy, Pandas, Sklearn, MatPlotLib, Seaborn, Градиентный бустинг, CatBoostRegressor, LGBMRegressor, XGBoost, Bagging. На основание исторических данных построил модель определяющую рыночную цену на подержанный автомобиль для онлайн сервиса по продаже автомобилей. Хорошее качество модели также подтверждает и RMSE 1478.16 на тестовой выборке https://clck.ru/33hBJ7 4.Прогнозирование коэффициентов восстановления золота из золотосодержащей руды. Российская компания, занимающаяся цифровизацией производства, разрабатывает решения для эффективной работы золотодобывающей отрасли, помогающие оптимизировать производство, чтобы не запускать предприятие с убыточными характеристиками. • Проанализированы технологические процессы и этапы восстановления золота из руды. • Проведен анализ полученных данных и последующая предобработка. • При решении задачи введена новая метрика и достигнута её высокая точность. • Все выводы и предложения подкреплены подробным описанием и графиками. https://clck.ru/33hBFz
- Июнь 2019 – июль 2021
- 2 года и 2 месяца
Специалист по массажу
Клиника Ренью, Москва
Обязанности:
— Консультирование и подбор программы для клиента — Выполнение услуг ручного и аппаратного массажа
- Сентябрь 2018 – март 2019
- 7 месяцев
Специалист по таможенным операциям
Армадакомп (уполномоченный экономический оператор), Москва
ВЭД, таможенное оформление
Обязанности:
— Декларирование товара по ТН ВЭД (программа «Альта-ГТД») — Ведение груза от фабрики в Китае до склада в СПб или Мск
Machine Learning и оценка недвижимости
Машинное обучение — как секс в старших классах. Все говорят о нем по углам, единицы понимают, а занимается только препод.
Плюс заголовки новостей создают нездоровый ажиотаж вокруг “искусственного интеллекта”, будто бы роботы научились думать и вот-вот отберут у всех работу. На деле думать приходится людям, а вся магия — это программный код, циферки и алгоритмы, находящие зависимости между ними.
Давайте разберемся, как это работает на примере вторичного рынка квартир. Да, рынок специфический, половина объявлений — фейки и нелепые фантазии продавцов, не готовых к сделке. Но это данные, на которых можно понять принципы и идти дальше.
Программисты в качестве примитивного упражнения пишут код, печатающий “Hello World!”, а мы будем строить модель, предсказывающую цены квартир в Москве. Окей, предсказывающую цены предложений по параметрам жилья, такая формулировка честнее.
О чем вообще речь?
Основная идея машинного обучения — скормить некоему алгоритму много-много данных, чтобы он вычислил закономерности, запомнил их и смог предсказывать результат по новым входным данным, которых раньше не видел.
Частые задачи для таких алгоритмов:
- классификация —например, разделение грибов по классам съедобный/ядовитый на основании цвета, формы шляпки, наличия юбки и т.п.;
- регрессия — как раз наша тема, вычисление цены предложения квартиры, исходя из площади, местоположения, местоположения и местоположения));
- кластеризация, это когда алгоритм растаскивает данные по группам, самостоятельно находя признаки, по которым их можно сгруппировать;
- поиск аномалий — к примеру, снимая телеметрию со станка, можно засечь проблему до того, как условный шпиндель выйдет из строя. При этом программа сама сообразит, что поток данных стал отличаться от обычного;
- всякие сложные штуки вроде компьютерного зрения — когда машина отделяет на изображениях котиков от собачек. Это больше всего тянет на магию, но важно помнить, что для алгоритма файл с фотографией это тоже цифры — значения яркости и цвета пикселей по всей площади картинки. От этого можно плясать дальше, находя типичные для котиков сочетания линий, острых углов ушей и все в таком духе.
Большая часть математики, на которой это работает, была написана лет 60–70 назад, но сейчас тема выстрелила по двум основным причинам: бизнес стал накапливать данные и у нас появились мощные компы (и видеокарты, на которых можно распараллелить вычисления, чтобы не ждать неделями, пока обучится модель).
Для погружения в тему советую сайт kaggle.com, на котором проходят соревнования по ML. Там команды бьются за сотые доли процента качества моделей, чтобы забрать денежный приз от организатора, задающего тему исследования и публикующего свои реальные данные.
К примеру, три года назад Сбербанк устраивал конкурс по предсказанию цен на ипотечные квартиры: https://www.kaggle.com/c/sberbank-russian-housing-market, больше 3 000 команд боролись за приз в 25 000 долларов. А здесь победитель целый час рассказывает, как шел к успеху: https://www.youtube.com/watch?v=Eo4WMlcT7uo.
Единственное, надо помнить, что ML в реальных проектах отличается от соревнований примерно так же, как конвейер для серийных Фольксвагенов от гаража Формулы-1, настраивающего болид для конкретной трассы. Зато на Кэггле подробно разбирают решения и публикуют примеры кода, полезно посмотреть как задачу решали более умные ребята.
Матчасть
Сразу оговорюсь, в статье речь только про “обучение с учителем”. Это ситуация, когда алгоритм смотрит на данные, заранее размеченные человеком. В них указано — квартира с такими-то параметрами выставлена на Циане за 7 млн, а с такими-то и на другой улице за 7 с половиной. Чем больше примеров, тем лучше и точнее обучится алгоритм.
Чтобы оценить качество предсказаний модели, данные (датасет) случайным образом делят на обучающую и тестовую выборки. Обычно в соотношении 70/30, чтобы сохранить часть примеров в тайне от алгоритма. Модель учится на первой выборке, сопоставляя параметры квартир и их цены. Затем скармливаем ей характеристики квартир из тестовой выборки (но цены из тестовой не показываем, она попытается угадать их сама). Последним действием вычисляем ошибку, грубо говоря, насколько предсказанная стоимость отклонилась от фактической.
Метрики качества нужны, чтобы сравнивать модели между собой и понимать, насколько хорошо модель описывает реальность. Для своих исследований я использовал две метрики:
- Средняя абсолютная процентная ошибка (MAPE)— показывает среднее арифметическое значение всех абсолютных (взятых по модулю) процентных ошибок прогноза (Ф — фактическое значение стоимости, П — прогнозное значение стоимости). Рассчитывается по формуле:
- Медианная абсолютная процентная ошибка (MedAPE)— та же идея вычисления абсолютной процентной ошибки, но вместо среднего арифметического берем более устойчивую к выбросам медиану. Именно своей MedAPE в районе 2% хвастается сайт https://www.zillow.com/, построивший одну из самых точных моделей оценки домов в США.
Алгоритмы
Дерево решений (Decision tree) — один из самых известных алгоритмов машинного обучения, хорошо работающий с табличными данными. Его основная идея — последовательно разбивать (сплитить) выборку на все более мелкие части так, чтобы в конце максимально точно разложить примеры по правильным кучкам. Украду у Вастрика хорошую картинку, потому что лучше один раз увидеть:
Картинка про классификацию, но не суть. На каждом узле принятия решений есть некий критерий и два варианта ответа — да или нет. Критерии разбиения могут не всегда выглядеть адекватно для человека, например “Пробег автомобиля больше 56 452 км?”, но можно быть уверенным, что алгоритм на каждом шаге разбивал набор данных максимально эффективно, начиная с самых важных критериев. В итоге пример новых данных можно провести через готовое дерево решений, следуя по нужным развилкам, и получить в конце результат (в нашем случае предсказание цены).
Дерево решений любит переобучаться, то есть, старается делиться все дальше и дальше, доходя до мельчайших подробностей, что приводит к ситуации, когда алгоритм безупречно заучил обучающую выборку, но стал беспомощен на незнакомой тестовой. Чтобы избежать этого, при построении деревьев нарочно ограничивают их глубину и количество возможных сплитов, чтобы алгоритм смог вычленить некую общую закономерность в данных, не углубляясь в частности.
Оказалось, что недостатки деревьев можно обернуть во благо, если собрать из них, так называемый ансамбль, Случайный лес (Random forest). Идея случайного леса в том, что строится сразу много деревьев решений, слабых по отдельности, но сильных своим общим вердиктом (при регрессии предсказанные значения деревьев усредняются, при классификации финальное решение выбирается голосованием). При этом, каждое из слабых деревьев строится только на части датасета. Изобретение случайного леса позволило здорово улучшить качество предсказаний, настолько, что одиночные деревья сейчас фактически не используются.
Следующим шагом в борьбе за качество моделей стал градиентный бустинг, позволяющий делать много циклических заходов с построением деревьев, обращая особое внимание на косяки, совершенные на предыдущем круге, делая “работу над ошибками” и доучивая предыдущую версию модели.
Последние годы на Кэггле почти всегда лидируют решения, построенные на алгоритмах бустинга XGBoost и LightGBM. Кстати, Яндекс разрабатывает открытую библиотеку машинного обучения CatBoost, работающую “из коробки” с категориальными признаками (в отличии от остальных алгоритмов, которые не могут переварить понятия “панель”, “кирпич” и “монолит” в чистом виде, требуя кодировать слова цифрами, CatBoost ест датасет сразу со словами внутри!).
У всех алгоритмов под капотом есть куча настроек, существенно влияющих на результат, но об этом позже.
Небольшие данные
Итак, алгоритму нужны данные. Я не нашел ничего лучше, чем парсить ночами Циан, собирая объявления о продаже квартир на вторичке Москвы за три последних месяца (самые свежие предложения — январь 2020 года).
При очистке данных избавился от дублей, объявлений с одинаковым текстом в описании, от строк с нулевой площадью кухни, без материала стен и этажей в доме. В итоговом датасете примерно
64 000 строк, жить можно!
Придется чуть забежать вперед и рассказать про фичи. Так датасайентисты называют признаки (свойства) примеров из датасета. В нашем примере фичи — это как раз площадь, этаж, материал стен, местоположение, то есть те параметры, по которым будет происходить предсказание. В оценочном обиходе — ценообразующие факторы.
В изначально спарсенном датасете у меня было много фич — все, что смог вытащить с Циана: количество комнат, год постройки, материал стен, этаж квартиры и этажность здания, общая площадь, размер кухни, широта и долгота расположения дома, адрес, округ, тип продажи, возможность ипотеки, лифты в здании.
Погонял модели с полным набором признаков и выяснил, что реальную пользу и повышение точности приносят только те , что выделены жирным. От остальных отказался, хотя интуитивно (и по справочникам оценщиков) год постройки, комнаты и тип продажи (чистая/альтернатива) должны влиять на цену. Но нет, влияние так себе, игнорируем.
Еще есть понятие “фича-инжиниринг”. Это когда мы на основе имеющихся фичей (модные ребята ставят ударение на последний слог) генерируем новые. Я долго колдовал с широтой и долготой, пытаясь сообщить модели нечто важное о местоположении (пресловутый локейшн!), пока не сообразил вычислить два принципиально новых признака: расстояние от центра города и азимут (угол относительно направления на север, в градусах). Бинго! Точность существенно выросла!
Ближе к делу
Код будем писать на языке Python (назван в честь “Летающего цирка Монти Пайтона”, а вовсе не в честь змеи, как можно подумать).
Он легкий и понятный для новичков. Никаких безумных скобок, ручного выделения памяти и строгостей вроде “если эта переменная содержит в себе целое число, то ей нельзя присвоить текстовое значение”. В пайтоне можно! Кроме того, он сейчас де-факто стандарт в сфере анализа данных и для него написана масса библиотек для машинного обучения. Снобы считают пайтон медленным языком (по сравнению с Си, но для наших целей это не критично).
Библиотеки — это расширения возможностей языка. Вместо того, чтобы изобретать велосипеды и писать программу на тысячи строк, можно взять готовый код, сделанный тем, кто решал аналогичную задачу, подключить в свою программу и пользоваться этими наработками.
В процессе будем использовать библиотеки:
- Pandas — это такой эксель для программистов)) мощнейшая работа с табличными данными, их изучение, комбинирование, фильтрация и т.п.;
- Scikit-learn — библиотека, содержащая массу инструментов для машинного обучения, от разбиения датасета на выборки, до построения лесов и вычисления метрик;
- Matplotlib — позволяет строить графики и прочие визуализации;
- Geopy — вычисляет расстояния между географическими точками;
- XGBoost — тот самый алгоритм бустинга, о котором шла речь ранее.
Экспериментировать будем в сервисе Google Colab. Он бесплатен, работает в браузере и дает для расчетов GPU — мощный графический процессор NVIDIA Tesla K80, благодаря которому можно кратно ускорить обучение моделей. И там есть Jupyter Notebook.
Jupyter Notebook — оболочка языка Python в которой можно писать код блоками, запуская их поэтапно. Это не очень годится для полноценного программирования, зато удобно для научных расчетов — блоки кода можно перемежать с текстовыми вставками, графиками и т.п., все на одном листе и наглядно.
Для доступа к Colab нужно иметь логин в Гугле и браузер, ничего устанавливать на компьютер не придется. Перейдите по адресу: https://colab.research.google.com/ и залогиньтесь (синяя кнопка Sign In в правом верхнем углу).
Появится окно с вкладками Example, Recent, Google Drive, GitHub, Upload, выберите GitHub (Если не появилось, используйте меню File >Open notebook). В строку поиска вставьте адрес: https://github.com/maxbobkov/ml_moscow_flats/blob/master/moscow_flats_models.ipynb и нажмите Enter:
Colab найдет ноутбук с заранее подготовленным кодом на гитхабе и останется только кликнуть на надпись moscow_flats_models.ipynb справа от логотипа с котиком (на самом деле это не котик)):
Ноутбук загрузится и будет готов к работе. Единственное, подключите графический ускоритель (GPU), пройдя в меню Edit > Notebook Settings > Hardware accelerator, выберите в выпадающем меню GPU вместо None и нажмите Save. Все готово к экспериментам!
Поехали!
Код в ноутбуке разбит на блоки, будем запускать их по порядку. Для исполнения блока встаньте курсором внутрь кода и нажмите на кнопку с треугольником в белом круге, эдакая команда Play (Или нажмите Ctrl+Enter).
В первый раз система ругнется “Warning: This notebook was not authored by Google.”, жмите RUN ANYWAY. Будь, что будет)) Во время исполнения кнопка приходит в движение, на первых блоках это быстро, когда начнется обучение, придется подождать.
Подключаем библиотеки командой import:
Функции — концепция, фантастически упрощающая программирование. Если один и тот же код нужно использовать многократно, мы не пишем его сто раз, а выносим в функцию, записанную определенным образом с инструкцией def, именем функции и аргументами, которые она получает на вход. Потом в нужном месте ее можно вызвать через ее имя, указав конкретные значения аргументов. Я вынес в функции расчет азимута на основании координат центра города и жилого дома, а также расчет метрик и коэффициента детерминации (знаменитый r-квадрат, который, чем ближе к единице, тем лучше модель описывает реальность).
Запускаем этот фрагмент кода, при этом ничего не произойдет, потому что мы просто сообщили компьютеру, что хотим иметь такие-то функции.
Следущий шаг — загрузка датасета. В код вшит адрес, по которому хранятся данные, программа подтянет их. В дело включается библиотека Pandas, она читает csv-файл и преобразует его в свой собственный формат данных — датафрейм (по сути — таблицу), который мы сохраняем в переменной df.
Последняя строка кода df.head(5) выводит 5 первых строк таблицы, чтобы визуально оценить, какой информацией мы располагаем.
А теперь работаем с датасетом, создавая дополнительные признаки и столбцы: цену 1 квадратного метра квартиры (именно это значение мы будем предсказывать), расстояние от центра города и азимут (обратите внимание, что вызывается функция get_azimuth(), объявленная ранее).
На основании вычисленных расстояний отбираем для работы только те предложения, которые расположены не дальше 40 км от центра Москвы, что как раз покрывает территорию Новой Москвы, но отсекает неадекватные варианты, явно расположенные в области. Округляем значения некоторых столбцов и на выходе видим, что признак wallsMaterial имеет тип object (не является числовым, в отличие от остальных), с этим нужно что-то делать, чтобы модель могла работать с материалом стен.
Мои опыты показали, что качество моделей повышается, если отсечь от датасета выбросы, поэтому жертвуем 3 000 строк, значения которых сильно выбиваются из общей картины.
Заменяем текстовые значения в столбце wallsMaterial числовыми при помощи функции LabelEncoder() библиотеки Scikit-learn, результат ее работы — ниже. В первой строке вывода результатов видно на какое именно число заменен определенный тип стен, это знание пригодится дальше.
Последний шаг подготовки к обучению — выделение целевой переменной, той, которую мы будем предсказывать. Традиционно обозначается через переменную y (игрек) и ей присваивается столбец датафрейма “Цена квадратного метра”.
Затем отбираем фичи, которые будут участвовать в обучении модели и формируем новый датасет X, содержащий столбцы с характеристиками, но не содержащий цен.
В последней строке функция train_test_split() автоматически разбивает X и y на четыре группы — тренировочный Х, валидационный (проверочный) Х, тренировочный y, валидационный y. Это позволит нам проверить качество модели на незнакомых ей данных.
Пора обучить первую модель, основанную на алгоритме случайного леса деревьев решений. Создаем объект RandomForestRegressor (ранее импортированный из библиотеки Scikit-learn) и задаем ему ряд настроек (т.н. гиперпараметров), в частности, количество деревьев: 2000 (рощица)), максимальную глубину дерева: 55 уровней и пр., сохраняем его как rf_model. Опущу способы подбора оптимальных гиперпараметров, чтобы не перегружать материал, но в случае интереса гуглите “RandomizedSearchCV”.
Ноутбук уходит на некоторое время в себя, строит деревья и оптимизирует их. Когда модель обучится (за это отвечает метод fit, который применяется к созданной модели rf_model), метод predict предскажет цены для тестовой выборки квартир (val_X). А созданная нами функция print_metrics() получит на вход предсказанные цены и известные нам заранее “правильные”, и напечатает значения метрик. Неплохой r-квадрат и медианная ошибка! Идем дальше.
Подключаем XGBoost, библиотеку градиентного бустинга, обещающего более высокие результаты, чем простой случайный лес. Идея с созданием и обучением модели здесь точно такая же. Создаем ее с определенными гиперпараметрами, учим, предсказываем, считаем метрики. 5,17%, хм, лучше, но не радикально.
Есть еще один способ попытаться улучшить прогноз — усреднить предсказания моделей. В нашем случае это привело к уменьшению средней ошибки до 7.72% при коэффициенте детерминации 0.82. Медианная ошибка: 5.21%. Что ж, далеко до эталонного zillow.com (немного статистики про точность их моделей: https://www.zillow.com/zestimate/), но терпимо для индикативно-прикидочных целей. Кстати, сам Циан заявляет, что в среднем, цена сделки на 8% ниже цены предложения.
Из интересного — есть способ посмотреть важность признаков при построении случайного леса. К вопросу о локейшене — половину ценной информации для оценки несет на себе расстояние от центра города. Следующий по важности — азимут, что логично, не все направления одинаково полезны. Остальные признаки примерно равнозначны, но тоже сделали свой вклад в точность модели. Для сравнения — отброшенные мной признаки: тип отделки, возраст дома, тип продажи — давали вклад порядка 0.5–1%.
А теперь самое интересное. Попробуем оценить единичную квартиру — двушку в панельном доме, выставленную на Циане за 11 700 000 рублей.
Для этого создаем датафрейм из одной строки, описывающий параметры этой квартиры (широту и долготу можно взять на Яндекс.Картах, а wallsMaterial— это одна из цифр, которыми закодированы типы стен, см. выше по тексту), делаем знакомый нам расчет дополнительных фич, прогнозируем цену предложения по обоим построенным моделям (метод predict для ранее натренированных моделей rf_model и xgb_model), усредняем результат и умножаем на площадь квартиры (мы ведь предсказывали цену метра).
11 683 000 рублей против 11 700 000 в объявлении. Магия)
Спасибо за внимание
Короткая заметка об экспериментах с машинным обучением внезапно превратилась в лонгрид, возможно кто-то даже добрался до этих строк))
Играйте с этим кодом, меняйте гиперпараметры, набор фич для обучения, это затягивает! Только держите в голове, что Colab дает рабочее пространство на время, часов через 12 ноутбук превращается в тыкву и его нужно загружать с гитхаба заново. И если что-то пошло не так, используйте меню Runtime > Restart runtime, чтобы обнулить все расчеты и начать заново с первого блока кода.
Методы, которые я продемонстрировал, пока мало применимы в нашей оценочной практике, потому что Стандарты и проверяющие органы привыкли к эксельке с тремя аналогами. А что делать со строчками кода, которые только что переварили 60 000 аналогов и выплюнули какой-то результат не очень понятно.
Но машинное обучение развивается, его элементы применяют уже не только технологические компании. Алгоритмов много, не хватает данных. Тех же цен сделок, чего далеко ходить.
Коллеги, если у вас накопились какие-то интересные данные, с которыми можно поэкспериментировать, или есть желание копнуть тему глубже, моя почта max.bobkoff@gmail.com, буду рад единомышленникам!
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
ArtyKrafty/ArtyKrafty
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md

Ноутбуки .ipynb и .py скрипты:
- Репозиторий — Проекты Data Science
- Репозиторий — Проекты Data Analyst
- Репозиторий — Алгоритмы и структуры данных
- Репозиторий — Web-приложение для определения цены автомобиля
- Репозиторий — OpenSource. Классы для отбора признаков и обработке DataFrame. PyPI проект
- Репозиторий — Модульная обработка изображений с использованием OpenCV и генераторов Python с помощью Detectron2
- Развертывание Yandex Node
Привет
Отображение некоторых элементов ограничено — рекомендую смотреть проекты через External Viewer
Для удобства, ссылки ведут сразу на данный сервис просмотра. Если нужны исходные файлы — переходи на соответствующий репозиторий
Проекты Data Science. Deep learning
| Проект | Тип исследования | Статус |
|---|---|---|
| 01. Компьютерное зрение. Регрессия | Необходимо построить модель, которая по фотографии определит приблизительный возраст человека. В нашем распоряжении набор фотографий людей с указанием возраста | Завершен |
| 02. Обучение нейронных сетей. DLS | Полный цикл обучения ANN, CNN на pyTorch | Завершен |
| 03. Компьютерное зрение. Сегментация | Реализация архитектур нейронных сетей для задач сегментации, pyTorch | Завершен |
| 04. Компьютерное зрение. Автоэнкодеры | Реализация архитектур нейронных сетей автокодировщиков, pyTorch | Завершен |
| 05. Компьютерное зрение. GAN | Реализация архитектур нейронных сетей GAN, pyTorch | Завершен |
| 06. Simpsons классификация. CNN | Классификация. Компьютерное зрение | Завершен |
| 07. Модуль детекции объектов | Детекция, сегментация на кастомном сете данных, создание приложения | Завершен |
Проекты Data Science. Deep learning и NLP
| Проект | Тип исследования | Статус |
|---|---|---|
| 01. NLP. Классификация тональности текста | Необходимо обучить модель классифицировать комментарии на позитивные и негативные | Завершен |
| 02. NLP. Простые эмбеддинги | реализация простых эмбеддингов, word2vec, ранжирование, pyTorch | Завершен |
| 03. NLP. Эмбеддинги | реализация эмбеддингов с применением SVD, word2vec, классификация, pyTorch | Завершен |
| 04. NLP. Классификация | реализация различных подходов к классификации текстов, RNN, CNN, pyTorch | Завершен |
| 05. NLP. Языковые модели | реализация различных подходов к определению POS, pyTorch | Завершен |
| 06. NLP. Seq2Seq with attention | реализация seq2seq модели с аттеншн | Завершен |
| 07. NLP. BERT | работа с трансформерами. BERT | Завершен |
| 08. NLP. GPT2 | работа с трансформерами. GPT2 | Завершен |
| 09. NLP. Summarization | работа с с архитектурами для суммаризации текста | Завершен |
| 10. NLP. Audio processing | работа со звуком, классификация и регрессия | Завершен |
| 11. NLP/CV. Image Captioning | работа с задачей Image Captioning | Завершен |
Проекты Data Science. Классический ML
| Проект | Тип исследования | Статус |
|---|---|---|
| 01. Рекомендация тарифов | В нашем распоряжении данные о поведении клиентов, которые уже перешли на эти тарифы. Нужно построить модель для задачи классификации, которая выберет подходящий тариф.Необходимо построить модель с максимально большим значением accuracy | Завершен |
| 02. Прогнозирование оттока клиентов банка | Необходимо спрогонозировать, уйдет ли клиент в ближайшее время или нет. | Завершен |
| 03. Прогнозирование прибыли от нефтяных скважин | Моделирование прогнозов (регрессия) | Завершен |
| 04. Предсказание коэффициента восстановления золота из золотосодержащей руды | Машинное обучение, предобработка данных, визуализация, проверка гипотез. Построение модели для промышленной компании | Завершен |
| 05. Аппроксимация и оптимизация | Изучение методом аппроксимации и оптимизации функций, численные методы | Завершен |
| 06. Защита персональных данных клиентов страховой компании | Необходимо защитить персональные данные клиентов страховой компании. Разработать такой метод преобразования данных, чтобы по ним было тяжело восстановить исходную информацию и при этом не менялось качество линейной регрессии. | Завершен |
| 07. Предсказания цены автомобиля | Необходимо построить и сравнить несколько моделей для определения стоимости автомобиля | Завершен |
| 08. SMA стратегия Forex | Работа с временными рядами, реализация торговой стратегии | Завершен |
| 09. Прогнозирование количества заказов такси | Работа с временными рядами, Необходимо построить модель для прогнозирования количества заказов такси. | Завершен |
| 10. Аналитика в авиакомпании | Понять предпочтения пользователей, покупающих билеты на рейсы в города, где проходят крупнейшие фестивали | Завершен |
| 11. OOП в линейных моделях | ООП в линейных моделях | Завершен |
| 12. Исследование оттока клиентов телеком компании | Дипломный проект. Дисбаланс классов, классификация бинарная | Завершен |
| 13. Web-приложение — Предсказание цены автомобиля | Приложение с API. Flask, html, css, python | Завершен |
| 14. Предсказание дефолта клиентов банка | Предсказание дефолта с помощью инструментов МЛ, pipiline обработки для продакшн | Завершен |
| 15. Предсказание температуры и углерода в процессе продувки | Предсказание двух целевых переменных в задаче регрессии с помощью инструментов МЛ, pipiline обработки для продакшн, борьба с различным распределением целевой переменной | Завершен |
| 16. Прогнозирование востребования банковской гарантии | Построить аппликационную модель оценки вероятности предъявления по гарантии, чтобы минимизировать потери от кредитного риска | Завершен |
| 17. Решение задачи регрессии SparkML | Построить пайплайн обработки данных с помощью средств SparkML | Завершен |
Проекты Data Analyst
| Проект | Тип исследования | Статус |
|---|---|---|
| 01. Исследование объявлений о продаже квартир | Исследовательский анализ данных Необходимо определить параметры, оказывающие наибольшее влияние на оценку стоимости недвижимости. | Завершен |
| 02. Определение перспективного тарифа для телеком компании | Статистический анализ данных Необходимо проанализировать активность клиентов в разрезе тарифов, и определить более перспективный тариф для маркетинговой кампании. | Завершен |
| 03. Исследование надёжности заёмщиков | Предобработка и очистка данных. Кредитный отдел банка запросил исследовать, какие факторы влияют на надёжность заёмщика. Необходимо предоставить портрет надёжного заемщика. | Завершен |
| 04. Прогноз продаж в интернет-магазине | Исследовательский и статистический анализ Необходимо выявить определяющие успешность игры закономерности и для каждого из трех регионов (NA, Europe, JP) выбрать игры для рекламных кампаний. | Завершен |
| 05. Исследование продаж авиабилетов | Понять предпочтения пользователей, покупающих билеты на рейсы в города, где проходят крупнейшие фестивали | Завершен |
| 06. Анализ бизнес показателей сервиса Афиша | Выявить убыточные источника траффика. Когортный анализ | Завершен |
| 07. Принятие решений в бизнесе на основе данных | Приоритизировать гипотезы, А/В тестирование | Завершен |
| 08. Рынок заведений общественного питания Москвы | Исследовать различные форматы точек общественного питания | Завершен |
| 09. Исследование поведения пользователей приложения | Изучить воронку продаж. Проанализировать результаты ААВ теста | Завершен |
| 10. Автоматизация и подготовка dashboards | автоматизировать загрузку данных в БД, построить dashboard | Завершен |
| 11. Прогнозирование оттока клиентов фитнес-центра | Кластеризация, машинное обучение | Завершен |
| 12. Телеком. Поиск клиента с неоптимальными тарифами | Исследовательский анализ данных. Статистический анализ данных. Поиск закономерностей и разработка методов оптимизации | Завершен |
| Проект | Тип исследования | Статус |
|---|---|---|
| 01. Titanic competition | Машинное обучение. Задача классификации и оптимизации | Завершен |
| 02. Montecarlo | Визуализация ЦПТ и закона больших чисел | Завершен |
| 03. Heart attack analysis and prediction | Построение модели, предсказывающий сердечный приступ у пациента | Завершен |
| 04. Video games EDA | Исследовательский анализ продаж игр на различных платформах | Завершен |
| 05. Client churn from bank | Машинное обучение. Построение модели машинного обучения. Задача классификации | Завершен |
| 06. Video games with score | Исследовательский анализ продаж игр на различных платформах и рейтинга | Завершен |
| 07. Cleaned Toxic Comments | NLP, построение модели машинного обучения для предсказаания токсичности текстов | Завершен |
| 08. ML Contest | Наработки за время прохождения соревнований 30days of ML. Baseline | Завершен |
| 09. Digits recognation | Распознавание цифр. MNIST, Keras CNN, Tensorflow | Завершен |
| 10. LastFM recommendation system | Простая рекомендательная система | Завершен |
| 11. Telco Customer Churn | Предсказать отток клиентов | Завершен |

Notebooks .ipynb and .py scripts:
- Repository — Data Science projects
- Repository — Data Analyst projects
- Repository — Algorithms and data structures
- Repository — Web application for determining the price of a car
- Repository — OpenSource. Classes for feature selection and DataFrame processing. PyPI project
- Repository — Modular image processing using OpenCV and Python generators with Detectron2
- Yandex Node Deployment
Hey
The display of some elements is limited — I recommend watching projects through External Viewer For convenience, links lead directly to this viewing service. If you need source files, go to the appropriate repository
Data Science projects. Deep learning
| Project | Type of research | Status |
|---|---|---|
| 01. Computer vision. Regression | It is necessary to build a model that will determine the approximate age of a person from a photograph. We have at our disposal a set of photographs of people with the indication of age | Completed |
| 02. Training of neural networks. DLS | Full training ANN, CNN on pyTorch | Completed |
| 03. Computer vision. Segmentation | Implementing neural network architectures for segmentation tasks, pyTorch | Completed |
| 04. Computer vision. Autoencoders | Implementing autoencoder neural network architectures, pyTorch | Completed |
| 05. Computer vision. GAN | Implementing neural network architectures GAN, pyTorch | Completed |
| 06. Simpsons classification. CNN | Classification. Computer Vision | Completed |
| 07. Object detection module | Detection, segmentation on custom data network, application creation | Completed |
Data Science projects. Deep learning and NLP
| Project | Type of research | Status |
|---|---|---|
| 01. NLP. Classification of the sentiment of the text | It is necessary to train the model to classify comments into positive and negative | Completed |
| 02. NLP. Simple embeddings | implementation of simple embeddings, word2vec, ranking, pyTorch | Completed |
| 03. NLP. Embeddings | implementation of embeddings with SVD, word2vec, classification, pyTorch | Completed |
| 04. NLP. Classification | implementation of different attempts for text classification, RNN, CNN, pyTorch | Completed |
| 05. NLP. Language models | POS-tagging | Completed |
| 06. NLP. Seq2Seq with attention | seq2seq model, LSTM, torch | Completed |
| 07. NLP. BERT | Transformers. BERT | Completed |
| 08. NLP. GPT | Transformers. GPT2 | Completed |
| 09. NLP. Summarization | Summarunner | Completed |
| 10. NLP. Audio processing | audio classification | Completed |
| 11. NLP/CV. Image Captioning | Image Captioning | Completed |
Data Science projects. Classic ML
| Project | Type of research | Status |
|---|---|---|
| 01. Tariff recommendation | We have at our disposal data on the behavior of customers who have already switched to these tariffs. It is necessary to build a model for the classification problem, which will select a suitable tariff. It is necessary to build a model with the highest possible accuracy | Completed |
| 02. Forecasting the churn of bank customers | It is necessary to predict whether the client will leave in the near future or not | Completed |
| 03. Forecasting profit from oil wells | Modeling Forecasts (Regression) | Completed |
| 04. Predicting the recovery rate of gold from gold ore | Machine learning, data preprocessing, visualization, hypothesis testing. Building a model for an industrial company | Completed |
| 05. Approximation and Optimization | Studying by the method of approximation and optimization of functions, numerical methods | Completed |
| 06. Protection of personal data of clients of the insurance company | It is necessary to protect the personal data of the clients of the insurance company. To develop such a method of data transformation so that it would be difficult to restore the original information based on them and at the same time did not change the quality of linear regression. | Completed |
| 07. Car price predictions | Multiple Models To Be Build And Compare To Determine The Value Of A Car | Completed |
| 08. SMA strategy Forex | Working with Time Series, Implementing a Trading Strategy | Completed |
| 09. Forecasting the number of taxi orders | Working with time series, It is necessary to build a model to predict the number of taxi orders. | Completed |
| 10.Analytics in the air company | Understand the preferences of users who buy tickets for flights to cities where major festivals take place | Completed |
| 11. OOP in linear models | OOP in linear models | Completed |
| 12. Research of the churn of clients of a telecom company | Graduation project. Class imbalance, binary classification | Completed |
| 13. Web Application — Car Price Prediction | Application with API. Flask, html, css, python | Completed |
| 14. Predicting default of bank clients | Default prediction using ML tools, pipiline processing for production | Completed |
| 15. Predicting temperature and carbon during purging | Predicting two target variables in a regression problem using ML tools, pipiline processing for production, dealing with different target variable distributions | Completed |
| 16. Forecasting the demand for a bank guarantee | Build an application model for assessing the probability of presentation under a guarantee in order to minimize losses from credit risk | Completed |
| 17. Regression task with SparkML | Build pipeline of prediction and validation with SparkML | Completed |
Data Analyst projects
| Project | Type of research | Status |
|---|---|---|
| 01. Research of apartments for sale | Exploratory data analysis It is necessary to identify the parameters that have the greatest impact on the valuation of real estate. | Completed |
| 02. Determination of a promising tariff for a telecom company | Statistical analysis of data It is necessary to analyze the activity of customers in the context of tariffs, and determine a more promising tariff for a marketing campaign. | Completed |
| 03. Borrower Reliability Study | Data preprocessing and cleaning. The credit department of the bank requested to investigate what factors affect the reliability of the borrower. It is necessary to provide a portrait of a reliable borrower. | Completed |
| 04. Online store sales forecast | Research and statistical analysis It is necessary to identify the regularities that determine the success of the game and select games for advertising campaigns for each of the three regions (NA, Europe, JP). | Completed |
| 05. Air ticket sales research | Understand the preferences of users who buy tickets for flights to cities where major festivals take place | Completed |
| 06.Analysis of business indicators of the Afisha service | Identify unprofitable traffic sources. Cohort Analysis | Completed |
| 07. Data-Driven Business Decision Making | Prioritize hypotheses, A / B testing | Completed |
| 08. Moscow catering establishments market | Explore different formats of food service outlets | Completed |
| 09. Researching the behavior of users of the application | Explore the sales funnel. Analyze AAV test results | Completed |
| 10. Automation and provisioning dashboards | automate data loading into the database, build a dashboard | Completed |
| 11. Fitness center customer churn forecasting | Clustering, Machine Learning | Completed |
| 12. Telecom. Finding a client with suboptimal rates | Exploratory data analysis. Statistical data analysis. Finding patterns and developing optimization methods | Completed |
| Project | Type of research | Status |
|---|---|---|
| 01. Titanic competition | Machine learning. Classification and Optimization Problem | Completed |
| 02. Montecarlo | Visualization of the CLT and the law of large numbers | Completed |
| 03. Heart attack analysis and prediction | Building a Model Predicting a Patient’s Heart Attack | Completed |
| 04. Video games EDA | Research Analysis of Game Sales on Various Platforms | Completed |
| 05. Client churn from bank | Machine learning. Building a machine learning model. Classification Task | Completed |
| 06. Video games with score | Research Analysis of Game Sales on Various Platforms and Rankings | Completed |
| 07. Cleaned Toxic Comments | NLP, Building a Machine Learning Model to Predict Text Toxicity | Completed |
| 08. ML Contest | Operating time during the competition 30days of ML. Baseline | Completed |
| 09. Digits recognation | Recognition of numbers. MNIST, Keras CNN, Tensorflow | Completed |
| 10. LastFM recommendation system | Simple recommendation system | Completed |
| 11. Telco Customer Churn | Predict Customer Churn | Completed |