Как создать модель с искусственным интеллектом

ruticker 12.01.2025 16:34:46

 

Создать модели с искусственным интеллектом проще, чем вы думаете! Как освоить искусственный интеллект с нуля и создать свою модель, расскажу в этом ролике. Меня зовут Настя, давайте разбираться.

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

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

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

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

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

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

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

Вот я сказала, что вам необходимо программирование, а опять же всплывает вопрос: а какие инструменты, какие, может быть, языки программирования вам для этого необходимы? Ну, чаще всего, и, конечно же, используют для этих целей Python — популярный язык. Его используют доценты, это те люди, которые занимаются машинным обучением и искусственным интеллектом, доценты ML инженеры. Ещё, как правило, под Python уже написано огромное количество библиотек. А в особенности такие библиотеки, популярные как Pandas, и очень популярная библиотека для нейронных сетей — это PyTorch.

Если говорить про какие-то конкретные инструменты, где вы можете писать код, обучать свои модели, есть куча инструментов. Есть ещё такой инструмент, как Jupyter Lab, это уже, я бы так сказала, на любителя. Им также огромное количество людей пользуется, но вот мне больше нравится Jupyter Notebook. Это только начало.

А теперь давайте попробуем рассмотреть пример, о котором я сказала ранее, где мы будем предсказывать, удовлетворён ли пассажир авиакомпании на основе достаточно различных характеристик. Где будет информация о полёте, и это такие параметры, как пол, возраст, тип клиента, класс обслуживания, расстояние полёта, удовлетворённость различными аспектами обслуживания, например, такими как Wi-Fi, сервис — очень важный инструмент, комфорт сидения, онлайн-регистрация и так далее. И также дополнительная информация о самом рейсе — это задержки при вылете и прибытии.

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

Я импортирую, просто нажав либо на кнопку Run, либо на Shift + Enter. Дальше у нас есть задача, о которой я уже рассказала вам ранее. Данные я взяла из GLA, и у нас есть следующие признаки. Но самое главное, что нам необходимо будет предсказать — это уровень удовлетворённости пассажира. Первое, нам необходимо загрузить данные. Я предварительно уже их скачала с GLA, и если вам интересно, уже, кстати, более подробно посмотреть код, то переходите в мой Telegram, я там оставлю и как сами данные, так и сам код с нашего сегодняшнего урока.

Итак, я импортирую тренировочный датасет и тестовый датасет. На тренировочном сете мы обучаем нашу модель, на тестовом датасете мы уже точно смотрим, насколько наша модель хорошо обучила. Давайте посмотрим первые несколько строк, посмотрим информацию о количестве пропусков. Потому что часто история — да, пропуски в наших данных бывают, и с этим нужно что-то делать. Есть множество различных техник, мы с вами рассмотрим только одну из этих техник и посмотрим на уникальные значения. Это ещё называется целевая переменная Satisfaction, то что нам необходимо предсказать. Вот мы видим здесь два значения: то есть нейтрально, либо не удовлетворён, либо удовлетворён.

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

Убедимся, что преобразование прошло. Теперь давайте удалим ненужный нам столбец ID, он не содержит какую-либо информацию, которая бы нам помогла предсказать. Наоборот, он даже больше вредит. Заполним пропуски, заполнять мы будем медианой на основании тренировочного датасета, чтобы мы не подглядывали в будущее в тестовых данных. Теперь нам нужно отдельно разбить на такие данные, как X — это называется ещё матрица объект-признаки, и отдельно Y — это наша целевая переменная, ещё называю такое понятие как Таргет, это то, что нам необходимо предсказать, отдельно для тренировочных данных и отдельно тоже для тестовых данных.

Мы с вами будем использовать сегодня такую модель машинного обучения, как LGBM. Это модель, которая может находить сложные взаимосвязи в данных. Но в чём её плюс в данном конкретном случае? То, что она может работать с категориальными данными. Что здесь являются категориальными данными? Например, признаки или колонки, да, назовём их так, как пол, например, как тип путешествия, класс и так далее. Мы видим здесь определённый текст — это категориальные данные, вот здесь у нас расположены цифры. Поэтому, чтобы нам как-то предобработать категориальные данные, есть тоже несколько подходов, но эта модель позволяет нам никак не трансформировать наши данные. Но для этого нам нужно явно перевести в тип category, потому что до этого этот тип данных был object. То есть модель распознаёт только тип category.

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

А вот, в принципе, как бы и всё, мы обучили нашу модель. А теперь давайте посмотрим на результаты такой модели. Для начала мы посмотрим на результаты на тренировочных данных. Я здесь использовала метрики классификации — это метрики ROC и F1. Не вдаваясь в подробности, особенно кто с ними не знаком, ROC нам позволяет понять, насколько хорошо мы разделяем данные между собой, если вот прямо по-простому. А F1, ну, грубо можно сказать, в процентах, насколько классно мы вообще обучили нашу модель. Опять же, не вдаваясь в какие-либо подробности, видим, что модель достаточно хорошо на тренировочных данных. Но посмотрим, как она себя теперь поведёт на тестовых. В принципе, результаты похожи. Это очень хорошо, если они где-то близко расположены между собой. Это говорит о том, что модель на каких-то новых данных может давать достаточно стабильный результат. Поэтому мы можем смело сказать, что мы сделали очень классную с вами модельку и можем потом впоследствии её уже использовать на каких-то новых данных и предсказывать, действительно ли пассажир будет доволен этой поездкой, либо он не будет этой поездкой доволен.

Но самое интересное, что мы можем ещё смотреть — это мы можем смотреть на важность признаков. Мы обучили нашу модельку, и мы можем получить у неё топ признаков. Мы ещё называем это топ фичей, под другими словами, которые очень сильно повлияли на результаты модели. Мы здесь видим определённые значения, соответствующие каждому из признаков. Давайте попробуем всё это загнать в табличку, чтобы мы могли как-то представить это в понятном для нас виде и визуализировать это всё при помощи таких библиотек, как Seaborn и Matplotlib. И мы видим, что больше всего на поездку повлияло наличие Wi-Fi сервиса, насколько он был хорош. Это действительно оказался очень важный фактор. Ну, оно и понятно, потому что в эпоху, скорее всего, интернета люди очень много времени проводят в интернете, в соцсетях, и для них это действительно, в особенности сейчас, стал очень главный фактор. Дальше — возраст, тип пассажира, тип поездки, класс и так далее, но они в принципе сделали равносильный вклад, как и другие признаки.

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

А если вы, кстати, хотите подробнее ознакомиться как с самими данными, так и с кодом, возможно, попробовать какие-то другие модели машинного обучения, я все материалы и всю информацию оставила у себя в группе — в группе P Magic. Поэтому переходите и скачивайте все полезные материалы оттуда. И вы могли заметить, что, скорее всего, большая часть кода могла быть вам непонятна, либо вы не до конца поняли какие-то концепции, почему было именно так, либо, возможно, вы не знаете каких-либо подходов, о которых я могла даже вам сегодня рассказать. Я ничего не понимаю — вообще не переживайте, это абсолютно нормально. Как минимум, уже просто повторить за этим кодом вы сможете.

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

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

А где можно, кстати, найти бесплатные данные? Ну, первый ресурс — это откуда мы взяли сами эти данные — это GLA. Там множество как бесплатных наборов данных, так и соревнований, можно выигрывать денежные призы на этих соревнованиях. Плюс есть ещё один очень классный открытый репозиторий, но он больше для научных и учебных целей — это Google Dataset Search. Это поисковик, который помогает найти открытые данные по различным тематикам. И очень классный тоже ресурс называется Open ML. Там есть огромное количество датасетов под различные задачи.

И сейчас искусственный интеллект используется практически всеми компаниями. Например, мы можем привести как одного из самых крупных игроков на российском рынке — это, конечно же, Сбербанк. Сбербанк активно использует искусственный интеллект для персонализации тех же самых рекомендаций, анализа ваших финансовых данных, автоматизации обслуживания клиентов. А если мы говорим про Яндекс, да, это тоже один из лидеров по внедрению машинного обучения в свои процессы и продукты. А тот же продукт, самый Яндекс Музыка, для персонализации плейлистов. А тот же самый Яндекс Такси с его динамической ценообразованием и с прогнозированием времени подачи машин, оптимизации маршрута. Либо тот же самый marketplace Озон, где в нём уже встроена рекомендательная система, которая позволяет вам находить какие-то новые товары, которые вам потенциально могли бы понравиться, либо те товары, с которыми вы уже как-то взаимодействовали.

В общем, можно сказать, что искусственный интеллект на самом деле практически много где, в особенности в крупных компаниях. И что вам важно знать, чтобы освоить искусственный интеллект, чтобы начать им, возможно, заниматься? Понятное дело, что в первую очередь вам нужна база. База не в том плане, что база — это модели машинного обучения, а база на самом деле даже кроется здесь именно в математике. Математика играет ключевую роль в искусственном интеллекте, поскольку она помогает нам эффективно как работать с данными, так и оптимизировать модели. Сюда входит математический анализ, линейная алгебра, статистика, теория вероятности. Но на самом деле вам не понадобятся прямо все темы, которые вы проходили в ВУЗе. Вообще, я бы сказала, что весь искусственный интеллект сейчас, самый интересный, наверное, он построен на таком понятии, как частные производные. А если прямо вообще говорить птичьим языком, то это антиградиент. Вот на этом строятся практически все модели машинного обучения, в том числе и различные нейросети. Поняв концепцию с частными производными и с производными в принципе, вы многие модели поймёте просто на ура.

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


Назад

Залогинтесь, что бы оставить свой комментарий

Copyright © StockChart.ru developers team, 2011 - 2023. Сервис предоставляет широкий набор инструментов для анализа отечественного и зарубежных биржевых рынков. Вы должны иметь биржевой аккаунт для работы с сайтом. По вопросам работы сайта пишите support@ru-ticker.com