Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
36 - Telegram Web
Telegram Web
Ну и фоточки с хака
Необходимость ВУЗа для программиста

Есть мир айтишников, а есть остальной мир : гуманитариев, инженеров и всех кто не IT. Я сейчас буду рассматривать конкретно сторону IT.
И это чисто субъективщина, свои мысли в комментарии. Буду рад обсудить 🤡

Начну с того, что нужно среднестатистическому прогеру - работа. Потому что основное обучение ремеслу происходит именно там, а значит и развитие по карьерной лестнице. Но джуну сложно получить еë, ведь даже при поиске первой работы, тебя просят опыт в работе. И от сюда выходит первая проблема:
ВУЗ не даëт релевантный опыт работы, как следствие, выпускник выходит с голой попой и никому не нужный 🫣

1 год бакалавра необходим - это матан + линал, это база, особенно в DS. Но остальные три года? За это время можно выучить релевантные предметы и стать специалистом более лучшего качества в определённой сфере

Тут можно поспорить: ВУЗ тебя делает специалиста широкого качества. Ты сможешь и в DS, и в DA, и в разработку, да даже принтеры чинить сможешь. Но качество образования лично моего ВУЗа (МИРЭА) оставляет желать лучшего ПО НЕКОТОРЫМ ПРЕДМЕТАМ. На мой вопрос к преподавателю "зачем это мне нужно будет , и где я смогу это применять? ", препод с улыбкой отворачивается, игнорируя меня. И как тогда мне интересоваться предмету, если я даже не знаю зачем он мне нужен ?

Я слышал и видел много практик, когда человек работал с второго курса и на выходе из ВУЗа получал +200к, при этом забивая на образование в ВУЗе, но не забивая на личное образование 😎

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

#Мысляки
Ebout Data Science | Дима Савелко pinned «Личный ROADMAP по Data Science/Data Analytics + ссылки на ресурсы Придерживаясь этого плана, я стал Junior Data Science по NLP🤓 1. Математика 🧮 Для начала хватит первого курса вышмата: - Линейная алгебра (матрица, определитель, обратная матрица и т.д.) …»
Ebout Data Science | Дима Савелко pinned «Материалы по DS / DA Python / SQL - Программирование на Python - Алгоритмы и структуры данных МФТИ - Тренировка алгосов - Интерактивный тренажер по SQL - Оконные функции - Pandas - Numpy - Matplotlib Статистика: - Основы статистики I - Основы статистики…»
Основные типы задач машинного обучения

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

Есть три основных вида задач машинного обучения:
- Обучение с учителем (Supervised Learning)
- Обучение без учителя (Unsupervised Learning)
- Обучение с подкреплением (Reinforcement Learning)

1️⃣ Обучение с учителем (Supervised Learning) - это когда у вас есть с чем сравнивать, то есть примеры правильных ответов, на которых обучается модель. Грубо говоря, вы показываете тупой машине, что является правильным ответом, а она со временем становится умной и красивой
а) Задача регрессии - предсказание определённого числа на основе каких-то данных. (Предсказание стоимости квартиры, исходя от месторасположения и количества квадратных метров)
б) Задача классификации - предсказание определённого класса тоже на основе каких-то данных (Предсказание пола человека по росту, весу и тд.)

2️⃣ Обучение без учителя (Unsupervised Learning) - это когда моделька предсказывает без вашего вмешательства, то есть вы не лезете в её обучение, она сильная и независимая
а) Кластеризация - объединение объектов в группы по схожим признакам
б) Рекомендательные системы - подбор контента на основе предпочтений пользователя (Spotify, youtube, netflix - все они используют рекомендательные системы)
в) Поиск аномалий — поиск объекта, сильно отличающегося от других

3️⃣ Обучение с подкреплением (Reinforcement Learning)
Модель обучается на основе её прошлых предсказаний, она взаимодействует с некоторой средой, получая от неё негативные и позитивные сигналы, тем самым выступая для себя в роле учителя
Пример

Почитать про машинное обучение можно здесь или здесь

#DataSciencce
Градиентный спуск.

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

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

Этапы градиентного спуска для функции одной переменной на картинке:
1️⃣ Мы появились в какой-то точке X_start, около которой хотим найти минимум функции
2️⃣ Затем мы находим наш градиент (направление нашего компаса)
3️⃣ И с определённой длиной шага спускаемся против направления нашего градиента. Определённая длина - это какое-то число, с которым мы будем спускаться вниз. Оно означает длину нашего шага. Назовём его learning_rate. Зачем это нужно, расскажу чуть позже.
4️⃣ Спустившись, мы получили новую точку X. И теперь повторяем всё с самого начало - то есть X_start = X
И наша финальная формула выглядит так: X = X_start - learning_rate * Градиент

Так как градиент - это вектор, который состоит из чисел. Они могут быть большими или маленькими. И мы можем спокойно перепрыгнуть наш минимум или вовсе не дойти до него. Поэтому для контроля мы используем Learning rate, он уменьшает наш шаг 🏃‍♀️

Подробнее можно посмотреть здесь или здесь
#DataScience
Про джунство на 2-ом курсе

Этот пост про:
1⃣ Как я к этому пришёл?
2⃣ Как совмещаю с вузом?
3⃣ Как меня взяли, если я на 2-ом курсе?
4⃣ Что я конкретно делаю на работе
?

Можете смело пропускать пункты, которые вам не нравятся. Изложение будет по порядку 🙌

Как я к этому пришёл? 🏃‍♂
Работал. Много работал.
Это путь длинною в год, в начале которого я решил собрать команду, чтобы участвовать в хакатонах и параллельно изучал ML' ку в DLS.
Хакатоны дали мне бесценный опыт управления командой и некоторое виденье, как должны решаться бизнес задачки.
В конце весны, под самый разгар сессии, я решил активно начать искать различные вакансии. Путëм такого ожесточённого поиска я устроился на Karpov/Courses, а там пошло поехало...
Мне дали курсы от Толи Карпова, а они самая настоящая имба.
Я не останавливался в своих поисках работы ,и меня позвали на собеседование в DSM GROUP на аналитика, но во мне заметили потенциал дата сатаниста ,и дали мне офер сатанистом
Вывод: работай, не сдавайся, не бойся ошибок и работай

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


Как меня взяли, если я на 2-ом курсе? 🤓
Всë зависит от работодателя: некоторым компаниям непринципиально взять студента, некоторые принимают только с высшим образованием, некоторые принимают только студентов. Мне повезло, моему руководителю было всë равно на возраст.
Ещё дело в том, сможете ли вы решить бизнес-задачу - вы должны доказать, что именно вы лучше всех выполните задачу и принесëте больше всех денег компании


Что я делаю на работе? 🧑‍💻
Я разрабатываю модель, которая должна определять один класс из десятки тысяч по текстовому описанию препарата. Это задача про nlp и про классический ml. Основная сложность заключается в достижении высокого качества. Мне нужно выбить accuracy ≈ 0.95, а я напомню, что это многоклассовая классификация по текстовому описанию
Более подробный пост будет, когда я выполню задачу, расскажу про технологии и подходы

Вывод:
- Работал много и усердно, чтобы был виден результат
- Вы должны чётко распределять нагрузку между работой и остальной жизнью
- Порешайте больше бизнес-задач в DS, чтобы показать работадателю, что
ass you can

#Мысляки
Линейная регрессия

Вы бизнесмен, продаёте квартиры. Вам необходимо узнать сколько будут стоить квартиры с определённым количеством квадратных метров (м^2), пусть это количество = x 🤔

То есть, у вас есть:
- Количество минут до метро равное x
Вам необходимо:
- Узнать цену квартиры, пусть она будет равна y

У вас есть распределение цен в зависимости от количества квадратных метров (Красные точки на картинке снизу).
Окей, у нас есть данные, у нас есть задача: предсказать что-то от чего-то (Число на вход - число на выход). И тут приходит она - линейная регрессия 🤤

Линейная регрессия
- это линейная модель, то есть зависимости в ней являются линейными: y = b_0 + b_1*x_1 + ... + b_n*x_n,
где b_0, b_1, ... b_n
- это константы, обычные числа, x_1, ... x_n - переменные 🫠

Что делает линейная регрессия:
- Она инициализирует b-этки, то есть генерирует рандомные коэффициенты для нашей линейной модели
- Потом подбирает их особым образом, чтобы линия, которая получается в ходе построения модели, передавала зависимость между ценой и квадратными метрами

Как она подбирает b-этки:
Здесь в бой вступает функция потерь.
Вот представьте, что у вас получилось какое предсказание y, но оно плохое, недостаточно передаёт нашу истинную зависимость
Функция потерь показывает насколько наша модель ошибается. Взяв производную от функции потерь, и с помощью градиентного спуска будем корректировать b-этки, что позволит модели лучше передать зависимость в данных 🙄

И что дальше ? Как оценить нашу модель ?
Есть такая вещь, называется метриками. Они показывают насколько модели хорошо работают. Метрик существует довольно таки много, например, для линейной регрессии: MSE, MAE, RMSE, RMSLE. Чаще всего используется MSE. но всё таки зависит от задачи.

Итог:
Линейная регрессия - незаменимая вещь любого дата сатаниста, правильно отобрав фичи, можно выбить качество большее, чем у какой-нибудь нейронки.
Данный пост был ознакомительный, подробнее читать тут, а смотреть тут 🫡
#DataScience
Векторное представление слов

Вот представьте, что вам необходимо предсказать положительный или отрицательный отзыв фильма.
Отзыв - "Фильм для дауничей, ливнул на 5 минуте" 🥴
Нам понятно, что явно отзыв отрицательный и написан недалёким человеком, но как машине понять окрас этого отзыва ?
Явно нужно построить модель бинарной классификации и засунуть в неё.... слова?! Нет, эмбеддинги

Эмбеддинги
- это векторное представление чего-либо, в данном случае слов. То есть у нас есть слово "Мама", мы его представляем в вектор = [0,1, -3, ..., 12, -153]
Есть несколько методов, как можно представить слово в вектор.

1️⃣ Bag Of Words - для каждого слова подсчитываем его встречаемость в тексте.
Плюсы:
· Простой в применении;
· Не требует обработки текста.
Недостатки:
· Может порождать огромные матрицы;
· Не учитываем общий контекст задачи и среднюю частоту всех слов;
Смотреть тут

2️⃣ TF-IDF - позволяет выделить самые слова в тексте, учитывая общий контекст задачи, и то что написано в других объектах
Плюсы:
· Более компактный, чем bag of words;
· Учитывает важность слов.
Недостатки:
· Получаем оценку важности каждого слова через частности, но не погружаемся в контекст;
· Как и bag of words, у данного метода есть проблемы с однокоренными словами, падежами, склонениями и так далее.
Смотреть и читать

3️⃣ Word2Vec - название говорит само за себя, СловоКВектору
Плюсы:
· Модель быстро обучается и генерирует эмбеддинги (даже ваши собственные).
· Эмбеддинги наделены смыслом, спорные моменты поддаются расшифровке.
Минусы:
· Обучение на уровне слов: нет информации о предложении или контексте, в котором используется слово.
· Модель не учитывает то, что слово может иметь различное значение в зависимости от контекста использования
· Не очень хорошо обрабатывает неизвестные и редкие слова.
Смотреть

4️⃣ fastText - К основной модели Word2Vec добавлена модель символьных n-грамм. Это когда мы разбиваем слова на части "Черепаха" - "Чер", "ера", "реп", "епа", "пах", "аха"
Плюсы:
· Благодаря n-граммам неплохо работает на редких и устаревших словах.
· Решает проблему опечаток и склонений
Минусы:
· Обучение на уровне слов: нет информации о предложении или контексте, в котором используется слово.
· Игнорируется совместная встречаемость, то есть модель не учитывает различное значение слова в разных контекстах
Смотреть

Классная статья про эти и другие модели создания эмбеддингов
Как сделать рекомендательную систему 🧮

Мне дали тестовое задание после выигранного хака от Росэлторга 😎
На вход: у вас есть услуга ,и её надо продать. Также есть её описание: цена, категория, площадка продажи и тд.
На выход: топ покупателей, которые в потенциале могут заинтересовать этой услугой

Решение:
1️⃣ Преподготовка данных.
Датасеты, которые мне дали были довольно таки большие, поэтому я разбил его на рандомные строки и смерджил
Почистил их, сгенерил пару фич и свалидировал на основании времени
Дефолтная скучная фигня в данном случае

2️⃣ Обучение модельки
На одну услугу претендует несколько продавцов, но выигрывает только один. Поэтому я решил задачу бинарной классификации (чи купил/чи не купил).
ROC-AUC = 0.907 | PR-AUC = 0.955
Репозиторий с хорошими примерами использования CatBoost

3️⃣ Формирование эмбеддинга
Также в данных было описание: "Продам ребёнка машину недорого 3-х лет "
Найдя похожие записи про продажи детей машин, я бы сократил мою выборку, над которой работала уже обученная модель, в несколько раз
Я использовал FastText над лемматизированными словами. так как он не боится редких слов и не боится орфографических ошибок из-за n-gramm

4️⃣ Метрики
Было подсчитано две метрики
1 - Для какой части процедур в зависимости от n угадали хотя бы одного участника, то есть с какой долей вероятности мы угадали хотя бы одно микрославича
2 - Общая доля угаданных уникальных участий, сколько в среднем микрославичей мы можем угадать

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

Был хакатон TenderHack, и задача была предсказать два таргета: спад цены и количество участников в определённой торговой сессии 🧮
Кратко о решении:
1️⃣ Предобработали данные и сделали фичи
2️⃣ Сделал TF-IDF эмбеддинги на описании торговой сессии, затем уменьшил их размерность с UMAP и кластеризовал с помощью HDBSCAN (это проблема решения)
3️⃣ Добавил эти кластеры к фичам и классифицировал сессии на их статус (очень важная сессия)
4️⃣ Сделал две модели регрессии и предсказал таргеты

Проблема:
Если при условном миллионе моя модель работает, то при двух-трёх миллионах модель посылает меня нахуй🖕
Проблема в масштабируемости: TF-IDF имеет очень большую матрицу и обрабатывается большое количество времени
Мне понравилось, как ребята с первого места обработали текст. Они обработали его SBERT + LaBSE, что дало фиксированное количество признаков, учитывая английское описание слов. Но при этом их проблема была в том, что они не учитывали редкие слова, которые не были обучены ни SBERTом, ни LaBSE. Эту проблему можно победить правильным использованием или TF-IDF, или BM25. Ну это зависит от задачи 🫣

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

#DataScience
2025/07/06 12:35:06
Back to Top
HTML Embed Code: