Как стать автором
Обновить
13
0

Пользователь

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

а попрашайку-енота оставим здесь =)

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

Мы бы хотели сделать эксперимент и устроить платформу вроде этой с задачками как на кеггле, но побить baseline можно только поняв особенность задачи (оверфиттинг, правильная модель, отбор признаков, чистка данных, ...). Платформ с онлайн-лекциями много, например недавно Яндекс выложил пачку отличных лекций, а вот практику пока стоит искать только на kaggle.

Можно попробовать совместить приятное с полезным, те более платформа для проверки задач уже есть и опробована на наших студентах (в рамках классов).
Честно признаемся, о FCBF мы узнали только что. Мы привыкли к методологии sparse методов вроде lasso и продолжения темы в виде glmnet, тем более их адаптировали и под нелинейные модели и модели смесей регрессий. А можете рассказать побольше про свой опыт? И есть ли реализации на Python/R, поверхностное гугление выдало только feature selection toolbox?

Если говорить об именно нашем опыте с нетривиальным и харкдорным отбором фич, то первой проблемой, с которой мы сталкивались было то, что сложно подобрать адекватную метрику близости в высокой размерности (проклятье!). Мы встречались со случаями, когда в зависимости от типа данных, как корреляции, так и многие другие метрики были слабо применимы (давали заведомо бесполезный и\или неадекватный результат). Особенно все было плохо, когда были очень по-разному распределенные признаки (data fusion). Конкретнее, у нас были условно-нормальные признаки (1000 сенсоров), еще несколько тысяч сильно разряженных бинарных меток (онтологии, но их можно группировать), плюс что-то еще. Можно делать группировку вручную, конечно, и внутри нее проводить свой отбор, но это путь для не ленивых :)

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

Сейчас мы копаем в сторону кластеризации признаков и выделения иерархического дерева признаков с помощью sparse pca. Получается, что в большом иерархическом древе признаков, на каждом уровне всегда будет пара признаков-представителей, которые характеризуют этот кластер признаков целиком (вплоть до уровня листьев). А далее, построив модель на пачке признаков-представителей этого дерева, можно эффективно проводить отбор и копать вглубь, отбирая признаки как раз на уровне моделей (пост-фактум). Это решает вторую нашу проблему, а возможность построить пачку таких деревьев для разных метрик между признаками, по идее, решает и первую проблему. Было бы классно это вообще делать через sparse nca но его пока не изобрели, а нам пока лень :)

Если что-то получится, то можем рассказать про это на хабре, картинки у нас очень клевые получаются :)
1. Они бесплатны. Попасть студентам можно через набор (тестовые задания + собеседование — пока не знаем, когда будем делать новый), а экспертам — просто написать нам =)
2. Мы бы очень хотели, но пока просто не хватает времени на его организацию. Если вы можете как-то помочь, то это бы ускорило процесс появления он-лайна. У нас есть несколько идей как можно это сделать круто, очень хотелось бы запустить демку в ближайшие месяцы
3. Конечно! Можем организовать телемост

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

Пару раз дело доходило до абсурда, когда мы натыкались на букально дремучие предрассудки: заказчик скорее всего имел очень негативный опыт работы в области анализа данных, после чего он проклял не только его, но и весь род математиков, в красках и ярких русских выражениях обвиняя всю математику в шарлатанстве как таковую :)
Это конечно же единичные случаи — куда важнее наглядно и «на яблочках» донести до людей, чем именно анализ данных может быть полезен конкретно им. На конкретно их данных в конкретно их области (например, онлайн игры, маркетинг или анализ соцсетей).

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

P.S. Про градиентный бустинг мы тоже можем рассказать, это одна из основных рабочих лошадок на платформе kaggle, так что наверное хабрасообществу будет интересно узнать и про них тоже (на хабре они упомянались только вскользь).
Технически, основной конкурент R как среды анализа данных (не считая упомянутого Python) — matlab. В нем также имеется большое количество как готовых toolbox'ов, так и написанных разными лабораториями пакетов (число которых постоянно пополняется).

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

Однако, если 5 лет назад лидерство матлаба было неоспоримо, сейчас популярность обоих сред находится на сопоставимых уровнях. И пусть победит наилучший, кто знает какой будет расклад через 5 лет. Пользоваться то нам :)
Пока одни предлагают копать глубже (на 20 переменных), я бы предложил обратный ход:
А вы сравнивали точность работы нейросети с обычной линейной регрессией? На производственных данных она обычно работает очень хорошо. Достаточно хорошо, чтобы демотивировать специалистов по машинному обучению пытаться побить ее результат.

Еще один момент — сравнив результаты с линейной регрессией, может так получиться, что нейросеть хорошо работает в более густых областях данных, с значительными ошибками на границах их диапазонов. В то же время, линейная регрессия нормально работает «везде», но не так точно в центральной области, где и находятся нелинейности. Можно попробовать сшить две модели: одна работет внутри (нейросеть), другая снаружи.

И да, у вас не так много данных (common story) и не высокая размерность — использовать глубокие архитектуры здесь не имеет смысла, только оверфитить будете жестче. В то же время, можно попробовать другие методы: SVM, Random Forest, Gradient Boosting. Возможно они, будучи хорошо настроенными, улучшат реультаты нейросетей на 5-10% (но не стоит ждать чуда).
Промазал комментарием. Активное обучение — выход, но надо данные собирать чаще (не всегда возможно на производстве).

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

Вот чтото глубокое, для такой низкоразмерной задачи — действительно было бы очень странно увидеть :)
То что вы говорите это все верно, применительно к настоящим и «сложным» данным, но есть большое но. Вы слишком серьезно подошли именно к учебной задаче, которая не претендовала на чтото серьезное и «настоящее» в производственном плане (прямо в abstract'е к посту). Этот пост был написан учеником о его собственном опыте — первый его подход к снаряду.

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

Так как критериев больше одного, их можно было как раз использовать в рамках ML, чтобы слепить один большой критерий, без специальных инструментов (надо будет дисклеймер писать в следующий раз). К слову, feature selection как раз был в рамках построения дерева. Но так как в этой статье «куча» метрик перечислима по пальцам одной руки, этот вопрос можно умышленно умолчать :)
Вот, вот в этом и было ключевое недопонимание. Ни о какой продуктизации здесь речи не шло:
Таким образом эта учебная задачка стала для меня введением в Machine Learning, и я хотел бы поделиться с вами этим опытом.


Конечно же, для промышленного применения, как неоднократно писали выше, уже есть свои, куда более совершенные инструменты. А также есть готовые коробки, как показанный выше OpenCV — их достаешь и не думаешь о том, кто и как тренировал ее содержимое.
Это конечно клево, что ML ассоциируется со спасением человечества (не надо злить skynet), но таких далеких выводов пока не делалось :) В рамках этого поста, по-крайней мере.

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

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

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

Это не то, чтобы из пушки по воробьям (хотя если бы речь шла про GBM 1, 2, это было бы правдой), но и не совсем тривиальный подход.

Плюс, для первичного ознакомления с машинным обучением, Хью моменты и вейвлет-анализ могут быть слишком хардкорны :)
Ухты, круто!

Интересно, иконка замочка ему понравилась, а аватарка нет. Это в OpenCV, верно?
DBM?
Вы имеете в виду Deep Belief Network, или это чтото новое, также на основе RBM?

Да, почему бы и нет. Можно копать еще глубже :) К примеру, во всякие deep NCA, говорят они клевые.
Приветствуем. Мы начали нашу деятельность относительно недавно, тем более на Хабре. В ближайшее время планируется вывесить статью о нашей деятельности — чем мы занимаемся помимо обучения студентов. Всегда рады поделиться с общественностью клевыми интересными штуками и продвигать машинное обучение в массы.

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

Например, как вы заметили, в реальных приложениях можно использовать контурный анализ, или как намекают в комментарии ниже RBM\deep learning. Или еще чтонибудь вроде признаков Хаара и разного рода сверток, но никак не отношение площади к квадрату периметра.

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

Представьте — вас спросят «как отличить квадрат от треугольника?». А вы скажете — «о, все просто — отношение площади к периметру должно быть меньше 0.06». Это прикольнее чем svm, хоть, в данном случае(!), и чуть менее точно :)

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность