Kantor.AI
11.6K subscribers
144 photos
12 videos
5 files
188 links
Канал Виктора Кантора про Data Science, образование и карьеру в сфере анализа данных. По вопросам сотрудничества: @mariekap

РКН: 5140322136
Download Telegram
Мой дозор окончен

🎉 Чуть больше месяца назад я сообщил руководству, что мой дозор окончен, ушел с позиции директора Big Data МТС и передал вахту своему преемнику.

🌴 Июнь я провел в месячном отпуске, потому что марафон на 4.5 года в МТС, из которых 3.5 в топ-менеджменте меня порядком измотал. Большая компания это всегда очень сложная система с большим количеством связей, которые нужно учитывать в работе, огромное количество коммуникаций и множество случайных факторов, поэтому было не сложно подустать :)

На самом деле я "просился на волю" уже больше двух месяцев, т.к. отработал свой трехлетний топ-менеджерский контракт, и хоть мне его и продлили еще на три года, уже доказал себе все, что хотел. Убедиться я хотел в том, что став топ-менеджером в самой большой российской телеком компании в 28 лет смогу не только все не продолбать, но и на порядок вырастить полезность Big Data для МТС и значительно усилить команду. Для меня это было личным сражением за молодежь в топ-менеджменте. Эдакая борьба с эйджизмом, когда все привыкли, что высшее руководство это всегда ребята в возрасте. Я не мог позволить себе провалиться, потому что я верил, что каждый успешный прецедент открывает дороги десяткам ребят, способным развивать российский бизнес по-новому, а каждый фейл заставляет акционеров больших компаний смотреть на молодых кандидатов с опаской.

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

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

☝️Ну и напоследок, вот вам выводы, которые я могу сделать из моего приключения на 3.5 года (после которого я уже точно другой человек):

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

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

3) Ваш главный враг - это вы сами и ваш собственный страх и неуверенность в себе. Лучше быть смелым и тупым руководителем, чем умным, но трусливым. А еще лучше умным и смелым :) Однако не путайте смелость и откровенное слабоумие с суицидальными нотками. Там тонкая грань, ее нужно уметь нащупать.

Принимаю в комментариях любые вопросы про работу на C-level, на какие могу - отвечу 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22354👍48🍾11👏7🤯3💩3😁1🫡1
Анкета для тех, кто хочет погрузиться в ML

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

Пройдите, пожалуйста, небольшой опрос: https://forms.gle/Du2yKQjvzAFHqaKd7

С некоторыми из тех, кто оставит свой контакт, проведем с командой встречу, чтобы узнать больше о вас и вашем пути. Также на основе ваших ответов буду выкладывать полезный контент в канал. Буду очень признателен всем, кто пройдет опрос :)
30👍14
Какое название ML-школы мы выбрали?

Итак, пораскинув мозгами и почитав ваши идеи для названия нашего проекта, мы с командой всё-таки определились с названием школы. Называться она будет MLinside (хотя вариант "Кантора" никого из нас не оставил равнодушным 😂)

Почему именно так? Во первых, для меня, как для человека, который действительно живет с машинным обучением в сердце, здесь есть некий метафорический смысл. Я верю, что, занимаясь чем-то, намного проще это делать, когда ты это любишь. Поэтому главное, чего мы будем добиваться – делать так, чтобы вы, наши слушатели, влюблялись в ML, чтобы тема стала для вас чем-то большим, чем просто обучением📚 Я считаю, что сейчас самое время влюбляться в машинное обучение, ведь лет 7-10 назад я и представить не мог, что когда-нибудь смогу объяснить своей бабушке, чем я занимаюсь. А сейчас про машинное обучение, искусственный интеллект знают все.

Другая отсылка, конечно, к intel inside. К тому, какие чувства это во мне вызывало в детстве: внутри компьютера, машины, которая так многое может, есть процессор – в некотором смысле сердце вычислений. И здесь хочется, чтобы ML стал сердцем вашей карьеры и вашего будущего.

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

https://t.iss.one/ml_inside
❤‍🔥37👍22🔥113💩2
🎲Пятница — время наших традиционных квизов. И сегодня квиз посвящён прогнозированию временных рядов.

Угадывайте и пишите ваш вариант ответа в комментариях под постом ;)
7🔥2
Как я решился на создание школы и уход из топ-менеджмента 😱

Я всегда хотел открыть свою школу машинного обучения. Много лет я преподаю в МФТИ, веду курсы в крупнейших российских компаниях, но я глубоко B2C-шный человек. В том смысле, что какой-то большой заказчик курса, будь то университет или компания, всегда ограничивает творчество. Делать продукт для людей - будь то курсы по выбору в универе (там все гораздо гибче, чем в обязательных) или наша с коллегами онлайн-специализация на Coursera - всегда доставляло мне гораздо больше удовольствия.

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

🧩Этот образ пазла и является ответом на вопрос, что же подтолкнуло меня запускать MLinside.

В этом году я успешно доработал до конца первого топ-менеджерского срока (да, кто не читал посты выше - на C-level все по срокам) и могу сказать, что теперь я увидел картину со всех уровней. Кроме того, за мою карьеру мне посчастливилось заниматься внедрением ML в ритейле и e-commerce, телекоме, банках, рекламе, райдтехе и даже немного в промышленности. Покрытие сфер тоже получилось близким к максимальному для одного человека. И я увидел общие задачи и паттерны применения ML в бизнесе, о чем тоже теперь могу рассказать (и что мы готовим в материалах одного из первых наших курсов).

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

💭Главная идея школы - сочетать разработку курсов с душой, от тех, кто любит свою предметную область, глубоко в ней разбирается и хочет делиться знаниями, с тем, чтобы все эти курсы собирались в один огромный пазл, который приведет вас к любому уровню в data-профессиях, если приложить достаточно усердия и внимания. Во время поверхностности, превосходства форм над содержанием, борьбы за ваше внимание, а не за результат, мы в MLiside - за глубокий продукт, который сделает вашу жизнь и вашу карьеру более полной и значительно более счастливой :)

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

🎨 Но наша философия сделать все иначе, потому что «мы так видим». И здесь кроется еще одна причина, почему я решился. Возник прецедент. Примерно тогда же, когда я пришел в топ-менеджмент, Толя Карпов и Беслан Курашов запускали свой Karpov.Courses. И пока я познавал тонкости работы в руководстве большой группы компаний, ребята построили самую крутую и неинфоцыганскую онлайн-школу DS. Я часто радуюсь успехам других людей, потому что для меня это позитивный сигнал: «смог Вася, значит смогу и я». Так сработало и тут. Толя и Беслан смогли построить бизнес на сотни миллионов выручки, не скатившись и сохранив верность очень высокой планке качества. До них я считал, что это неминуемо приведет к разорению. А теперь я хочу повторить их опыт по-своему и на многое решился для этого :) Толя, Беслан, если вы читаете этот пост - спасибо вам огромное за вдохновение 🙏❤️
👍9244🔥21❤‍🔥7💩4👏1😁1😱1😈1
Kantor.AI
🎬 Записываем с Серёжей Епихиным первый выпуск 2 сезона нашего подкаста ТехТок (первый сезон здесь: https://podcast.ru/1635293813 ). 🎥 Первый сезон был без видео, теперь добавили картинку и обновили концепцию. Будем не просто говорить с классными ребятами…
🎬 Новый сезон подкаста

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

💡Пока я занимаюсь этой кропотливой работой, напомню вам, о чем были выпуски прошлого сезона подкаста (тогда еще в голосовом формате). Первым гостем был Александр Фонарев, основатель компании Rubbles, лауреат Forbes 30 до 30 и фактически автор и руководитель ШАДовского практического курса по машинному обучению (т.е. семинарской части курса). Послушать (если еще нет) можно здесь: https://podcast.ru/e/18TtWlj.2Ln

🙏 Btw, если кто-то хочет помочь мне с написанием табличек со вставками в видео вида таймкод-картинка-текст - пишите в личку :)
🔥15👍98
#карьера
С чего начать погружаться в мир работы с данными

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

1️⃣ Какие есть дата-профессии
2️⃣ Какие проекты и продукты делают люди, работающие с данными
3️⃣ В каких компаниях и чем можно заниматься
4️⃣ Как попасть на работу в компанию в одной из data-ролей

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

👨‍🔧Зная, что не только дата саентисты работают с данными, вы будете понимать, что при перекосе в сторону инженерии или аналитики, не обязательно насиловать себя тем, как работают ML алгоритмы.

❤️ Зная, какие большие области в работе с данными есть, вы можете попробовать разные типы задач и выбрать себе то, что и интересно, и отвечает вашим ценностям. Кому-то в кайф принести компании денег, а кому-то - спасать жизни. И там и там есть работа с данными, причем иногда даже в неожиданных местах. Так-то даже беспилотный транспорт в своей изначальной задумке должен радикально снизить число смертей на дорогах - чем не спасение жизней. Ну и конечно есть более очевидные варианты, будь то разработка новых лекарств или поиск потерявшихся людей в лесу по снимкам с дрона.

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

В следующих постах в теге #карьера я напишу ответы на эти вопросы, как их вижу. Буду очень благодарен за дополнения и запросы на другие посты в комментариях, так что комментарии категорически приветствуются 🙂
33👍12❤‍🔥6🤔2🎄1
#classic_ML

Простые методы ML

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

Уже лет пять или даже больше я, когда веду курсы машинного обучения, выхожу из положения следующим образом: рассказ про «простые методы» при всем их разнообразии помещается в начале курса в одно занятие, чтобы дать некоторый исторический экскурс и уберечь слушателей от самостоятельного «изобретения» этих методов с последующими большими надеждами, что «ух сейчас как заработает!». Во вторую очередь я отдаю дань истории, потому что не знаю, к кому слушатели однажды попадут на собеседование. Вдруг там будет какой-то любитель наивного байесовского классификатора или kNN, который откажет кандидату просто по принципу «если он такие простые вещи не знает, то о чем с ним говорить». Далее я приведу небольшое описание этих «простых алгоритмов», и чем они еще могут пригодиться в 2024 году.

Метод k ближайших соседей
Идея метода проста до ужаса: чтобы классифицировать объект выборки, найдем k объектов, похожих на него, и ответим тем классом, который среди них больше представлен. Хотим решить задачу регрессии (спрогнозировать число)? Без проблем, также найдем k ближайших объектов и усредним правильные ответы по ним. Ну например, если хотим понять, сколько заработает магазин в новой локации, находим k похожих на него и просто усредняем их продажи. Вот такой вот простой прогноз. Только когда говорят "ближайшие соседи" имеют ввиду именно в пространстве признаков, т.е. прогнозировать продажи в новом магазине надо не по географически ближайшим, а по тем, у которых похожий полный набор параметр: распределение доходов клиентов вокруг локации, количество своих магазинов и магазинов конкурентов рядом, размер города и т.д.

Если продажи в новом магазине сейчас вряд ли кто-то серьезно прогнозирует с помощью kNN, то вот в персональных рекомендациях метод k ближайших соседей до сих пор остается бейзлайном, и хорошо если всякие матричные разложения, бустинги и нейросетки его превосходят по качеству. Гораздо забавнее, если нет, потому что не сравнивали 🙂

Кроме того, kNN это достаточно широкое множество алгоритмов в том смысле, что есть какие параметры покрутить. Можно взвешивать и преобразовывать признаки, можно назначать разные веса соседям, можно применять всякие Kernel-based методы, в общем при желании есть куда закопаться, а это мы еще не вспомнили про быстрый поиск соседей в N-мерном пространстве признаков и всякие там ANN (Approximate Nearest Neighbors). В общем те, кто любят kNN, найдут чем занять и лекцию, и главу, и даже целый учебник.
👍5116😁2
#classic_ML

