Dmatryusофрения pinned «Текущие проекты 📖 Книга "Обучение без учителя. Искусство ориентации в энтропии " (#ul_book). Книга задумывается, как лёгкое в освоении пособие по UL. ⛓ Библиотека для построения ML пайплайнов DmML-lab ( #dmml_lab). Идея в том, чтобы разработать универсальные…»
#ul_lib
Слышали про semi-supervised learning?
Это способ машинного обучения, когда есть небольшое количество размеченных данных, обучаясь на которых нужно разметить много большее количество данных.
Чаще всего используют индуктивный подход:
1. Берём базовую модель (например knn или svc)
2. Обучаем её на известных данных
3. Предсказываем на этой модели неразмеченные данные
4. Отбираем предсказания
5. Переходим на шаг 2
Для отбора чаще всего используется порог по
Сегодня я тоже завершил разработку такой модели, но на совсем другом принципе. В моей практике это будет уже вторая самописная semi-supervised модель.
Первую я использовал для поиска фродовых объявлений на рынке недвижимости. Но сегодня речь не о ней.
Сейчас я занимаюсь моделью эластичности клиентов. Особенность задачи в том, что истинных меток очень мало, а клиенты образуют довольно крупные кластера, поэтому классические semi-supervised подходы не решат бизнес задачу, так как зачастую реакция на разметку дорогостоящая. В антифроде, например, это затраты на ручную проверку объявления. А в случае эластичности - затраты на промо предложение.
О принципе работы своей модели расскажу в другой раз, но для затравки расскажу о предварительном тестировании:
Все знают датасет ирисов. 150 измерений. Модель на дефолтных параметрах, обучившись на 30, дала точность разметки в 0.86. Конечно, результат не показателен, да и проблемы ещё есть, но как минимум это доказывает, что концепт рабочий.
Слышали про semi-supervised learning?
Это способ машинного обучения, когда есть небольшое количество размеченных данных, обучаясь на которых нужно разметить много большее количество данных.
Чаще всего используют индуктивный подход:
1. Берём базовую модель (например knn или svc)
2. Обучаем её на известных данных
3. Предсказываем на этой модели неразмеченные данные
4. Отбираем предсказания
5. Переходим на шаг 2
Для отбора чаще всего используется порог по
predict_proba, а алгоритм ограничивается количеством итераций или просто все точки размечаются с нужной уверенностью.Сегодня я тоже завершил разработку такой модели, но на совсем другом принципе. В моей практике это будет уже вторая самописная semi-supervised модель.
Первую я использовал для поиска фродовых объявлений на рынке недвижимости. Но сегодня речь не о ней.
Сейчас я занимаюсь моделью эластичности клиентов. Особенность задачи в том, что истинных меток очень мало, а клиенты образуют довольно крупные кластера, поэтому классические semi-supervised подходы не решат бизнес задачу, так как зачастую реакция на разметку дорогостоящая. В антифроде, например, это затраты на ручную проверку объявления. А в случае эластичности - затраты на промо предложение.
О принципе работы своей модели расскажу в другой раз, но для затравки расскажу о предварительном тестировании:
Все знают датасет ирисов. 150 измерений. Модель на дефолтных параметрах, обучившись на 30, дала точность разметки в 0.86. Конечно, результат не показателен, да и проблемы ещё есть, но как минимум это доказывает, что концепт рабочий.
Dmatryusофрения
#ul_lib Слышали про semi-supervised learning? Это способ машинного обучения, когда есть небольшое количество размеченных данных, обучаясь на которых нужно разметить много большее количество данных. Чаще всего используют индуктивный подход: 1. Берём базовую…
Исправил ошибку в алгоритме и получил 0.95 accuracy.
👍4
#ul_lib
Вчера весь день тестировал свой новый алгоритм. Пока рабочее название -
В ходе тестирования нашёл пару неприятных ошибок. После их исправления наблюдал именно такое поведение алгоритма, как задумывалось: на heatmap таргета он как бы сглаживает картинку с увеличением контраста. То есть те зоны, где таргет был плотным, он становится плотнее, а там, где был изрядно разбавлен, его становится меньше или вовсе исчезает. На этом принципе и строится предсказание.
Ключевая проблема текущей реализации... Она оооочень медленная 🐌
Большие пространства за адекватное время не разметишь. У меня уже куча идей для оптимизации, но это всё долго и требует тестов. Но бенчмарк уже выбран.
Вчера весь день тестировал свой новый алгоритм. Пока рабочее название -
Radius Density Classifier.В ходе тестирования нашёл пару неприятных ошибок. После их исправления наблюдал именно такое поведение алгоритма, как задумывалось: на heatmap таргета он как бы сглаживает картинку с увеличением контраста. То есть те зоны, где таргет был плотным, он становится плотнее, а там, где был изрядно разбавлен, его становится меньше или вовсе исчезает. На этом принципе и строится предсказание.
Ключевая проблема текущей реализации... Она оооочень медленная 🐌
Большие пространства за адекватное время не разметишь. У меня уже куча идей для оптимизации, но это всё долго и требует тестов. Но бенчмарк уже выбран.
#ul_lib
Сейчас почти всё свободное время (когда есть внимание) трачу на развитие алгоритма Radius Density Classifier. Вот немного новостей.
Алгоритм хорошо справился с бизнес-задачей по разметке эластичных клиентов. Пока классическими SL (supervised learning) алгоритмами получить схожие по качеству результаты не получилось, но тесты продолжаются.
Проблема SSL (semi-supervised learning) алгоритмов в том, что они плохо интерпретируемы, так как они так или иначе построены на идее близости известных меток к неизвестным. Однако после разметки можно сделать каскад с SL алгоритмом, который лучше объясняет зависимость целевой переменной от признаков. Таким образом SSL модели можно использовать для подкрепления SL моделей. Такой же подход можно применять и в отношении интерпретации UL (unsupervised learning) алгоритмов. Не редко он работает, но не всегда.
На ближайшее время в планах изучить побольше оригинальных статей по SSL, чтобы убедиться в оригинальности моего подхода и лучше изучить существующие решения. Если всё хорошо сложится, то может получится достойная публикация.
Изучение статей так же может быть полезно для поиска методов оптимизации текущей реализации алгоритма и улучшения понимания того, как писать потенциальную научную статью.
Сейчас почти всё свободное время (когда есть внимание) трачу на развитие алгоритма Radius Density Classifier. Вот немного новостей.
Алгоритм хорошо справился с бизнес-задачей по разметке эластичных клиентов. Пока классическими SL (supervised learning) алгоритмами получить схожие по качеству результаты не получилось, но тесты продолжаются.
Проблема SSL (semi-supervised learning) алгоритмов в том, что они плохо интерпретируемы, так как они так или иначе построены на идее близости известных меток к неизвестным. Однако после разметки можно сделать каскад с SL алгоритмом, который лучше объясняет зависимость целевой переменной от признаков. Таким образом SSL модели можно использовать для подкрепления SL моделей. Такой же подход можно применять и в отношении интерпретации UL (unsupervised learning) алгоритмов. Не редко он работает, но не всегда.
На ближайшее время в планах изучить побольше оригинальных статей по SSL, чтобы убедиться в оригинальности моего подхода и лучше изучить существующие решения. Если всё хорошо сложится, то может получится достойная публикация.
Изучение статей так же может быть полезно для поиска методов оптимизации текущей реализации алгоритма и улучшения понимания того, как писать потенциальную научную статью.
👍1
Просто пафосная цитатка:
Я, конечно, не настолько целеустремлен, но почему-то это вдохновляет.
Иногда нужно отказываться от чего-то, что Вам хочется ради чего-то, к чему вы шли всю жизнь.
Я, конечно, не настолько целеустремлен, но почему-то это вдохновляет.
😁1
#ul_book #ul_lib
В ходе исследования SSL алгоритмов возникло желание осветить и эту тему тоже. Много думал о том, как это сделать. Решил посвятить этой теме отдельную главу в книге.
Проблема такого решения в том, что придётся менять название книги, так как она будет уже не только про обучение без учителя. Та же проблема у библиотеки.
Преимущество такого решения в том, что подходы UL и SSL похожи. А некоторые SSL алгоритмы основаны на методах кластеризации.
В ходе исследования SSL алгоритмов возникло желание осветить и эту тему тоже. Много думал о том, как это сделать. Решил посвятить этой теме отдельную главу в книге.
Проблема такого решения в том, что придётся менять название книги, так как она будет уже не только про обучение без учителя. Та же проблема у библиотеки.
Преимущество такого решения в том, что подходы UL и SSL похожи. А некоторые SSL алгоритмы основаны на методах кластеризации.
#ul_lib
Пуринг можно применять не только в ходе алгоритмической оптимизации, но и для коррекции своих планов.
Так я решил пока отложить оптимизацию через numpy. Там появились серьёзные проблемы с выделением подпространств из-за отсутствия индексации. Решить можно, через постоянное расширение матрицы признаков таргетом и убирание таргета. Такой костыль мне не очень по душе.
Пока попробую сосредочится на аппроксимационной оптимизации, оптимизации вычислений в pandas и распараллеливании.
Пуринг можно применять не только в ходе алгоритмической оптимизации, но и для коррекции своих планов.
Так я решил пока отложить оптимизацию через numpy. Там появились серьёзные проблемы с выделением подпространств из-за отсутствия индексации. Решить можно, через постоянное расширение матрицы признаков таргетом и убирание таргета. Такой костыль мне не очень по душе.
Пока попробую сосредочится на аппроксимационной оптимизации, оптимизации вычислений в pandas и распараллеливании.
#ul_lib
Удалось ускорить Radius Density Classifier. Маленькая, но победа.
На тестовом наборе данных
Обучение: 687 -> 341 сек (50.36% ускорение)
Инференс: 787 -> 594 сек (24.52% ускорение)
Ускорение достигнуто за счёт более оптимального использования pandas.
Удалось ускорить Radius Density Classifier. Маленькая, но победа.
На тестовом наборе данных
Обучение: 687 -> 341 сек (50.36% ускорение)
Инференс: 787 -> 594 сек (24.52% ускорение)
Ускорение достигнуто за счёт более оптимального использования pandas.
👍4🔥1
#ul_lib
В погоне за производительностью попробовал использовать в качестве бэкэнда scikit-learn NearestNeighbors. Результаты... Плачевные.
Я не разбирался как именно устроен NearestNeighbors. Но судя по тому, как он работает обучение - это просто запоминание точек, которые будут выступать соседями.
Помимо предполагаемого выигрыша в скорости NearestNeighbors сулил глубокую настройку и реализацию многопоточности.
Результаты:
1. Мгновенное обучение
2. Долгий инференс (17 минут)*
3. Инференс съел всю память, которую сумел обнаружить
* точного времени нет, так как на тестовом датасете алгоритм просто упал с ошибкой, то есть за 17 минут результат даже не был получен, а это дольше, чем обучение и инференс моей реализации вместе взятые
В погоне за производительностью попробовал использовать в качестве бэкэнда scikit-learn NearestNeighbors. Результаты... Плачевные.
Я не разбирался как именно устроен NearestNeighbors. Но судя по тому, как он работает обучение - это просто запоминание точек, которые будут выступать соседями.
Помимо предполагаемого выигрыша в скорости NearestNeighbors сулил глубокую настройку и реализацию многопоточности.
Результаты:
1. Мгновенное обучение
2. Долгий инференс (17 минут)*
3. Инференс съел всю память, которую сумел обнаружить
* точного времени нет, так как на тестовом датасете алгоритм просто упал с ошибкой, то есть за 17 минут результат даже не был получен, а это дольше, чем обучение и инференс моей реализации вместе взятые
#ul_lib
Давненько не делился новостями. В общем-то пока новостей толком и нет.
Сейчас работаю над распараллеливанием алгоритма. Вроде получилось распараллелить процесс обучения, но пока не тестировал эффективность этого распараллеливания. Ну и в процессе пришлось отказаться от некоторых оптимизаций. Как распараллелю инференс, поделюсь результатами тестов.
В общем-то на этом планирую пока остановить разработку алгоритма и приступить к тестам на нескольких наборах данных со сравнением с другими алгоритмами.
// Буду стараться делать больше записей здесь, но по пустякам.
Давненько не делился новостями. В общем-то пока новостей толком и нет.
Сейчас работаю над распараллеливанием алгоритма. Вроде получилось распараллелить процесс обучения, но пока не тестировал эффективность этого распараллеливания. Ну и в процессе пришлось отказаться от некоторых оптимизаций. Как распараллелю инференс, поделюсь результатами тестов.
В общем-то на этом планирую пока остановить разработку алгоритма и приступить к тестам на нескольких наборах данных со сравнением с другими алгоритмами.
// Буду стараться делать больше записей здесь, но по пустякам.
👌2
#ul_book
Закончил черновые наброски по определению UL. Замечательно то, как авторство заставляет задуматься о вещах, которые давно не дают покоя, но ты ничего с этим не делаешь. Наверное отчасти поэтому я решил заняться книгой.
Закончил черновые наброски по определению UL. Замечательно то, как авторство заставляет задуматься о вещах, которые давно не дают покоя, но ты ничего с этим не делаешь. Наверное отчасти поэтому я решил заняться книгой.
💯2
#ul_lib
В общем эффективно распараллелить RDC не получилось, так как всюду используется общая память, я полагаю.
Пока оставлю попытки оптимизации алгоритма и перейду к тестам на качество классификации.
В общем эффективно распараллелить RDC не получилось, так как всюду используется общая память, я полагаю.
Пока оставлю попытки оптимизации алгоритма и перейду к тестам на качество классификации.
Думал плотненько заняться проектами во время отпуска, но что-то хочется переключить на недельку контекст и отдохнуть от рабочей темы. Возможно от этого даже больше толку будет.
В ходе переключения контекста опять занялся геймдевом. Сторожилы знают, что такое моё увлечение обычно не длится дольше 2 месяцев (чаще 2-3 недели).
В ходе переключения контекста опять занялся геймдевом. Сторожилы знают, что такое моё увлечение обычно не длится дольше 2 месяцев (чаще 2-3 недели).
#ul_book
Я тут задумался, что коль уж я не собираюсь ограничиваться одной темой в книге, имеет смысл рассмотреть множество тем и раскрывать их глава за главой, том за томом.
Хочется разложить тему до квантов и прийти к итоговым методам и реализациям, собрав их из квантов.
Так что работы очень много, а результат отдоляется. Но зато это создаёт хорошую сенергию всего со всем.
Теперь надо переосмыслить все проекты и подстроить под эту парадигму.
Я тут задумался, что коль уж я не собираюсь ограничиваться одной темой в книге, имеет смысл рассмотреть множество тем и раскрывать их глава за главой, том за томом.
Хочется разложить тему до квантов и прийти к итоговым методам и реализациям, собрав их из квантов.
Так что работы очень много, а результат отдоляется. Но зато это создаёт хорошую сенергию всего со всем.
Теперь надо переосмыслить все проекты и подстроить под эту парадигму.
🔥2
Screenshot_20231018_080003_miMind.jpg
743.4 KB
#book
Накидал в очень общих чертах с чего хотелось бы начать книгу. Кажется какие-то более-менее практические положения будут только в 4 главе.
Предстоит изучить очень много материала, чтобы достаточно качественно изложить идеи. Благо литературы за время учёбы и работы накопилось прилично, но не достаточно.
Накидал в очень общих чертах с чего хотелось бы начать книгу. Кажется какие-то более-менее практические положения будут только в 4 главе.
Предстоит изучить очень много материала, чтобы достаточно качественно изложить идеи. Благо литературы за время учёбы и работы накопилось прилично, но не достаточно.
#book
Сделал бекап своих предыдущих наработок по книге. В принципе, в чистовике кроме заголовков и их нумерации менять ничего не пришлось. Половина черновика тоже осталась.
Пока книгу пишу с конца плана, а именно начал с методов оптимизации, что связано с тем, что книги по оптимизации у меня электронные, и с ними удобно работать в дороге.
Жду когда наконец приедет мой мининоутбук для удобной работы в дороге.
// Кажется где-то полторы недели назад у меня началась депрессия. Я думал, что явление локальное и пройдёт за выходные, оказалось, что нет, и она не проходит. В моменты, когда апатия отпускает я пытаюсь что-то делать, но это происходит редко и на короткие промежутки времени. Ко всему этому ещё большой загруз по работе. В общем, кажется посты станут более редкими, сорян.
Сделал бекап своих предыдущих наработок по книге. В принципе, в чистовике кроме заголовков и их нумерации менять ничего не пришлось. Половина черновика тоже осталась.
Пока книгу пишу с конца плана, а именно начал с методов оптимизации, что связано с тем, что книги по оптимизации у меня электронные, и с ними удобно работать в дороге.
Жду когда наконец приедет мой мининоутбук для удобной работы в дороге.
/
#book
Начал главу про оптимизацию с пары, возможно, не самых хороших примеров, которые призваны показать комплексность примения оптимизации и её повсеместность. Прелесть в том, что это довольно хорошая подводка к алгоритмам машинного обучения. Кажется, что без них применение методов оптимизации весьма ограничено, хотя сами алгоритмы выглядят, как смесь эвристик и методов оптимизации.
Начал главу про оптимизацию с пары, возможно, не самых хороших примеров, которые призваны показать комплексность примения оптимизации и её повсеместность. Прелесть в том, что это довольно хорошая подводка к алгоритмам машинного обучения. Кажется, что без них применение методов оптимизации весьма ограничено, хотя сами алгоритмы выглядят, как смесь эвристик и методов оптимизации.