Архив недели @khudobakhshov
Понедельник
На этой новогодней неделе с вами я, linkedin.com/in/vitaly-khud…
Я тимлид двух команд в @JetBrains: @BigDataToolsJB и одной из команд, которая занимается применением ML в наших продуктах
Моя карьера начиналась очень давно, сначала я пришел в программирование, где-то курсе на втором в 1998. Писал на Java версии 1.1. Наверное, я бы чувствовал себя лучше, если бы пришел в DS, но тогда такого понятия просто не было.
Потом я долгое время преподавал. Как тут недавно писал @_iashin, даже в ВШЭ в Питере. Но не только - еще много где. Большую часть времени я провел в СПбГУ, вот здесь: twitter.com/SmolnyCollege
После работы в университете я оказался в @odnoklassniki. Там я занимался рекомендациями и некоторыми вопросами, связанными с поведенческим анализом. Самым полезным навыком на работе оказалось не знание DS, а способность писать код на Scala и Java.
Очень много моей работы в Одноклассниках было связано с вопросами дата-инженерии и в какой-то момент я вдруг понял, что кучу времени провожу копируя код из @ApacheZeppelin в @intellijidea и пялюсь в страничку YARN ожидая упадет моя джоба или нет
Так я понял, что хочу сделать инструмент, который бы помог таким же людям как я, которые решают дата-инженерные задачи. Вот поэтому я поменял саму работу с данными на разработку инструментов для такой работы и пришел в JB делать Big Data Tools.
Наверное все слышали про Michal Kosinski и 68 лайков, который расскажут про вас все. Я бы сказал, что это не лучшая его работа. На мой вкус вот эта самая интересная: gsb.stanford.edu/faculty-resear…
А вы знаете, что в языке R на самом деле нет скалярных типов? То есть число 3.14 - это просто вектор длины 1.
Поговорим о пользе эвристик и здравого смысла перед тем как делать ML. Вообще считаю, что есть что-то можно решить без ML и это работает, то так лучше и поступить. Ну или как минимум вы получите хороший бейзлайн для будущих моделей.
Давным давно в далекой далекой галактике значение пола по умолчанию в ОК было равно M. Меня попросили пофиксить ошибку, которая образуется естественным образом при такой схеме…
Для простоты можно считать, что мы живем в отсталом мире где всего два пола: М и Ж. Вспоминая работу того же Michal Kosinski, очевидным решением тут является посмотреть на группы, в которых пользователь состоит.
Однако оказалось, что для абсолютного большинства случаев существует куда более простой путь, в ОК данных так много, что для практически любого имени или фамилии в отдельности (и для практически любого написания) было как минимум десяток примеров.
Таким образом, просто на основании имен, удалось получить довольно хорошее решение, а добавив к нему уже информацию о группах получилось совсем хорошо.
Вы знаете, что вероятность того, что длина файла у вас на диске начинается с 1 в шесть раз больше вероятности того, что она начинается с 9. Это называется закон Бенфорда: ru.wikipedia.org/wiki/%D0%97%D0…
Вторник
Кто интересуется применением ML к коду, лучший способ начать - это вот этот обзор 2017, все еще не потерявший актуальность: arxiv.org/pdf/1709.06182…
Еще один полезный ресурс по теме ML для кода: github.com/src-d/awesome-…
Должен ли data scientist уметь хорошо программировать? Думаю, что все-таки нет, если хорошо программировать значит писать хороший код. Потому что результатом работы DS’а является не код.
Должен ли data scientist хорошо понимать концепции из программирования? Да должен, но ровно в той степени, в которой эти концепции помогают в работе.
Тут самое время спросить, используете ли вы type hints в Python?
Раз уж дело дошло до опросов, пользуетесь ли вы дебаггером? Вопрос, конечно, в контексте data science.
Знаете, что такое настоящая политкорректность и равные возможности? Это когда в самом популярном языке программирования для работы с данными нет массивов!
Среда
Какую технологию выбрать, если ваши данные не помещаются в память? Если вы привыкли работать с Pandas и ничего не хотите знать про Apache Spark, то самым простым решением будет Koalas: github.com/databricks/koa…
Многие люди переходят в data engineering меняя Python на Scala или Java на Scala. Не советую так делать. На Scala довольно легко писать ужасный код. Сначала лучше изучить функциональное программирование на Haskell например. Дисциплинирует.
ООП в R действительно пугающее и немного бессмысленное явление без нормальной поддержки со стороны IDE, но проблема в том, что для создателей IDE это тоже пугающее явление. Замкнутый круг. Подробности здесь adv-r.hadley.nz/oo.html
Даже подумываю ухудшить ситуацию и в нагрузку к S3, S4, RC и R6 написать библиотеку для поддержки интерфейсов и абстрактных классов 😆
Tips & tricks: текущую строчку в PyCharm можно двигать вверх и вниз с помощью Cmd+Shift+Up/Down
Четверг
Если заглянуть в блог Google AI, то там есть много интересного: ai.googleblog.com/2020/
Подборка ориентирована на визуальную составляющую и на итоги года в ML/DL не тянет, но все равно очень занимательно и со ссылками на Github: vc.ru/ml/192737-rass…
🎄 По случаю нового года выкладываю новую версию легковесного парсера аргументов командной строки на основе type hints pypi.org/project/typedp…
🎄 С наступающим новым годом! 🎄
Пятница
Кто читает GatesNotes? Рекомендую. Про книги вообще интересно, планирую заказать себе все из списка: gatesnotes.com/About-Bill-Gat…
Tips & Tricks: Вы знаете, что в PyCharm есть навигация назад и вперед, как в браузере? Ctrl + Alt + Right / Left. А еще есть Pdf, в котором все есть resources.jetbrains.com/storage/produc…
Суббота
Для тех, кто интересуется применением ML для кода. Недавно мы участвовали с коллегами в довольно интересном соревновании в рамках NIPS2020. Простая постановка задачи: Text2bash. Так что рекомендую взглянуть на результаты: nlc2cmd.us-east.mybluemix.net/#/
Вы знаете, что существует поддержка языка R для PyCharm? plugins.jetbrains.com/plugin/6632-r-…
Однажды, когда мне довелось публиковать R пакет в CRAN, я понял, почему Python намного популярнее. В CRAN ручное ревью, которое вполне может занимать неделю! 🤦♂️
Некоторые люди на собеседовании говорят, что AST - это абстрактное синтаксическое дерево. Не делайте так. Дерево очень даже конкретное. Правильно говорить дерево абстрактного синтаксиса.
For YEARS I've been complaining about #AndroidStudio being slow, consuming too much RAM, making my laptop overheat and fans blow like crazy... Until last weekend. @tsmith told me about JetBrains Projector, and I believe it's the future of #AndroidDev 🔥 joenrv.medium.com/how-to-run-and…
Tips & Tricks: А вы знаете, что PyCharm также можно запустить на сервере, где очень много памяти и работать из браузера? Electron клиент тоже есть. twitter.com/joenrv/status/…
Кажется, что самое время спросить, доверяете ли вы Wikipedia, как достоверному источнику информации?
Новое издание старой книги: probml.github.io/pml-book/book1…
Воскресенье
Working with any sufficiently buggy technology is indistinguishable from magic.
Для тех, кто интересуется применением ML в финансах, есть очень крутая книга: amazon.com/Advances-Finan…
Кажется, что самое время спросить, доверяете ли вы Wikipedia, как достоверному источнику информации?
Давайте подводить итоги недели: почти 75% так или иначе доверяют Wikipedia, 42% не пользуются отладчиком и 32% не используют type hints. twitter.com/dsunderhood/st…
🎄На этой неделе с вами был @khudobakhshov. Спасибо и всего самого лучшего в новом году!🎄