Pull to refresh
11
0
Алексей @Alexey_mosc

Статистик / DS

Send message
Более актуален sparklyr от RStudio. Он удобнее, хотя, что там под капотом, — это фигзнает. Он мимикрирует под синтаксис dplyr с его mutate %>% group_by %>% ..., и позволяет вызывать sql и прочее из библиотек scala (как я понял из примерно 3-х месячного опыта ковыряния оного).

Но в целом есть шероховатости, которые прямо драчовым напильником надо спиливать. Например, не признает функцию median из R stats. То есть, ты ожидаешь, что вызов медиан для расчета чего нибудь на груп-бае должен же работать! А он не работает… Пришлось ее тащить из нутра спарка. Многие чисто фильтровачные и обработачные функции для набора данных не работают, нужно писать на sql в коде Ар… Мешанина с NULL, NA ®, None и т.д… Неожиданные результаты.

В общем, туго идет процесс предобработки данных. Про производительность не знаю, гонял на localhost, но заметил, что операция превращения из длинного в широкий массив шла в десятки раз дольше на датафреймах спарк, чем в памяти R скрипта. Намучился…

Нормально. Ну, самое простое должно же проверяться первым… Паттерн чек можно было сделать в Экселе за часок. Я правильно понял, что окончательные выводы получены на независимой выборке?


Хотя попытка натянуть рекуррентные сети здесь выглядит логично, но… Делали ли вы эмбеддинг ваших псевдослов в векторное пространство? Если нет, то именно это упущение могло все и поломать.

Интересно, что R появился. А ещё, от статистика, почему больше 100% на диаграмме? )

Не все обязательно решать НС. Но ее мощь велика. Точной теории почему она работает нет, но ясно, что там моделируются нелинейные зависимости, а градиентный спуск почти всегда даёт приемлемый ответ.

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

Еще один нюанс. Оказалось, что вызов основного лемматизирующего метода в udpipe не параллелится, потому что модель факт. лежит на диске и к ней осуществляется вызов по ссылке, получается ошибка. А это очень жаль, потому что хотелось бы параллельное исполнение, ибо материала очень много. Я пробовал это с помощью doParallel если что.
А как существующая модель предсказания рейтинга выделяет? Или она не учитывает такую энтропию, а делает прогноз по другим параметрам и другим предложениям?


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

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

Ну, вот, пользователь читает ПРЕДЛОЖЕНИЯ. Например, «ии от компании х выиграл у людей в игре z. Тут все важно, комбинация слов важна, то есть, предложение. Сама по себе тема ИИ уже оскомину набила. Компания какая-то мало кому известна, игре уже 20 лет, а игроки сотнями партий проигрывают. Но в связке, можно сказать, максимизирует счастья энтропия предложения. Вот как это выделить в виде фактора требующего улучшения вопрос хороший.
Я думаю так — модель будет опираться не на сами ключевые термины (хотя отчасти и на них), а на контекст их использования. Поэтому некоторую обобщающую способность можно выжать, типа если речь про сетевые технологии, то средненько, а если про большие компании, то побольше.

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

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

С текстом посложнее. Как вариант текст будет многомерным временным рядом и обучаться будет рекурр.сеть. Как там оптимизировать входы это вопрос. Даже если все получится, не факт, что «оптимальный» с тчк.зр. нейронки текст вообще будет читаться. Но вопрос интересный, да. Как минимум, можно написать класс «новость» (хе хе я уже мыслю как на работе), который будет содержать метод перестановки абзацев и предложений, да и слов в предложении. Рекуррентная сетка будет давать разный отклик на один и тот же текст с разным позиционированнием слов.

It's doable. Я реализовал эту идею в ТАССе: модель предсказывает рейтинг статей. Про остальное попозже отвечу.

Давайте 3 часть: предсказание рейтинга публикации по тексту публикации, с токенизайией, ембеддингом и deep learning ом.

Mystem.exe я вызываю локально из R. Вполне хорошо работает. Для питона рекомендую pymorphy2. Это вообще огонь.

Правильно. Но манагеру можно впихнуть: "вероятность, что я тут ошибаюсь, делая вывод о тестовой выборке, равна 1/100К." А если начать, "Это вероятность, что статистика критерия больше наблюдаемого значения при истинности нулевой гипотезы" то совещание просто остановиться. Ха ха ))) Опять же в какой сфере. В Align Tech я репортовал p value, power, effect size. Менеджер был phd from MIT. То есть и бизнес то разный.


А вот картинку можно сгенеририть и без бутстрапа, просто посчитать SE и построить density средневыборочных или их разницы. Будет даж краше выглядеть, каждый манагеру вешает себе медальку, когда узнает нормальную плотность вероятности! Ха ха ха )))

Кроме ошибок первого рода (alpha) в бизнесе могут быть важны и ошибки второго рода (beta). И отсюда понятие мощности теста (power = 1 — beta).


А вообще, я не советую понял, почему отбутстрапленое распределение выбор.статистики более понятно для бизнеса, чем t-статистика, или p-value, которое в простом варианте трактовки является ошибкой первого рода.

Всех расчетов было на «выпить чашечку кофе».


>t.test(x=x,y=y) #всех расчетов на зевнуть…

:o)
«The Art of Computer Programming» вроде пока никто не отменял и не обесценивал.


Это, безусловно, важно. Говнокод никто читать не хочет, не говоря уже о производительности. Еще R Inferno можно здесь упомянуть…

Просто моя мысль в том, что B-тип дата сайентиста это программист, он тоже нужен. Но без говнокода типа A (анализ) многие проекты просто не полетят или полетят не туда.

"
К вопросу о программировании и знании R.
"


Смогу :)


А вот коллеге, который знал про R "всё" пришлось довольно долго объяснять что такое Random Forest. А объяснить важность предположения о независимости сл.величины так и не смог, вроде. Порядок абстракций другой...

Спасибо за богатый материал, есть что почитать. Но на мой взгляд эти требования соответствуют должности "Разработчик R" или "BI аналитик". Мат.стат, машинное обучение и какое-нибудь численное моделирование нужное для DS отсутствуют, а их постижение — это вопрос нескольких лет. Или нескольких месяцев для верхнеуровнего знакомства.

Володя, привет! Супер статья, спасибо! Надеюсь доберусь до seq2seq со своими новостями в ТАССе.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity