Показаны сообщения с ярлыком школа данных Билайн. Показать все сообщения
Показаны сообщения с ярлыком школа данных Билайн. Показать все сообщения

Курс ML и Big Data завершен. Жизнь продолжается

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


Школа данных Билайн

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

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

Большое спасибо Сергею Марину, Билайн, за приглашение на курсы, Наталье Ашенкампф за поддержку, преподавателям за возню с "гуманитарием", Анну Бойко - за то, что терпела постоянное отсутствие дома вечерами.

- Пополнил свою "аллею славы" - http://www.mforum.ru/090976.htm ;
- Мои анонсы-отзывы о Школе данных Билайн: http://abloud.blogspot.ru/
- Официальный сайт Школы данных Билайн http://bigdata.beeline.digital/

BigData: В Школе данных Билайн IBM расскажет о продукте Modeler и кластере Big Insight

Завтра у меня очередная встреча, посвященная BigData для аналитиков. К нам на занятие придут специалисты из IBM. Программа заявлена интересная. 



Коллеги из IBM обещают рассказать про продукт Modeler, который позволяет пользоваться инструментами машинного обучения без знания языков программирования. Также расскажут про Analytical Server, который позволяет конвертировать модели, сделанные с помощью Modeler в задания MapReduce и вычислять их на Hadoop.

Кроме того, представят кластер Big Insight, сделанный в IBM поверх Hadoop с дополнительными усовершенствованиями, по сравнению с обычным Hadoop, по части стабильности, производительности и безопасности. Обещают рассказать про инструменты работы с данными поверх этого кластера, такими как BigSQL (аналог Hive), Big R (реализация языка R) и BigSheets (аналитический инструмент поверх Hadoop с интерфейсом от Excel). 

Это будет в понедельник. Также в понедельник 4 апреля начинаются занятия у третьего курса Школы данных Билайн.

+ +

Что еще я писал о занятиях.

Data-MBA для менеджеров

- Анонс: Data MBA для менеджеров и бизнесменов
- Что было на втором занятии (Машинное обучение, методы, метрики, инструменты анализа "малых данных", инструменты анализа Big Data, бизнес-процесс работы с Big Data, подготовка специалистов в области Big Data, кейс Титаник, обработка текстов).
- Третье занятие "Анализ текста", Петр Ермаков, краткий конспект
- Четвертое занятие "Рекомендательные системы", Александр Крот, фрагмент полного конспекта (см. выше).

Школа данных Билайн. Машинное обучение и Big Data

- Завтра у меня первое занятие в Школе данных Билайн (анонс)
- Анонс Школы данных Билайн на хабре
- Как прошло мое первое занятие
- Как прошло мое третье занятие
- Краткий конспект по теме Patter Mining. Частые множества и ассоциативные правила

полезная ссылка на практику: 16 ядер и 30 ГБ под капотом вашего Jupyter за $0.25 в час, Юрий Кашницкий 

+ + 

Data-MBA: Тест по итогам курса

В четверг у меня последнее занятие на курсах Data-MBA. Девять встреч с преподавателями пролетели быстро, понятийная сетка в области Machine Learning, Big Data, NLP, рекомендательных систем, Deep Learning сформировалась. 


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

Тест для слушателей курса “Data MBA”
1. Назовите задачи обучения с учителем/без учителя  
2. Объясните своими словами, что означают метрики качества Precision/Recall/F-мера – почему хорошее значение 
3. Что делать, если в обучающей выборке преобладают объекты одного из классов?
4. Вы решаете задачу прогнозирования дохода на данных телеком-оператора. Можно ли выбрать для этой задачи в качестве обучающей выборки сотрудников оператора? Ответ обосновать
5. Представьте, что вы решаете задачу прогнозирования b2b оттока клиента сотового оператора. Как бы вы определили понятие "оттока"? Какие признаки вы бы использовали для этой задачи? Как бы был построен "дизайн" этой задачи? Напишите подробный ответ 
6. Вы решили построить аналитическую систему, в которой применяется машинное обучение. На какие вопросы вам нужно ответить, чтобы начать разработку? 
7.  Вы решили построить аналитическую систему, в которой применяется машинное обучение. Из чего будут состоять временные затраты? В каком процентном соотношении? 
8. Опишите ситуации, в которых вам потребуется построение инфраструктуры для обработки больших данных? Иными словами, какие данные обязывают нас строить данную инфраструктуру?
9. Какие компоненты входят в экосистему Hadoop? Для чего они предназначены
10. Опишите все этапы, которые возникают при разработке алгоритмов машинного обучения 
11. Для каких задач приходится использовать базы данных, хранящих <идентификатор, значение>? 
12. В чем риск использования данных из социальных сетей? 
13. Какие ограничения есть у API социальных сетей? 
14. Какие компоненты входят в RTB систему?
15. Для каких задач имеет смысл применять методы Deep Learning?  
Подробнее о курсе Data-MBA можно почитать здесь: http://bigdata.beeline.digital/datamba#schedule - приведена программа курса, данные о преподавателей, по этой ссылке возможна и запись. Следующий курс начнется 12 апреля 2016 года.

+ +

Конспекты. Data-MBA для менеджеров. Занятие 4. Рекомендательные системы

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




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


Рекомендательные системы, Школа данных Билайн, курс Data-MBA

Сергей Марин (СМ), основатель Школы данных Билайн, открыл встречу.

СМ: Один из первых распиаренных примеров в области рекомендательных систем, это кейс - "пиво и памперсы". В США проанализировали чеки - кто и что покупает. Было замечено, что пиво нередко покупают в комбинации с памперсами. После чего в магазине стали выставлять дорогие сорта пива рядом с памперсами. Также провели исследование с тем, чтобы понять, почему так происходит, и выявили, что пиво покупают мужчины, которые приходят в магазин для того, чтобы приобрести памперсы. Так исследование позволило повысить доходы магазина от продажи пива.

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

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

Сегодня мы поговорим о современном статусе рекомендательных систем, о том, как они работают, какие данные необходимы для того, чтобы построить рекомендательную систему. Поговорим о том, чем отличаются РС и как измерять качество работы РС (о метриках качества). Подумаем над вопросом - стоит ли писать РС самостоятельно (это возможно, это не rocket science) или лучше приобрести готовое решение. Сколько это может потенциально стоить, во что предстоит инвестировать. Немного поговорим об алгоритмах, чтобы понимать, как примерно это работает (основной - это SVD). О специалистах, которые для этого нужны. И о направлениях развития.


Александр Крот (АК), преподаватель Школы данных Data-MBA Билайн продолжил тему.

АК: Как рекомендательные системы получили распространение? Сергей уже привел пару примеров,  я расскажу еще о некоторых. С 2006 по 2009 года компания Netflix проводила конкурс на улучшение своей рекомендательной системы, который стал весьма популярен. В этот период фильмы распространялись не через интернет, а на кассетах. Компания несла значительные затраты, связанные с логистикой. Возникла идея, что человеку, который заказал какую-то кассету, можно предложить еще несколько, но, разумеется, не случайным образом, а с тем, чтобы вероятность того, что их купят, была высокой.

К 2006 году Netflix уже располагала самописной рекомендательной системой, но компания хотела повысить качество ее рекомендаций хотя бы на 10%. Был объявлен конкурс, победителю обещали $1 млн. Несмотря на немалый интерес к теме и немалое число участников, почти за три года ни одна из команд, которые приняли участие в конкурсе, не смогли достичь цели - повысить качество рекомендаций на 10%. И буквально за 20 минут до окончания конкурса сразу две разных команды послали решения, которые пробили эту отметку. Удивительно, но тот уровень качества, который обеспечивали решения этих двух команд, был равен с точностью до четвертого знака после десятичной запятой.

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

Известным сервисом сегодня является Pandora - этот сервис подстраивается под музыкальные предпочтения человека и со-временем радио начинает играть для него в основном то, что человеку нравится.

Другой известный сервис - это Amazon, который подбирает книги на основе схожести спроса.


В теме "рекомендательные системы" есть три основных понятия, которые следует помнить. Во-первых, это пользователи (users), второе - это товары (items), третье - события (events) . События состоят в том, что пользователю U понравился (или не понравился) товар I. Можно также говорить об оценке, которая характеризует степень, насколько товар понравился или не понравился. То есть событием r[u,i] может быть то, что U поставил товару I оценку R. Это "базовая механика" рекомендательной системы.

Основная задача рекомендательной системы заключается в том, чтобы по каким-то имеющися у нас данным для каждого пользователя предсказать, какую оценку R он поставит каждому из товаров. Зная оценки, мы сможем давать какие-то рекомендации. Например, если мы прогнозируем, что для товара I пользователь U поставит высокую оценку, то стоит этому пользователю об этом товаре рассказать. Скажем, если у нас есть некий набор товаров, то мы можем их отранжировать по прогнозируемым R, затем выбрать Топ-5, исходя из максимума R, и предложить эти Топ-5 товаров вниманию пользователя.


Как это может работать?

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



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

Начнем с простых алгоритмов, которые на уровне идеи понятны многим из вас. Первая очевидная идея заключается в том, что похожие люди смотрят похожие фильмы (покупают похожие товары).  И наоборот, люди, покупающие похожие товары, вероятно, похожи. Соответствующие методы получили название Content-based или Item-based.

Как они работают?

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

Есть более универсальный способ - это так называемая коллоборативная фильтрация или алгоритм SVD.

Для рекомендаций используется история оценок, как самого пользователя, так и других пользователей. Это более универсальный подход, который часто дает лучший результат. На сегодня он наиболее распространен, в том числе и в силу понятности, а также потому, что он хорошо сводится к задачам машинного обучения (ML). У метода есть свои проблемы, в частности, "холодный старт". Что делать в этой ситуации?

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

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

СМ: Netflix - это хороший пример, но давайте вспомним что-то, с чем мы знакомы лучше, из местной практики. Ozon, Яндекс.Радио. Как вы думаете, что является оценкой пользователя в Яндекс.Радио?

- Дослушивают ли до конца ту или иную композицию

СМ: Верно. Т.е. важно понимать, что является метрикой в каждом конкретном случае.
Несмотря на то, что рекомендательные системы - это уже проработанная тема, такие системы внедрены не везде. И сегодня зачастую наличие рекомендательной системы является дифференциатором компании, ее услуг. Знаком ли вам сайт okko.tv ? У него очень качественный рекомендательный движок.

АК: Вернемся к примеру с Netflix, стоит отметить, что для построения рекомендательных систем сравнимого масштаба компании, вероятно, придется создавать какую-то инфраструктуру для хранения данных. Данных много, работать с ними с использованием стандартного КИХ (корпоративного хранилища информации) может быть сложно.

У Netflix на момент внедрения системы были такие показатели: 0.5 млн пользователей, 18 тысяч фильмов, 100 млн оценок (от 1 до 5). Если умножить 0.5 млн на 18 тыс, то получим 9 млрд ячеек в матрице. Т.е. матрица была очень слабо заполненной.  Что не помешало им сделать очень высококачественную рекомедательную систему, которая помогла заработать дополнительные деньги.



АК: Рассмотрим кейс крупного интернет-магазина. Примерно по такой схеме работает, например, рекомендательная система Озона.


Какие объекты есть в процессе - есть пользователи, есть товары, есть события. Ясно, что нужно собрать как можно больше данных о товарах, о пользователя и о действиях пользователя. Данные пользователя на первом этапе - это данные его регистрационной анкеты, в частности. Данные о товаре магазин, как правило, получает от поставщика вместе с товаром, либо из других источников.  С ними, как правило, проблем нет. В частности, в нашем примере речь идет примерно о 8 млн постоянно обновляемых товарах, их описаниях, цене, доступности. Для их хранения хватит и обычной информационной базы предприятия. То же и данные о пользователях, анкетные данные могут храниться в обычной таблице, в реляционных базах данных, в SQL сервере, который есть у любого магазина.

Иное дело - данные о транзакциях, о действиях пользователей. Пользователь отобрал товар в корзину. Пользователь поставил лайк. Пользователь просмотрел каталог. Таких действий очень много - это примерно в среднем 100 событий в секунду, такой поток данных по примерной оценке "весит" 15 ГБ/день. Для хранения таких объемов данных желательна уже какая-то продвинутая система.

Откуда берутся данные о действиях пользователей? Вы знаете, что практически на всех сайтах стоят счетчики, фиксирующие практически любые действия пользователей.  Эти данные поступают в очередь и складываются в Hadoop-кластер, в нашу файловую систему HDFS через такие инструменты очереди, как RabbitMQ и Flume. Hive в этой системе позволяет простыми запросами получать необходимые выборки из распределенной файловой системы.

Такая рекомендательная система, это уже пример работы с Big Data. Алгоритм работает с данными в Hadoop-кластере, куда также добавляются через Sqoop данные о пользователях и товарах.

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

СМ: Hadoop кластер не обязательно строить внутри компании. Впрочем, сейчас часто компания считает, что это ее конкурентное преимущество и предпочитает его создать у себя.

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


АК: Вернемся к инструментам - как это было сделано. Изначально систему писали на языке Java. Выбор был обусловлен тем, что Java - это язык, на котором написан Hadoop, логично было бы, чтобы и алгоритм реализовывался на этом же языке. Кроме того, тогда еще не было Spark и других современных средств.

Ожидаемый плюс был бы - быстрота работы. Минусы просматривались такие: программировать на Java достаточно непросто, язык "многословный", математикам трудно принимать участие в работе - расширять или улучшать алгоритм по мере надобности. Кроме того, в Java бедный MapReduce API. Например, а каждый tuple (кортеж) приходится заводить свой класс.

В итоге решили взять Apache Spark.
Почему сейчас столь популярен Spark? Представьте, что у вас есть кластер Hadoop, в частности, есть HDFS-система, в которой лежит множество логов. И вы хотите делать какие-то итеративные вычисления. Что-то взять, посчитать что-то по этим данным, а затем положить результат обратно. Все алгоритмы машинного обучения итеративны - для них это оптимальная схема работы. Многие из вас знают, что читать данные с диска в ОЗУ, и затем выгружать данные на диск - это достаточно дорогие операции.

Что позволяет делать Spark? В вашем кластере помимо большого числа недорогих жестких дисков есть оперативная память. Фреймворк Spark грузит данные в оперативную память и в ней работает. На диск будет затем записан только конечный результат множества различных операций. Это серьезно сокращает число операций I/O.  Это обеспечило Spark немалую популярность. Из других плюсов - Spark очень неплохо подключается к Hive-таблицам, можно прямо из Spark доставать данные из кластера. Код на Spark лаконичный. В Spark есть немало библиотек, в частности в нем есть модуль "рекомендательная система", которой можно "скормить" ту таблицу о которой мы ранее говорили (пользователи/фильмы/оценки), и этот модуль выдаст некие рекомендации.

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



Рекомендательную систему решили написать на языке Hive. SQL-запросы поверх больших таблиц писать проще, они выразительнее и понятнее, чем даже Python-код на Spark.

Все, что можно сформулировать в виде SQL-запроса считается алгоритмом быстро. Минус в том, что если в SQL-виде запрос написать не получается, то придется писать UDF (User-Defined Function) на Java.

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

40% Apache Spark (Python) + 50% Hive on TEZ + 10% Hive UDF (Java)

Плюсы такого подхода. Удобно парсить данные в Spark на Python. Далее эти данные можно сложить в Hive-таблицу и работать с ними SQL-запросами. И поскольку данные хранятся в кластере, с ними можно вести любые ETL-работы, готовить их так, как нам необходимо. Это занимает чуть не половину всего времени и делается инструментом Hive, который близок аналитикам, знакомым с SQL-запросами к корпоративному хранилищу.
Если возникают сложности, то пользуются Hive UDF, для сложных преобразований.

Достигается 70% переиспользование кода на пути от прототипа к продакшену, как правило, на UDF переписываются только критичные по производительности и не очень сложные функции, которые универсальны. В отличие от ML, где зачастую прототип приходится затем переписывать на продуктовой стадии на других языках программирования, в случае с Apache Spark мы изначально работаем с производительной структурой и потому формируемый алгоритм, как только он начинает работать, можно будет довести до продуктивного решения сравнительно быстро.

Математики могут улучшать алгоритм, если конечно они знают Python и SQL!

У каждого инструмента есть минусы, это нужно иметь в виду и уметь пользоваться плюсами.

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

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

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

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

Следует помнить об этих вопросах, если соберетесь внедрять такую систему.


АК:  Перейдем к теме "Как оценить качество работы рекомендательной системы"?

Рассмотрим матрицу Item-User, где в ячейку на пересечении пишется оценка пользователя.


Нам нужно прогнозировать, какую оценку поставил пользователь u фильму i ? Т.е. нам нужно уметь спрогнозировать число. Т.е. это задача регрессии. Как оценить прогноз, который сделает наш алгоритм.


Здесь r с крышкой - это прогнозное значение и r ui - это которое изначально было. Метрика позволяет понять, насколько далеко наши прогнозы отклонились от того, что известно, насколько мы ошибаемся в прогнозах.  Значение отклонения должно быть минимальным.

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

Поэтому всякий раз, когда речь идет о задачах машинного обучения, желательно смотреть не на одну, а на несколько различных метрик. В частности на известные метрики Precision и Recall. Для множества рекомендованных объектов R и множества объектов, которые на самом деле нравятся пользователю:

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

СМ: При покупке рекомендательной системы всегда просите, чтобы вам сделали dashboard, где вы сможете наблюдать за показателями Precision и Recall. Не смотрите на то, что вначале показатели будут выглядеть не идеально, вашей системе еще предстоит обучиться. Важно, чтобы метрики не падали. Если вы заметите падение, это значит, что что-то пошло не так и нужно вмешиваться.

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

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

(АБ: АК рассказывает о кликджекинге. Пропущу в конспекте)

АК: Далее возможны варианты. Например, можно экспертным путем определить стереотипы, пример - предлагать мультфильмы только людям моложе X лет. Некоторые до сих пор так работают.

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

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


АБ: на этом завершу конспект, выше я представил первые 70 минут занятия, осталось еще 50 минут, которые оставляю "за кадром". Курс коммерческий и выкладывать его весь в открытый доступ было бы некорректно.

О чем было дальше - в основном о том, как найти в соц.сети ВКонтакте Топ-100 пользователей за 1 минуту.

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

+ +

Что еще я писал о занятиях.

Data-MBA для менеджеров.

- Анонс: Data MBA для менеджеров и бизнесменов
- Что было на втором занятии (Машинное обучение, методы, метрики, инструменты анализа "малых данных", инструменты анализа Big Data, бизнес-процесс работы с Big Data, подготовка специалистов в области Big Data, кейс Титаник, обработка текстов).
- Третье занятие "Анализ текста", Петр Ермаков, краткий конспект
- Четвертое занятие "Рекомендательные системы", Александр Крот, фрагмент полного конспекта (см. выше).

Школа данных Билайн. Машинное обучение и Big Data

- Завтра у меня первое занятие в Школе данных Билайн (анонс)
- Анонс Школы данных Билайн на хабре
- Как прошло мое первое занятие
- Как прошло мое третье занятие
- Краткий конспект по теме Patter Mining. Частые множества и ассоциативные правила

Day-by-Day, 2016.03.03, четверг. Дайджест Телеком и Роботы

Курс доллара ЦБ РФ на сегодня - 73.62, евро - 79.97.


МегаФон начал брать по 1 рублю за удержание вызова 


пруф: https://moscow.megafon.ru/services/base/uderzhanie_vyzova.html

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

У абонентов есть выбор - поддержать своими рублями бюджет высокоприбыльного оператора, который яростно "монетизирует аудиторию" (напрашивается сравнение с прессом, которым давят сок из яблок), или отключить нафиг эту услугу (USSD команды отключения не знаю, оператор предлагает это делать по телефону 500 или через ЛК), или сменить опсоса на менее жадного в текущий момент времени.

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

Другие операторы НЕ берут денег за удержание вызова! В частности, Билайн, Tele2 и МТС говорят, что и не берут, и не планируют вводить плату за эту услугу - во всяком случае мне так сегодня подтвердили пресс-службы компаний. Так что МегаФон в очередной раз получает мой приз - звание "ОЖО" - особо жадного опсоса!


Periscop: Сергей Марин о курсе Data-MBA

Сегодня в перерыве занятия курса Data-MBA попросил Сергея Марина, основателя Школы данных Билайн, рассказать о курсе для менеджеров - зачем он нужен, что можно будет узнать в ходе учебы.

Periscop: https://www.periscope.tv/w/1mnxeZMvnyRKX

Курс из 10 занятий по 2 вечера в неделю. Очно в Москве. Я уже половину прослушал с немалым удовольствием.



Билайн запустил сеть LTE1800 в Краснодарском крае, но пока что не в Краснодаре

Билайн запустил сети LTE1800 в 51-м населенном пункте Краснодарского края. Для компании - это 59-й регион с LTE.



В частности покрытие LTE появилось в следующих населенных пунктах:

Абинский, Апшеронский, Белоглинский, Белореченский, Брюховецкий, Выселковский, Гулькевичский, Динской, Ейский, Кавказский, Калининский, Каневский, Кореновский, Красноармейский, Крымский, Курганинский, Кущевский, Лабинский, Ленинградский, Мостовский, Новокубанский, Отрадненский, Павловский, Северский, Славянский, Староминский, Тбилисский, Тимашевский, Тихорецкий, Усть-Лабинский, станица Фастовецкая, Щербиновский.

Сеть «четвертого поколения» от «Билайн» также доступна жителям малых городов Апшеронск, Белореченск, Горячий Ключ, Ейск, Кореновск, Кропоткин, Крымск, Курганинск, Лабинск, Славянск-на-Кубани, Тимашевск, Тихорецк, Усть-Лабинск, в станице Каневской, Калининская. Каждый 4-й житель Краснодарского края может пользоваться 4G/LTE от «Билайн» - уверены в компании.

Пиковая скорость - до 36 Мбит/с, т.е. полоса - 5 МГц. В 2H2016 планируется запуск сети LTE в Краснодаре, до конца года - в Геленджике, Анапе, Туапсе и Новороссийске.


У МТС технические проблемы со связью в Украине




Сегодня с утра с ними столкнулись абоненты в ряде регионов - в Харькове, в частности. Вроде говорят об аварии на транспортной сети... факт в том, что несколько часов связь была недоступной. Этак скоро и уход под веселые картинки Vodafon компании не поможет.



МегаФон сделал голос безлимитным в мигрантских тарифах "Теплый прием S" и "Теплый прием M" 

Компания называет это абсолютным безлимитом (60 минут * 24 часа = 1440 минут в сутки).  Нововведение касается московского региона. Речь идет о внутрисетевых вызовах только в домашнем регионе.



Кроме этого в тариф 400 рублей/мес (S) включено 200 минут разговоров с абонентами других операторов в Москве или абонентами МегаФона по всей России (не густо), 3 ГБ трафика мобильного интернета, а также 200 SMS на любые номера московского региона.

Тариф М - это уже 700 руб/мес, в него включено 400 минут в месяц разговоров с абонентами других операторов в Москве и области, а также номера МегаФона по всей России, 5 ГБ моб.интернета, 400 SMS на московские номера.

МН-связь в рамках этих тарифов имеет смысл разве что при подключении соответствующих "страновых опций" - МегаФон-Таджикистан+, Звони в Узбекистан, Звони в Кыргызстан, Звони в Украину +.


МегаФон сообщает о запуске новых баз LTE в Тамбове и Мичуринске 

Пиковые скорости - до 100 Мбит/с. Покрытие не сплошное, его можно наблюдать в Тамбове в центральной части города, в мкр Московский, Уютный, радужный, районе Белый Бак, пос. Северном, педучилище 1, деревне Красненькая, улицах К. Маркса и Защитной. В Мичуринске - центральная часть города, пл. Славы, ул. Лаврова и Автозаводская, завод Милорем, 2-я, 3-я, 5-я Кочетовка. / vtambove.ru

В Тамбовской области услуги LTE предоставляют все операторы "большой четверки", выбор есть, действует также "суббренд" Yota.



Tele2 снизила стоимость "красивых номеров" в Московском регионе на 40% и запустила услугу "MNP с доставкой"



Компания сообщает
Москва – Tele2, альтернативный оператор мобильной связи, объявляет о значительном снижении стоимости серебряных, золотых и платиновых номеров в интернет-магазине для столичных абонентов. Теперь SIM-карты с красивыми номерами Tele2 стоят на 40% дешевле.

Цена серебряного номера Tele2 снижена до 3 000 рублей, золотой номер теперь можно приобрести за 9 000 рублей, платиновый – за 15 000 рублей. Для абонентов Московского региона оператор вдвое увеличил номерную емкость с кодом «977» в интернет-магазине, и сейчас она превышает 150 тысяч вариантов. На сайте msk.shop.tele2.ru представлен широкий выбор номеров всех категорий, в том числе комплекты номеров, отличающихся друг от друга всего одной цифрой. 
Помимо снижения цен, оператор запустил в онлайн-канале услугу MNP с доставкой: абоненты, оставившие заявки на перенос номера в сеть Tele2 на сайте интернет-магазина, могут воспользоваться бесплатным курьерским сервисом на территории Москвы. За два месяца 2016 года количество онлайн-обращений на услугу MNP составило более 20% от общего числа заказов в интернет-магазине.

Курьерская доставка SIM-карт на территории Москвы осуществляется бесплатно на следующий день после заказа. Специалист компании не только доставит заказ по удобному для абонента адресу, но и окажет грамотную консультацию. Также абоненты смогут самостоятельно получить комплект подключения к Tele2 в одном из ближайших салонов связи оператора. Оплатить покупку можно курьеру при заключении договора об оказании услуг связи или в фирменном магазине Tele2. 
Для меня эти "красивые номера" - своего рода "феномен" из области психологии человека. После того, как любой номер - это всего лишь запись в гугле, а вызов идет по имени, да и не звоню я почти по телефонными номерам, благо есть hangout, WhatsApp, FB messenger и прочие удобные средства. А люди по-прежнему не только пользуются, но даже считают, что одна комбинация цифр может быть красивее другой и потому дороже. ОК, кому что нравится. 

А вот услуга "MNP с доставкой" выглядит привлекательно. Бесплатный курьер - хорошая альтренатива посещению салона.  

Любопытный психологический эксперимент с роботом "спасателем" провели в США

Люди, как выясняется, склонны верить технике больше, чем она того заслуживает. Это налагает на разработчиков-производителей высокую ответственность (знают ли они об этом).
Неожиданный результат. А робота можно теперь звать Сусаниным.

http://robotrends.ru/pub/1609/lyudi-doveryayut-spasatelnomu-robotu-bolshe-chem-zdravomu-smyslu


В Японии началось тестирование беспилотных такси

В Японии началось тестирование роботизированных такси компанией Robot Taxi. Тесты идут в Фудзисава, роботакси можно использовать для поездок в супермаркет, расположенный в 3 км от города. В тестировании приняли участие 10 человек, в ходе испытаний цифра увеличится до 50. / newsader.com . Новости роботизированных автомобилей


Big Data. Чтобы было на втором занятии курса Data-MBA

Вчера вечером был на втором занятии курса Data-MBA Школы Билайн. Рассказываю, что обсуждалось, насколько было интересно. 


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

Второй час ушел на инструменты анализа данных - в отношении "малых данных" поговорили о Rapid Miner, Weka, SAS Miner, Python и R.

Вскоре перешли непосредственно к Big Data - стеку Hadoop, HDFS, Map Reduce, Zoo Keeper, Oozie, Azkaban, Qqoop. Flume, Kafka, Hbase, Cassandra, Hive и Pig, Apache Spark. Конечно, это все галопом, буквально по нескольку минут на продукт, только, чтобы вписать его в "понятийную решетку".  О Vowpal Wabbit и яндексовом Matrix Net.

Затем подробнее разбирали бизнес-процесс работы с ML / Big Data. От идеи и бизнес-требований к формальным требованиям, определению данных, выгрузке данных и их предобработке, построению моделей, пользе пилотов.

Затронули тему подготовки специалистов в области Big Data. Чего от них хотеть, чего ожидать.

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

Решили задержаться сверх обещанных двух часов и поговорили об обработке текстов методами ML - Bag of Words, Document Term Matrix, WordZVep - вот этом всём.

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

Занятие, как и первое, проводил Александр Крот.

Для интересующихся темой, рекомендую чтение: http://papers.nips.cc/paper/5656-hidden-technical-debt-in-machine-learning-systems.pdf (англ.) - хороший текст для тех, кто думает, что ML - это что-то типа "волшебной палочки".

+ +

Школа данных Билайн - курс для менеджеров, подробности

Я уже анонсировал Курс Data-MBA для менеджеров, который запускает Школа данных Билайн с 16 февраля 2016 года. Сегодня вышел анонс с подробностями об этом курсе на Хабре, рекомендую взглянуть. 


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

Планирую участвовать в нескольких первых занятиях, чтобы сравнить курс, что прохожу сейчас (для аналитиков), и новый курс, адресованный менеджерам. Благо в новом курсе нет домашних заданий на выполнение которых, признаться, времени совсем не хватает. Не требуется и особой предварительной подготовки к Data-MBA - все обещают рассказать на занятиях. Стоимость курса для менеджеров такая же, как и для аналитиков, все те же 100 тысяч рублей. Записаться на курс можно здесь до 12 февраля. 

+ + 



Школа данных Билайн. Как прошло мое 3-е занятие

Рассказываю о Школе данных Билайн, где слушаю курс "Введение в машинное обучение". Делюсь впечатлениями о третьем занятии. 



Как и предыдущие, третье занятие проходило весьма энергично. Начали с обсуждения домашнего задания. Мне оно показалось сложным, сказывается отсутствие знакомства с пакетами Pandas и Seaborn. Хотя потратил часов 15, так и не смог все задачи решить. Кроме того, некоторые задания были сформулированы так, что можно было трактовать их по-разному. Также участники высказали пожелания уделять меньше внимания теоретическим вопросам типа обзора задач Линейной алгебры и больше - практическим аспектам решения этих задач.

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



По нашей просьбе лектор еще раз "пробежался" по основным методам библиотеки Seaborn.

В Seaborn вместо гистограммы используется .distplot(dataframe_name['параметр'], kde=False)
Параметр отобразится по оси абсцисс.


Можно оси подписать .axlabel и задать стиль раскраски .set_style

sns.distplot(girls['Height'], kde=False)
sns.axlabel('Playboy girls height', 'Frequency')
sns.set_style('darkgrid')

Получим еще более симпатичный график


Еще одна удобная и распространенная визуализация - это .boxplot или "ящик с усами". Строится зависимость непрерывного признака от категориального.

Убедившись, что все данные в наборе численные, можем сформировать три категории весов и построить боксплот. Создаем правило weight_category и применяем его к столбцу Weight из датафрейма girls. Затем строим боксплот на базе сформированных категорий. Можно наблюдать зависимость роста и весовых категорий девушек. Очевидно, что где девушки потяжелее, там они и выше.

def weight_category(weight):
    return 'heavier' if weight > 54\
            else 'lighter' if weight < 49 else 'median'

girls['weight_cat'] = girls['Weight'].apply(weight_category)
sns.boxplot(x='weight_cat', y='Height', data=girls)


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

Скачиваем data frame.
Можно посмотреть - в табличке всего 7 наблюдений, автор статьи усматривает в них некоторую зависимость.



Понятно, что 7 наблюдений маловато для того, чтобы строить какие-то модели, но нам для тренировки подойдет.

Выполним сортировку по Score

df.sort_values('Score', 
               ascending=False, 
               inplace=True) 

Посмотрим на статистику

df.describe().T 



Можно нарисовать boxplot методами Pandas.Пользуемся надстройкой над методом mathplotlib. Задаем аргумент box, чтобы боксплот нарисовать для признаков Drugs и Score. Можно наблюдать средние, медианные значения, выбросы.

df.plot(kind='box') 



Если изменить аргумент функции на 'bar', получим столбчатую диаграмму, где значения Score показаны в зависимости от признака Drugs.

df.plot(x='Drugs', y='Score', kind='bar') 


Лучше всего зависимость видна на скаттер графике, здесь тенденция вполне проявлена.

df.plot(x='Drugs', y='Score', kind='scatter') 


Pandas позволяет быстро строить различные графики, например, чтобы построить в Pandas гистограмму, достаточно будет строки:

df['Drugs'].gist()

Можно оценить корреляцию Пирсона, получаем весьма сильную корреляцию -0.93.

df.corr(method='pearson')


Возможен также JointPlot, но это уже, как говорится "подробности".

# sns.regplot(x='Drugs', y='Score', data=df)
sns.jointplot(x='Drugs', y='Score', 
              data=df, kind='reg')

Чтобы вы представляли себе темп, с которым идет занятие, на всю вступительную часть ушло порядка 13 минут.

Далее приступили к практике по визуализации и первичному анализу данных. Нужно было построить образцы гистограмм, боксплотов и т.п. картинки на основе датафрейма, созданного на основе известного соревнования Kaggle Titanic. Работать можно либо в облаке SageMathCloud, либо на своем ноуте, где установлена сборка Jupyter. Задания для работы в класса и домашку нам раздают через облако, также для локального использования данные дублируют на Yandex.Диск.

Итак, что же предлагалось сделать:


Считываю обучающую выборку в train_df , с этим pandas-датафреймом и буду теперь работать.

Смотрю, как оформлены данные в датафрейме - .head(10) извлекает из датафрейма первые 10 строк с заголовками столбцов.


Приглядимся к таблице подробнее, функция .describe(include='all') выдает краткую первичную статистику по базе данных. Поскольку видно, что признаки Age и Embarked содержат пропуски, заполняем их медианными значениями, используя функции .fillna и .median()  Медианные значения для Age берем из обучающей выборки. Для параметра Embarked заполняем пропуски значением 'S', как самым распространенным. 


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


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

Вначале я написал неправильный вариант кода, перепутав местами x и y.

sns.boxplot(x='Fare', y='Pclass', data=train_df)



Нужно строить зависимость непрерывного признака от критериального, т.е.

sns.boxplot(x='Pclass', y='Fare', data=train_df)


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

Предлагаемое в тетрадке решение: создайте признак Fare_no_out - стоимости без выбросов, в котором исключаются стоимости, отличающиеся от средней по классу более чем на 3 стандартных отклонения. Важно: Надо исключать выбросы именно в зависимости от класса каюты. Иначе исключаться будут только самые большие (1 класс) и малые (3 класс) стоимости.

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

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


А я перешел к следующему пункту: Каково соотношение погибших и выживших в зависимости от пола? Отобразите c помощью Seaborn.countplot c аргументом hue.

Для визуализации соотношений удобно использовать "каунтплоты" .countplot(x='Параметр1', hue= 'Параметр2', data=имя_датафрейма), которые показывают зависимости по двум категориальным признакам, названия параметров указываются по осям и в "легенде".

Видно, что женщин в процентном отношении выжило существенно больше, чем мужчин.

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


На самом деле решение было простым, но это я уже дома доразобрался.

sns.countplot(x='Pclass', hue='Survived', data=train_df)

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

Графическая проверка зависимости выживания от возраста

train_df.plot(x='Survived', y='Age', kind='box')

или куда более наглядный вариант с Seaborn:

sns.boxplot(x='Survived', y='Age', data=train_df) 

Здесь отлично видно, что возраст практически не влиял на то, выживет пассажир или нет.

С вычислением Fare_no_out я не справился.

Для понимания темпов - до этого места нужно было добраться за 33 минуты от начала занятия.

Далее Юрий Кашницкий, который читает нам этот блок лекций, быстро пробежался по решению задач.

с 37-й минуты. Начался разбор новой темы:

Обучение с учителем. Задачи классификации и регрессии
  • Практическое задание. Визуальный анализ данных пассажиров "Титаника"
  • Обзор библиотеки Scikit-learn
  • Дерево решений в задаче классификации
  • Дерево решений в соревновании Kaggle Inclass по автострахованию
  • Извлечение признаков. Пример с набором данных Titanic
  • Домашнее задание 3. Дерево решений и случайный лес в задаче предсказания выживания пассажиров "Титаника"
Дальше не буду подробно рассказывать о том, что происходило в следующие 2 часа. (Да, мы постоянно выходим за границы официальных 2 часов занятия на 20-30 минут, материалов действительно много, иногда возникают вопросы у обучаемых и в итоге задержка получается с завидным постоянством).

Поговорили об основных алгоритмах, поддерживаемых библиотекой Scikit-learn.
  • Линейные модели (Ridge, Lasso, Elastic Net, ...)
  • Ансамбли (случайный лес, бэггинг, градиентный бустинг, ...)
  • Машина опорных векторов (SVM)
  • k ближайших соседей (kNN)
И о шпаргалке, подсказывающей выбор алгоритма


О том, что в scikit-learn удобный API, что позволяет писать собственные классы - достаточно скормить алгоритму обучающую выборку

class Estimator(object):
    def fit(self, X, y=None):
        """Fits estimator to data."""
        # set state of ``self``
        return self

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

def predict(self, X):
        """Predict response of ``X``."""
        # compute predictions ``pred``
        return pred

Очень бегло нам рассказали об SVM, а заодно о наборах данных USI Machine Learning repositary  http://archive.ics.uci.edu/ml/ очень популярных в машинном обучении.

и далее совсем кратко.

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

с 60-й минуты. Обсудили "дерево решений".  Почему они популярны. Кредитный скоринг. Игра в 20 вопросов. Энтропия Шеннона. Пример предсказания цвета шарика по координате. Интерпретируемость методов (случайный лес - не интерпретируемый).

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

с 88-й минуты. Пример применения алгоритма дерева решений к страхованию автомобилей. Подготовка данных. Навеска меток (scikit-learn не умеет работать с категориальными признаками). Добавление dummy-переменных. Проблема непопадания данных для ряда брендов. Добавление колонок с нулевыми данными. Глубина дерева. Как формировать данные для отсылки результатов на Kaggle. Фунция .gini (Джини импьюрити). Вывод дерева в формате .pdf  Отправка файла на Kaggle.

со 115-й минуты. Функция GridSearchCV и ее применение. Распараллеливание процессов. Приходим к дереву глубины 3. Обучение случайного леса. Параметры.

со 122-й минуты вернулись к примеру Титаник. Поговорили о составлении обучающей и тестовой выборок. Попробовали на выборке алгоритм Случайный лес. Что можно "вытащить" из исходных признаков? Создание нового категориального признака, заменяющего числовой признак.

с 127-й минута.  "Пробежались" по домашнему заданию. Нужно будет с теми же данными Титаника разобраться, как обучить дерево решений, как настроить его параметры, как обучить случайный лес. Проверили все ли зарегистрировались на Kaggle. Рассказали подробнее об устройстве соревнований Kaggle.

134-я минута. Занятие завершилось.

Надеюсь, вы получили неплохое представление о том, что происходит на занятиях по теме "Машинное обучение" в Школе Данных Билайн. Пожелайте мне успехов в прохождении курса!

+ +

Также по теме:

- Анонсы: Data-MBA для менеджеров и бизнесменов (c 16 февраля)
- Школа данных Билайн. Как прошло мое первое занятие
- Анонсы: Завтра у меня первое занятие в Школе данных Билайн

UPD:

Отправил свое домашнее задание на соревнования Kaggle




Обучение: Data-MBA для менеджеров и бизнесменов

Вы уже знаете, что с января я слушаю лекции в Школе данных Билайн по теме машинное обучение. Это курс для Data scientists и тех, кто ими хочет стать. В Школе данных подготовлен и другой курс, Data-MBA. Он адресован менеджерам, заказчикам и владельцам бизнесов и не требует для освоения математического образования и специальной подготовки, но позволяет "приобщиться к теме" аналитики данных, Big Data и машинного обучения. 


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

Обучение построено на разборе примеров решения бизнес-задач с применением конкретных инструментов. 

Занятия пройдут в Москве, начиная с 16 февраля 2016 года, по вторникам и четвергам с 19 часов вечера по адресу Краснопролетарская д.4, продолжительность - 5 недель. Стоимость - 100 тыс. руб. Подробности.  Продолжительность занятия - порядка 2 часов. 

+ +

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

Школа данных Билайн. Как прошло мое первое занятие

Рассказываю о Школе данных Билайн, где слушаю курс "Введение в машинное обучение". Делюсь впечатлениями о первом занятии.



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

Занятия проходят в главном офисе Билайна на Садовом с 18 до 20, два раза в неделю - в пнд и пятницу. Удобно, что есть время на домашние задания, их задают и ставят баллы, которые используются для ренкинга всех занимающихся.

Кто и зачем пришел учиться? 

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

Мне показалась особенно интересной мотивация участников, вот несколько "кейсов", которые я записал, когда участники представлялись друг-другу. Проверьте, не найдете ли вы свой случай?

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

Работаю в дочернем подразделении известного интернет-поисковика. Хотелось бы на практике попробовать решения задач типа прогнозирования показателей оттока, роста числа клиентов. 

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

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

Новостной интернет-ресурс, отвечая на нем за все digital-активности, включая машинное обучение. Для меня это прямая специальность. Хочется расширить свои знания.  

Работаю в операторе сотовой связи. Новый IT-директор ставит задачи внедрения машинного обучения. Будем вплотную этим заниматься. Так что нужны знания для практического их применения.

Работаю в крупном торгово-производственном холдинге. У нас порядка 20 тысяч наименований продуктов. У меня задача поиска скрытых закономерностей в продажах, классификации клиентов.  Надеюсь в ходе курса почерпну что-то, что смогу применить. 

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

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

Работаю в социальной сети. Борюсь там со спамом. Очень много где можно в моей работе применить машинное обучение. Хотелось бы получить практические знания. 

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

Интернет-агентство. Машинное обучение интересно с точки зрения анализа поведения пользователей на сайте во время рекламных кампаний. Поэтому я здесь.

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

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

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

Системный администратор хранилища данных телеком-компании. С машинным обучением пока не сталкивался, интересно вникнуть. 

Первое занятие

Первое занятие проводил Александр Крот, тема - Введение в теорию машинного обучения.

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

По-прикладным задачам, которые решает "машинное обучение", их можно разделить на много сегментов. Мы не будем изучать целый ряд сегментов, например, анализ изображений и видео (computer vision), не уделим время анализу аудиосигналов (signal processing), оставим за бортом обработку естественного языка (natural language processing) тем более, что в этой области применительно к русскому языку пока все слабо развито. В общем в сферу deep learning не пойдем, но поговорим об обработке текстов, анализе соцсетей

На первом занятии начали практически от печки - что делает машинное обучение с объектами на основе признаков, чем отличается обучение с учителем от обучения без учителя (в понятиях машинного обучения). Вспомнили, что такое класификация, регрессия и кластеризация и KMeans.

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

Немало внимания было уделено инструментам анализа данных. Причем, когда об этом зашла речь, то четко провели разграничение - какие из инструментов и для чего уместно использовать.
Скажем, если речь о хранении и обработки BigData, то это Hadoop и Spark.
А если речь о работе с обучающими выборками (куда меньшими по объемам), то уместны совсем иные продукты, такие, как RapidMiner, Weka, языки программирования Python (с Jupyter и библиотеками scikit-learn) и R (RStudio) - все менее популярный.

Если все же нужно работать с Big Data, то это файловая система HDFS и модель вычислений MarReduce. Для работы с ними есть целый набор инструментария: ZooKeeper, Ooze, Azkaban, Scoop, Flume, Kafka, Hbase, Cassandra, Hive, Pig, NameNode. Про каждый продукт коротко прошлись - чем от других отличается и где уместен.

Конечно упомянули и in-memory, Apache Spark. Поговорили о том, как обойтись без кластера и что делать, если даные не лезут в память - Vowpal Wabbit и доучивание.

Затем подробно говорили о бизнес-процессе разработки продукта.

Поговорили на тему подготовки специалистов в областях Data Science и Big Data. Какая нужна подготовка (математика, мат.статистика, навыки программирования), что затем следует выучить. Навыки программирования нужны минимальные (по крайней мере для аналитиков - им достаточно научиться писать грамотные запросы на Python, SQL, R).

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

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

Отступление на тему "сколько стоят все эти чудеса"? 

Вопрос стоимости почему-то все время поднимается, когда я пишу про Школу данных Билайн. Предупреждая вопросы тех, кто их еще не задал - да, обучение на курсе стоит 100 000 (сто тысяч) российских рублей. С одной стороны, это немалые деньги, а с другой мой MBA-курс в ВШЭ стоил и вовсе $7 тысяч. "Свет знаний" стоит немало... бесплатно можно полежать на диване с бутылочкой пива. Вопрос личного выбора. 

О моих впечатлениях от занятия

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

Между тем, домашку действительно задали и при первом взгляде на некоторые вопросы, я пока не знаю, как подойтик к решению. И это мы еще не добрались до тем, требующих программирования! При том, что я не более процентов 40-50% введения в Python прочел/прорешал примитивные задачки.
Ладно, пока рано пугаться, еще есть среда и четверг, чтобы во всем разобраться. :)

+ +

Раньше на эту тему написал здесь - там есть еще полезные подробности для тех, кого тема заинтересовала.

Популярные сообщения

Translate