Наивный байесовский классификатор

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

В общем случае этот подход обобщается так: для каждого признака объекта вы по выборке оцениваете его распределение в классе 0 и в классе 1, а дальше просто смотрите на признаки объекта, считаете вероятность такой объект увидеть в каждом классе (как произведение по всем признакам объекта) и выбираете наиболее вероятный класс. Если классы априори в разной степени часто встречаются в природе (например, классы - болен ковидом и не болен) - то имеет смысл умножить это все на априорные вероятности классов.

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


Метод K средних

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

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

Неожиданным образом K-means очень крутой и адекватный метод кластеризации. Серьезно, если предположения алгоритма более-менее выполнены (кластеры выпуклые и примерно равного размера), получается очень даже хорошо и можно использовать метод и по сей день. Чудес как в любом методе кластеризации ждать не стоит, но как бейзлайн must, а не побить этот бейзлайн даже не стыдно, особенно если перед K-Means был некоторый feature engineering.

А что вы думаете об этих методах? Есть ли у них до сих пор какие-то применения, о которых можете упомянуть? Надо ли продолжать про них рассказывать людям?
47👍24🔥7👏3😁2🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
#образование
Как я начал и полюбил преподавать📚


Мои бабушка, мама, тётя и с некоторых пор даже отец - преподаватели. Поэтому в студенческом детстве (т.е. целые два года с поступления в МФТИ) я категорически избегал того, чтобы стать преподавателем. Ну должна же быть в человеке какая-то индивидуальность 🙂 Однако когда Никита Пустовойтов, заведовавший тогда кафедрой в МФТИ, предложил с ним вести факультатив по ML, я был счастлив до жути и вприпрыжку побежал готовить занятия.

В преподавании мне нравится смотреть на каждую тему с позиции «Что именно здесь может быть не очевидно? Какие вопросы возникают у того, кто видит это впервые или во второй раз?». Кажется, что вот ты рассказал по пунктам, как оно устроено, и все понятно. Но нет, даже стройный последовательный логичный рассказ - это еще не 100% успеха (хотя уже бóльшая его часть).

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

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

🔹Ну и, наконец, вопросы аудитории. Ни один солидный эксперт не задавал сам себе все те вопросы, которые за час вбросит два десятка новичков, интересующихся темой. И часто легко впасть в ступор от элементарного вопроса. Но ты же преподаватель, от тебя ожидают, что ты с ним разберешься. В итоге, получается довольно адреналиновая игра. Я в целом уже давно не стесняюсь сказать «не знаю», если у меня нет ответа сходу. Но, как правило, следом за этим я предлагаю порассуждать, и мы со слушателями быстро приходим к ответу. Однажды я спросил своего бывшего студента, что ему больше всего нравилось на занятиях, и он ответил, что именно это. Что можно было увидеть, как, не зная ответа, к нему прийти.

Все это постепенно затягивало меня в преподавание. Но определяющими были два явления, которые постепенно появились в моей жизни. Первое - студенты, как известно, голосуют ногами, и они начали голосовать за меня. Второе - когда я веду занятие, я полностью забываю обо всем, кроме своего предмета. Однажды, будучи в очень подавленном настроении, я вел семинар на Физтехе. В конце семинара я просто был запредельно счастливым человеком и даже в какой-то момент одернул себя: «эй, ты чего такой радостный, у тебя все плохо, давай, грусти обратно!». Этот момент я вспоминаю регулярно, он был поворотным.

С того поворотного момента осознания моей любви к преподаванию прошло наверно 10 или 11 лет. За это время мы с коллегами и друзьями:

✔️превратили DMIA в супер-мега-большой оффлайн курс, через который проходили тысячи студентов за все время,

✔️запустили невероятно успешную специализацию по машинному обучению на Coursera, через которую прошли 200+ тысяч слушателей,

✔️проводили множество крутых обучений в крупных компаниях.

Наши с коллегами по преподаванию ученики все это время тоже не стояли на месте. Они становились крутыми экспертами, присоединялись к нам как преподаватели (или не присоединялись и делали все сами, но все равно очень здорово), создавали и продавали свои стартапы за много миллионов долларов, становились серийными CEO data-стартапов. Очень многими ребятами я действительно горжусь. Не с позиции «вот я так хорошо научил», а просто искреннее участие в жизни другого человека неизбежно вызывает сопереживание, и дальше невольно следишь за успехами. Это тоже, кстати, очень важное наполнение преподавания - долгосрочные человеческие отношения и очень много тепла🫂
71🔥22👍18🥰5👏3🫡1
#математика
Математика в ML: объясняю на пиве

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

Часть 1. Математический анализ и линейная алгебра

🍺 Что делает машинное обучение? На основе известных примеров учится прогнозировать правильные ответы на новых примерах. Ну например, вы знаете население в окрестности 500 метров каждого магазина большой ритейловой сети (обозначим x1 для первого магазина, x2 для второго и так далее) и знаете сколько пива (естественно, безалкогольного) продают в каждом магазине за год (обозначим y1, y2 и так далее для всех магазинов). И вот вы хотите открыть новый магазин, рядом с которым будет жить х человек. Вы резонно предполагаете, что если х = 0, наверно и продажи будут примерно нулевые (конечно не факт, но примем для простоты) и решаете, что будете пересчитывать людей в пиво по формуле f(x) = a * x. Остается найти коэффициент а.

📉Ну что ж, мы хотим, чтобы ошибка прогноза хотя бы на известных нам примерах была как можно меньше. Т.е. например для первого магазина (y1 - f(x1)) было как можно меньше. Но, строго говоря, «как можно меньше» это немного кривая формулировка, если (y1 - f(x1)) будет большим по модулю но отрицательным числом - это нам не подойдет, значит мы сильно промахиваемся. Поэтому давайте смотреть на квадрат этого выражения: (y1 - f(x1))^2. Квадрат уж если будет маленьким, то тогда (y1 - f(x1)) будет близким к нулю, а значит мы будем мало ошибаться.

🌡️ Остается последний вопрос: что нам важнее - минимизировать ошибку прогноза на первом магазине (y1 - f(x1))^2, на втором (y2 - f(x2))^2, на третьем или еще на каком-то? Конечно же, мы хотим мало ошибаться в среднем. Отсюда легко придумать, каким надо подбирать наш коэффициент перевода людей в пиво a - таким, чтобы средняя температура по больнице средняя ошибка на обучающей выборке была как можно меньше:

((y1 - f(x1))^2 + (y2 - f(x2))^2 + ... + (yN - f(xN))^2) / N -> min

Ну что же, выражение выше, когда все x и y известны, можно рассмотреть как выражение, зависящее от а, т.е. мы имеем задачу вида L(a) -> min. Значит самое главное, что нам нужно из математики - уметь решать такие задачи.

👦 В нашем примере даже старательный десятиклассник (а иногда и девятиклассник) без проблем скажет: надо посчитать производную L(a), приравнять ее к нулю и получить готовую формулу для a. И это правда решит нашу проблему. Чуточку хуже будет, если мы прогнозируем потребление народом пива (безалкогольного!) не только по населению в окрестности магазина, но и по другим важным факторам (насколько в этом году будет теплое лето, какой средний доход у населения вокруг магазина, а есть ли рядом оживленные дороги и какой через них проезжает поток людей, есть ли рядом другие магазины и так далее).

👨‍🏫 В этом случае мы можем захотеть строить прогнозы вида f(x[1], x[2], ..., x[d]) = a1 * x[1] + a2 * x[2] + ... + ad * x[d], где d - количество признаков, используемых в прогнозе. Тогда наша задача принимает вид L(a1, a2, ..., ad) -> min, а это уже поиск экстремума функции от d переменных. Оказывается, на первом курсе матанализа студентам рассказывают, что тут можно действовать почти также, как в школе: только производную теперь нужно считать и приравнивать к нулю по каждой переменной. Например, всем известная готовая формула весов в линейной регрессии и получается таким образом. Более того, человек, окультуренный линейной алгеброй, а точнее знающий, что такое матрицы и как их перемножать, сможет получить эту формулу буквально в несколько строчек (см. рис.). Вот и матрицы пригодились.

Но это если наша функция L(a1, a2, ..., ad) красивая и простая. А если наша функция - какая-то страхолюдина (а в ML столько всего напридумывали), то выписать готовую формулу для коэффициентов уже сложно. И тут на помощь приходят численные методы оптимизации. В начале погружения в ML знать какие-то особые методы не обязательно, достаточно градиентного спуска.
🔥49👍1915👏3🤯1
#математика

↗️ Идея вот в чем. Если посчитать производную L по a1, а остальные переменные считать константами, получится так называемая частная производная L по a1. А вектор, координатами которого будут частные производные L по a1, a2, ... и ad - называется градиентом. Так вот оказывается, что градиент соответствует направлению наискорейшего роста функции. Т.е. если вам скажут чуть-чуть изменить коэффициенты a1, a2, ..., ad так, чтобы L выросла как можно сильнее - то надо менять их в направлении градиента.

💡 Какое это имеет отношение к нашей задачи поиска минимума? Самое прямое. Если вы хотите как можно быстрее уменьшить L, надо менять параметры в направлении антиградиента (градиент, умноженный на минус 1). Это породило простую идею: начинаем с некоторых случайных весов a1, a2, ..., ad, а дальше считаем антиградиент и меняем веса в его направлении, затем пересчитываем антиградиент уже с новыми весами, а потом снова меняем веса в направлении антиградиента и так до посинения. Ну ладно, не до посинения, а до момента, когда L уже существенно не уменьшается. Найденные значения коэффициентов и будут тем, что мы искали.

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

Что из математики при этом нужно знать вам? Если вы применяете ML алгоритмы как черные ящики, то почти ничего. А если вы претендуете на понимание их работы и умение все вывести и расписать - ну тогда достаточно уметь брать производные и знать, как перемежаются матрицы. В нейросетях еще потребуется не пугаться правила дифференцирования сложной функции (chain rule) и его версии для функции многих переменных (гуглим, что такое граф вычислений и как он связан с производной сложной функции) 🙂

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

P.S.: Если вы будете заниматься всякими теоретическими оценками в машинном обучении (если у вас нет математического образования - скорее всего не будете), например оценками обобщающей способности или доказательством того, что при определенных условиях все локальные минимумы ошибки нейросети являются глобальными, вам потребуются гораздо более глубокие вещи. Там найдется место и множествам меры нуль по Лебегу, и устойчивости по Ляпунову, но все это другая история, которой мы коснемся когда-нибудь в другой раз 🙂
🔥45👍2813💯9👏3🥰1
#образование
Моя история запуска школы ML🖋️
(часть 1)


Итак, с чего начинается запуск школы ML? С людей, которые ее запустят.

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

🗣️Савелий предложил делать вместе онлайн-школу ML. Т.к. отношения к ML он не имел, я сразу рубанул ему в личку суть и спросил (дословно): "А ты в ней зачем?". Савелий не растерялся, рассказал о своем опыте в построении процессов, наборе команды и маркетинге, короче, проверку на пацана прошел на ура. Поэтому мы договорились встретиться.

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

🧑‍💻На серьезное заведение нужны серьезные преподаватели. Поэтому я взял в оборот двух друзей, с каждым из которых мы вместе съели пуд соли. И этой историей я подробнее поделился в канале MLinside
🔥29👍2013🤔4👌2👏1
Forwarded from MLinside - школа ML
Первое видео на YouTube в рамках школы MLinside 🚩

Рад сообщить, что мы с командой дали старт проекту MLinside в том числе и на youtube-канале. В вводном видео я рассказал о том, как бы я учил машинное обучение в 2024, если бы начинал с нуля.

Буду рад вашей поддержке в виде подписки, лайка и комментария

Приятного просмотра⬇️
https://www.youtube.com/watch?v=ylMFNJID3Ks&ab_channel=MLinside
49🔥32👍17😈7🥰3👏2
#classic_ML

Линейные модели (часть 1)

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

В общем случае линейная модель в машинном обучении выглядит следующим образом. В задаче регрессии:

f(x[1], x[2], ..., x[d]) = w1 * x[1] + w2 * x[2] + ... + wd * x[d]

Где x[1], x[2], ..., x[d] - признаки объекта x,
w[1], w[2], ..., w[d] - веса этих признаков в нашей модели, о подборе которых мы еще поговорим далее.

В задаче классификации на два класса:

То же самое выражение для f, но выбор класса осуществляется по знаку f (>0 - отвечаем класс 1, <0 - отвечаем класс 0).

В задаче классификации на много классов:

Строим свою f для каждого класса (считаем его 1, а все остальные 0), а дальше выбор класса при прогнозе делаем по принципу «какая f больше, тем классом и отвечаем». Такой подход называется One-vs-all («один против всех» в русской локализации).

Остается сделать буквально пару ремарок:

1) Разумеется, случай f = 0 тоже возможен, но если признаки это просто вещественные числа, математически маловероятен. Поэтому хоть в случае f = 0 и было бы правильно отказываться от классификации, можно приписать его куда угодно - хоть в класс 0, хоть в класс 1, различия в теоретической части будут не очень большими.

2) Вы могли заметить, что все веса в формуле для регрессии умножаются на признаки. Но наверно было бы неплохо предусмотреть некий свободный коэффициент w0 (в английской литературе intercept), просто добавляемый к формуле выше, чтобы при нулевых значениях признаков прогноз не был обязан быть нулем (ну например, прогнозируете вы температуру воздуха где-нибудь в ОАЭ, ясно, что почти при любых значениях признаков нуля по Цельсию вам ожидать не стоит). Однако оказывается, что пока мы пишем формулы, а не реализуем алгоритм в программном коде, предусматривать ничего и не надо. Представьте, что в нашем объекте был добавлен искусственно еще один признак х0, который всегда равен 1. Тогда коэффициент перед ним и будет нашим w0. Значит можем писать формулы как писали раньше, только не забываем, что спрятали там вот такой костыль 🙂

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

L(w1, ... ,wd) = ((y1 - f(x1))^2 + (y2 - f(x2))^2 + ... + (yN - f(xN))^2) / N

(Кто хочет спросить, где же в формуле веса w, напомню, что они сидят в формуле для f)

Начав со случайных значений весов, шаг за шагом вы будете приближаться к оптимальным весам, пересчитывая антиградиент L по w и добавляя его к весам. Когда ошибка перестанет существенно меняться, вы можете считать что с какой-то точностью нашли минимум L, и уж по крайней мере полученные веса достаточно неплохие для вашей задачи.
34👍26🙏9❤‍🔥5🔥3
Однако внимательный читатель может заметить, что в формуле для L целых N слагаемых. Если в нашей обучающей выборке, например, миллион объектов, то значит ли это, что нам постоянно на каждом шаге нужно считать сумму из миллиона слагаемых? Конечно нет. Вы можете взять не всю выборку, а ее маленькую часть, например, 100 объектов или 10, и усреднить ошибку по ним. И градиент считать тоже по такой ошибке. Конечно это будет не такой точной оценкой средней ошибки, но тоже сойдет, а если на каждом шаге вы усредняете по новым случайно выбранным объектам - то этот случайный выбор нивелирует неточность оценки средней ошибки на каждом шаге. Такой подход называется стохастическим градиентным спуском (SGD, Stochastic Gradient Descent), а тот набор объектов, по которому вы усредняете ошибку на текущем шаге, называется пакетом или батчем (mini-batch). В предельном случае батч может состоять из одного объекта - т.е. вы просто каждый раз смотрите на ошибку на случайном объекте. И такой алгоритм будет работать на практике.

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

А в следующий раз мы поговорим о переобучении в линейных моделях, и чем случай классификации отличается от регрессии.
61👍38🥰27🔥13💩10👏1
#образование
Моя история запуска школы ML
(3 часть) - об организационных этапах открытия бизнеса📑

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

Первый вопрос, который возникает при регистрации бизнеса - а что именно регистрируем?

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

1️⃣ В ИП ты - единственный «владелец», отвечаешь всем своим имуществом. Вывод денег со счета ИП себе максимально прост - просто спокойно переводи себе на счет физ.лица, не забывая платить налоги, разумеется (а с современными банками для ИП типа Модульбанка и Точки делать это вообще мега удобно);

2️⃣ В ООО ты можешь быть одним из учредителей, у вас есть так называемый уставной капитал (от 10 тыс. рублей), и им вы и отвечаете. Деньги ты не можешь просто так перекинуть себе на счет физ.лица, нужно платить их себе через зарплату или дивиденды.

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

Получив «ок» от комплаенс и президента компании (как от непосредственного руководителя), я зарегистрировал с Савелием ООО и прислал данные по юр.лицу своему работодателю. И этот квест тоже был с некоторыми сабквестами🔽

🔹Во-первых, когда мы подавали документы первый раз, нотариус отказался их принимать (не хватало чего-то из разряда «где-то ИНН не указан» или чего-то подобного). Взяв полчаса на исправление, мы внесли правки и переслали обновленный документ по e-mail. В ответ получили мини-лекцию о том, что нотариус - это не копировальный центр, чтобы тут что-то печатать😅 В итоге, нам все распечатали, дали подписать и приняли

🔹Во-вторых, для окончания регистрации нужно было с компа подписать что-то с помощью ЭЦП (уж простите, не помню деталей - давно было, плюс процесс регистрации вел почти целиком Савелий, за что ему огромное спасибо). Я, как всегда, дотянул до момента, когда нужно было срочно получить ЭЦП. Оформил заявку, выбрал офис для получения, а потом мне перезвонили и сказали, что в этом офисе не выдают ЭЦП (почему он есть на сайте - знать не знают). Пришлось ехать на другой конец Москвы. Ну, час в одну сторону, час в другую, и я с ЭЦП. Вечером того же дня все, что нужно, было подписано.

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

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

Ну а в следующий раз я расскажу о том, с чего начинается работа над курсом. Кстати, а вы как думаете, с чего? 🙂
👍10836🔥32👏12
#подкаст

Пока мы продолжаем монтировать 2 сезон подкаста ТехТок, продолжаю напоминать, что в первом сезоне мы общались с гостями из IT про их опыт. Второй выпуск был с Александром Гостевым - антивирусным экспертом «Лаборатории Касперского».

https://music.yandex.ru/album/23021001/track/106428451?

Тут и про карьеру самоучки, и про зарождение вирусов и антивирусов, и про работу с Интерполом, и про то, как вирусы бегали по мобильным зрителей на стадионе, пока игроки бегали по полю 🔥🔥🔥

P.S.: Огромное спасибо моему тогдашнему пиарщику Кате Трифоновой, которая этих прекрасных людей собрала к нам в подкаст :) Эти беседы с гостями были просто отдушиной в обычной менеджерской рабочей неделе.
🔥159👍10387👏74🎅21🎉15🥰14💯14