Рубрика "изи контрибьюшн"
Пока ездил, посмотрел синтаксис Rust, собрался с силами и законтрибьютил в величайшую Rust-библиотеку для анализа табличных данных за последнюю тысячу лет(переименовал функцию в rust бекенде и в питонической обвязке) и страшно собой доволен. Теперь буду вам продавать использование МОЕЙ БИБЛИОТЕКИ.
Вообще во многих популярных инструментах есть задачи, которые можно за пару вечеров собрать и потом всю жизнь гордиться, как ты делал мир лучше. Я бы предложил для легкого старта портировать пару лоссов в CatBoost с CPU на GPU. Там всего лишь ванильно с плюсов переписать на CUDA код и распараллелить под векторные вычисления. Ну и догадаться, на что нужно абсолютные пути яндексовых серваков поменять, чтобы скомпиллить этого франкенштейна. Тут любой профан справится
Кстати, а есть уже какой-то бустинг, который на Rust написали? :0
Пока ездил, посмотрел синтаксис Rust, собрался с силами и законтрибьютил в величайшую Rust-библиотеку для анализа табличных данных за последнюю тысячу лет
Вообще во многих популярных инструментах есть задачи, которые можно за пару вечеров собрать и потом всю жизнь гордиться, как ты делал мир лучше. Я бы предложил для легкого старта портировать пару лоссов в CatBoost с CPU на GPU. Там всего лишь ванильно с плюсов переписать на CUDA код и распараллелить под векторные вычисления. Ну и догадаться, на что нужно абсолютные пути яндексовых серваков поменять, чтобы скомпиллить этого франкенштейна. Тут любой профан справится
Кстати, а есть уже какой-то бустинг, который на Rust написали? :0
GitHub
depr(python, rust!): Rename `count_match` to `count_matches` by I8dNLo · Pull Request #11028 · pola-rs/polars
Closes #10907
Renamed all occurrences of count_match to count_matches. Also rename CountMatch to CountMatches as mentioned in #10907
Renamed all occurrences of count_match to count_matches. Also rename CountMatch to CountMatches as mentioned in #10907
😁6🥰1🕊1
Запрети мне псевдолейблить
Из интересного, что удалось вынести для ICR, это разобраться какие бывают оверсемплинги для табличек. По ссылке оригинальный пост Ивана Исаева, с которым решали ICR, который я переписываю немножко сюда + дополняю своими мыслями. Оверсемплинг стоит попрбовать…
#ICR #таблицы #аугментация
Попробуем короткий формат?
Первый из небанальных кандидатов для апсемплинга- Gaussian Noise Up-sampling. Идея простая:
0. Выбираем параметры нормального распределения для каждой фичи
1. Из класса, которого меньше, выбираем объект
2. Добавляем к его признакам случайный нормальный шум
3. Добавляем получившийся синтетический объект в датасет для обучения (оригинальные объекты класса мы туда изначально не добавляем)
Теоретически работать должно лучше обычного апсемплинга, потому что объекты разные, их больше и они 'аугментированные'. В statistical learning где-то даже есть теоретический результат: если параметры шума аугментации меньше или сравнимы с реальным шумом измерения признака, то модель будет асимптотически лучше оценивать истинные параметры. Тут важно помнить, что семлируем мы с повторениями- это уменьшает итоговую дисперсию оценки параметров. Для линейных моделей даже доказательство есть.
Казалось бы, а зачем ты, Дима, про линейные модели рассказываешь? Мы же бодрые-молодые датасентисты из 2018, мы Catboost учим и стакаем с LightGBM. Дело в том, что теоретические трюки, улучшающие линейные модели обычно помогают и более сложным моделям работать лучше. Обычно.
Из плюсов:
1. Может быть лучше, чем обычные веса для классов, если правильно готовить параметры распределения шума для признаков
2. Работает для регрессии
3. Апсемплинг с повторениями позволяет уменьшить влияние выбросов
Проблемы у такого подхода тоже очевидные:
1. Параметры истинного распределения ошибки измерения признаков нам никто не даст ->
2. Параметры надо подбирать
3. То, что текущие параметры дают модель, которая работает на валидации лучше, совсем не значит, что мы их лучше подобрали, эти параметры тоже легко оверфитнуть
4. Не все ошибки измерения признаков распределены нормально (вспомним категориалки)
5. С пропущенными значениями тоже совершенно не ясно, что делать
6. Мы искусственно раздуваем данные, что замедляет пайплайн
Попробуем короткий формат?
Первый из небанальных кандидатов для апсемплинга- Gaussian Noise Up-sampling. Идея простая:
0. Выбираем параметры нормального распределения для каждой фичи
1. Из класса, которого меньше, выбираем объект
2. Добавляем к его признакам случайный нормальный шум
3. Добавляем получившийся синтетический объект в датасет для обучения (оригинальные объекты класса мы туда изначально не добавляем)
Теоретически работать должно лучше обычного апсемплинга, потому что объекты разные, их больше и они 'аугментированные'. В statistical learning где-то даже есть теоретический результат: если параметры шума аугментации меньше или сравнимы с реальным шумом измерения признака, то модель будет асимптотически лучше оценивать истинные параметры. Тут важно помнить, что семлируем мы с повторениями- это уменьшает итоговую дисперсию оценки параметров. Для линейных моделей даже доказательство есть.
Казалось бы, а зачем ты, Дима, про линейные модели рассказываешь? Мы же бодрые-молодые датасентисты из 2018, мы Catboost учим и стакаем с LightGBM. Дело в том, что теоретические трюки, улучшающие линейные модели обычно помогают и более сложным моделям работать лучше. Обычно.
Из плюсов:
1. Может быть лучше, чем обычные веса для классов, если правильно готовить параметры распределения шума для признаков
2. Работает для регрессии
3. Апсемплинг с повторениями позволяет уменьшить влияние выбросов
Проблемы у такого подхода тоже очевидные:
1. Параметры истинного распределения ошибки измерения признаков нам никто не даст ->
2. Параметры надо подбирать
3. То, что текущие параметры дают модель, которая работает на валидации лучше, совсем не значит, что мы их лучше подобрали, эти параметры тоже легко оверфитнуть
4. Не все ошибки измерения признаков распределены нормально (вспомним категориалки)
5. С пропущенными значениями тоже совершенно не ясно, что делать
6. Мы искусственно раздуваем данные, что замедляет пайплайн
🔥7💩2🐳2👍1
#ICR #SMOTE
Другой возможный подход к оверсемплингу данных для минорного класса это SMOTE: synthetic minority over-sampling technique
Тут экспериментируем уже с тем, как аугментировать данные.
Вместо добавления случайного шума, мы делаем чуть более хитрую процедуру:
1. Выбираем объект из минорного класса с повторениями
2. Находим N его ближайших соседей
3. Между признаками выбранного объекта и его соседями берем линейную комбинацию и получившийся пример кладем в наш синтетический датасет
4. (Опционально) Андерсемплим мажорный класс
Из плюсов (кроме уже упомянутых):
0. Всего один параметр
1. Может быть лучше, чем обычные веса для классов, если правильно подобрать количество соседей
2. Не так зависим от нормального распределения
Из ключевых минусов:
1. Не ясно, что делать с категориалками
2. Все еще надо подбирать параметры (хотя и проще)
3. Аутлаер может сгенерировать кучу очень 'интересных семплов'
Другой возможный подход к оверсемплингу данных для минорного класса это SMOTE: synthetic minority over-sampling technique
Тут экспериментируем уже с тем, как аугментировать данные.
Вместо добавления случайного шума, мы делаем чуть более хитрую процедуру:
1. Выбираем объект из минорного класса с повторениями
2. Находим N его ближайших соседей
3. Между признаками выбранного объекта и его соседями берем линейную комбинацию и получившийся пример кладем в наш синтетический датасет
4. (Опционально) Андерсемплим мажорный класс
Из плюсов (кроме уже упомянутых):
0. Всего один параметр
1. Может быть лучше, чем обычные веса для классов, если правильно подобрать количество соседей
2. Не так зависим от нормального распределения
Из ключевых минусов:
1. Не ясно, что делать с категориалками
2. Все еще надо подбирать параметры (хотя и проще)
3. Аутлаер может сгенерировать кучу очень 'интересных семплов'
👍5🤮2🏆1
#ICR
Идея оверсемплинга используя простые модели получила развитие и в другую сторону:
GMOTE: Gaussian based minority oversampling technique for imbalanced classification adapting tail probability of outliers
Идея:
1. Кластеризуем наш датасет с помощью гаусовских смесей (EM)
2. С помощью измерения расстояния Махаланобиса (сейчас объясню), считаем, является ли пример выбросом
3. Снова кластеризуем с помощью EM
4. Семплируем из оставшихся кластеров с повторениями
Расстояние Махаланобиса- мера для того, чтобы учитывая корреляцию и дисперсию признаков, померять похожесть
D(x,y) - расстояние Махаланобиса между точками xx и yy.
x и y - векторы признаков (наблюдения).
S ^−1 - обратная ковариационная матрица, которая учитывает корреляции между признаками и дисперсии каждого признака. Вычисляется на основе данных.
Каждый кластер семплируем пропорциональное его размеру. Каждый семпл внутри кластера семплируем обратно пропорционально расстоянию от центра.
Количество кластеров кстати выбирается автоматически, по BIC (а зачем еще нужны EM, да?)
Из плюсов:
1. Дополнительных параметров для оптимизации не прибалвяется
2. Избавляемся как минимум от части выбросов
3. Можем оценивать правдоподобие для разных моделей
Из минусов:
1. Проблмеа категориалок
2. EM тоже могут оверфитнуться
3. Никак не аугментируем данные
Идея оверсемплинга используя простые модели получила развитие и в другую сторону:
GMOTE: Gaussian based minority oversampling technique for imbalanced classification adapting tail probability of outliers
Идея:
1. Кластеризуем наш датасет с помощью гаусовских смесей (EM)
2. С помощью измерения расстояния Махаланобиса (сейчас объясню), считаем, является ли пример выбросом
3. Снова кластеризуем с помощью EM
4. Семплируем из оставшихся кластеров с повторениями
D(x,y) - расстояние Махаланобиса между точками xx и yy.
x и y - векторы признаков (наблюдения).
S ^−1 - обратная ковариационная матрица, которая учитывает корреляции между признаками и дисперсии каждого признака. Вычисляется на основе данных.
Каждый кластер семплируем пропорциональное его размеру. Каждый семпл внутри кластера семплируем обратно пропорционально расстоянию от центра.
Количество кластеров кстати выбирается автоматически, по BIC (а зачем еще нужны EM, да?)
Из плюсов:
1. Дополнительных параметров для оптимизации не прибалвяется
2. Избавляемся как минимум от части выбросов
3. Можем оценивать правдоподобие для разных моделей
Из минусов:
1. Проблмеа категориалок
2. EM тоже могут оверфитнуться
3. Никак не аугментируем данные
👍6😁2💩2
Тут новая фича вышла:
1. Обновляем телеграмм
2. Бустим канал по ссылке: https://news.1rj.ru/str/pseudolabeling?boost
3. Получаем благословление до самого конца большой игры
1. Обновляем телеграмм
2. Бустим канал по ссылке: https://news.1rj.ru/str/pseudolabeling?boost
3. Получаем благословление до самого конца большой игры
💩4🤮1
Читаю статью про 'новый' алгоритм для ускорения Jacobi SVD, и такой 'что-то не так. Что-то неправильно. Что-то странно...'
А потом скипнул первый параграф и как понял, в чем дело было
А потом скипнул первый параграф и как понял, в чем дело было
🤣12🫡6🗿1
Постепенно возвращаюсь к Kaggle-кранчам и набросал ядро для Open-Problems Single-Cell Pertrubation
Говорят, если его немножко докрутить (в коде есть подсказка) и сблендить с текущими популярными блендами, то можно влететь в медали
Говорят, если его немножко докрутить (в коде есть подсказка) и сблендить с текущими популярными блендами, то можно влететь в медали
Kaggle
Kfold simple NN refactored
Explore and run machine learning code with Kaggle Notebooks | Using data from Open Problems – Single-Cell Perturbations
🔥10👍1
Стало ли фармить кагл легче, чем в 2018? 🤔
Поспорил с Криптовалерием насчет того, сложнее или проще стало фармить каггл сейчас, чем годами ранее. Спор был горячий и чуть не закончился поломанными ногами, но в споре родилась истина.
Для того, чтобы решать вопрос датадривенно, был использован Google Sheets. Какая датадривенность и без экселя? 📊
Ссылка на таблицу
Я прошелся по вебархиву за разные года и перенес данные в эксель, руками подсчитав количество кгм/мастеров/экспертов и построив базовые графики. Перейдем же к ним!
На первом графике видно, что число мастеров/экспертов/кгм исчезающе медленно прирастает по сравнению с общим числом пользователей.🔽
График второй:
График нормированных производных по годам для конкретных тайтлов. Придумал Валерий, так что expert approved
Например, в 2018 новых экспертов стало сильно больше, а вот количество контрибьюторов осталось примерно прежним.📈 📈 📈
Вот отсюда и можно сделать вывод: в 2018 стать экспертом было проще, чем в 2022. Потому что процентный прирост относительно прошлого года выше. С другой стороны, стать мастером из эксперта стало чуть проще. Но суммарно прорваться из новайсов в мастера стало все же сложнее, чем в 2018. Из двух графиков можно сделать вывод: каглить становится суммарно конкуретнее!
И да, в 2018 Кагл поменял политику и перебанил/даунгрейднул кучу работяг из контрибьюторов в новайсов. А еще не смотрим на 2023 год, он не полный, но крайне многообещающий.
Поспорил с Криптовалерием насчет того, сложнее или проще стало фармить каггл сейчас, чем годами ранее. Спор был горячий и чуть не закончился поломанными ногами, но в споре родилась истина.
Для того, чтобы решать вопрос датадривенно, был использован Google Sheets. Какая датадривенность и без экселя? 📊
Ссылка на таблицу
Я прошелся по вебархиву за разные года и перенес данные в эксель, руками подсчитав количество кгм/мастеров/экспертов и построив базовые графики. Перейдем же к ним!
На первом графике видно, что число мастеров/экспертов/кгм исчезающе медленно прирастает по сравнению с общим числом пользователей.
График второй:
График нормированных производных по годам для конкретных тайтлов. Придумал Валерий, так что expert approved
Например, в 2018 новых экспертов стало сильно больше, а вот количество контрибьюторов осталось примерно прежним.
Вот отсюда и можно сделать вывод: в 2018 стать экспертом было проще, чем в 2022. Потому что процентный прирост относительно прошлого года выше. С другой стороны, стать мастером из эксперта стало чуть проще. Но суммарно прорваться из новайсов в мастера стало все же сложнее, чем в 2018. Из двух графиков можно сделать вывод: каглить становится суммарно конкуретнее!
Please open Telegram to view this post
VIEW IN TELEGRAM
Google Docs
Спорю о каггле
🔥12👍4😍3👏2❤1
Через несколько часов закончится Open Problems, так что в следующую пятницу будет разбор соревы
🔥5
Коротенько расскажу про соревнование и решения на стриме у Алерона сегодня
Forwarded from 🏄 Соревновательный Data Science | Kaggle | Чемпионаты
Привет, чемпионы! 🏆
📣 Завтра, 8 декабря в 17:00, проведём ещё один стрим.
Расскажем про 3 соревы:
1) Дима @dimitriy_rudenko расскажет, как участвовал в Open Porblems, про топовые находки победителей, с фокусом на том, что можно переиспользовать. Канал Димы.
2) Артём @cosheimil расскажет про 2 соревы: как взял🥉 на LWP и про идущую сореву Enefit.
🔥Тем кто пропустил стрим прошлой пятницы советуем посмотреть. Мы там в начале уже затронули Enefit.
Помните:
🧑🏻💻 пишите в комментах про какие соревы вам интересно послушать в следующие пятницы!
🕵🏻♂️ вы всегда можете поделиться обзором соревы, в которую планируете залететь или той в которой уже поучаствовали. Пишите в лс @dfeeler ⚡️
📣 Завтра, 8 декабря в 17:00, проведём ещё один стрим.
Расскажем про 3 соревы:
1) Дима @dimitriy_rudenko расскажет, как участвовал в Open Porblems, про топовые находки победителей, с фокусом на том, что можно переиспользовать. Канал Димы.
2) Артём @cosheimil расскажет про 2 соревы: как взял🥉 на LWP и про идущую сореву Enefit.
🔥Тем кто пропустил стрим прошлой пятницы советуем посмотреть. Мы там в начале уже затронули Enefit.
Помните:
🧑🏻💻 пишите в комментах про какие соревы вам интересно послушать в следующие пятницы!
🕵🏻♂️ вы всегда можете поделиться обзором соревы, в которую планируете залететь или той в которой уже поучаствовали. Пишите в лс @dfeeler ⚡️
🤡2❤1👎1🔥1🤮1👀1 1
Написал простенький кернел для UBC:
Все картинки нарисовал
Для всех картинок посчитал соотношения сторон к тамбнейлам
Отпечатал классы для каждой картинки
Например тут можно увидеть, что некоторые картиники- это снимок в двух срезах, а некоторые в трех. Планирую посмотреть вообще все картинки из трейна, мб там что-то совершенно великолепное найдется.
Наслаждайтесь
Все картинки нарисовал
Для всех картинок посчитал соотношения сторон к тамбнейлам
Отпечатал классы для каждой картинки
Например тут можно увидеть, что некоторые картиники- это снимок в двух срезах, а некоторые в трех. Планирую посмотреть вообще все картинки из трейна, мб там что-то совершенно великолепное найдется.
Наслаждайтесь
Kaggle
All Kaggle Images printed
Explore and run machine learning code with Kaggle Notebooks | Using data from UBC Ovarian Cancer Subtype Classification and Outlier Detection (UBC-OCEAN)
🔥4🕊2👍1 1 1
überподробный writeup нашего решения для open problems:
https://www.kaggle.com/competitions/open-problems-single-cell-perturbations/discussion/460858
В соревновании есть приз за лучшие writeup'ы: 10к для 5 команд из топ-100, выбранных судьями.
Апвоуты, апвоуты, апвоуты! Помогите мне забрать денег с каггла!🔝 🔝 🔝
А еще если вы осилите эту стену текста и хотите покритиковать части поста, как непонятные или нашли опечатки- пишите в комменты или мне в личку обязательно. Ваш альтруизм не будет забыт!
https://www.kaggle.com/competitions/open-problems-single-cell-perturbations/discussion/460858
В соревновании есть приз за лучшие writeup'ы: 10к для 5 команд из топ-100, выбранных судьями.
Апвоуты, апвоуты, апвоуты! Помогите мне забрать денег с каггла!
А еще если вы осилите эту стену текста и хотите покритиковать части поста, как непонятные или нашли опечатки- пишите в комменты или мне в личку обязательно. Ваш альтруизм не будет забыт!
Please open Telegram to view this post
VIEW IN TELEGRAM
Kaggle
Open Problems – Single-Cell Perturbations
Predict how small molecules change gene expression in different cell types
👍8🔥2 1 1