Pull to refresh
0
0
Антон Селиванов @AASelivanov

Инженер-исследователь в области Data Science

Send message

К третьей истории -- я понимаю, что коллектив (в случае с компанией Х) действительно может быть токсичным, судить предвзято, давить мотивацию и давать самые непривлекательные задачи, так бывает.

Но смутило, что после работы в таком коллективе, которая подрывает уверенность очевидно, и понимания, что многое с университетских времён уже подзабыто, соискатель (с образованием ВМК МГУ) не поискал информацию, а как там оно вообще на собеседованиях бывает.

>> Меня спрашивали алгоритмы и Java
Преимущество таких больших компаний (что у нас, что на западе) -- довольно стандартизированный процесс собеседований. Кажется, информация о том, что для собеседования в MANGA или ВАСЯО надо литкодить находится на расстоянии одного запроса в поисковик.
У Тинькова и Яндекса вообще расписано, по каким материалам можно к собеседованию подготовиться.

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

Вы хотите сказать, что зарегистрировать аккаунт на Госуслугах проще, чем электронную почту? Я это делал давно, но мне казалось, там процесс сложнее, чем заведение электронной почты.

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

Более того, у детей младше 14-ти (то есть без паспорта) в принципе аккаунт Госуслуг может быть только с ограниченной функциональностью (не знаю, достаточной ли, чтобы в Мосхаб зайти).

Пока что кажется, что завести ребёнку почту специально под мероприятие проще, чем аккаунт на Госуслугах -- и быстрее.

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

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

В общем, не очень понятно всё же, в чём выгода "зайти через Госуслуги на сервис, который пока что работает нестабильно" по сравнению с "зайти через эл. почту на сервис, который уже давно работает стабильно".

Подскажите, пожалуйста, а какие в данном случае паттерны существуют? (вопрос без подтекста, если что, искренне интересно узнать новое)

Вообще говоря, не всем работодателям всё равно - некоторые компании позволяют себе такую роскошь, как заведение базовых кафедр в вузах или программы сотрудничества: у Тинькофф есть AI Lab в МФТИ, у VK сотрудничество с МИФИ, МФТИ, ВШЭ, ИТМО, у Яндекса кафедра в ВШЭ. У государственных компаний (в частности научных) процесс работы с вузами разумеется налажен.
Так что компании, которые могут себе позволить, всё же предпочитают играть на дальнюю перспективу, растить студентов под себя курса со второго-третьего, заодно повышая "привлекательность бренда".

Ой, Моська...
У меня такой вопрос: а ? знает, что происходит,что его теснят? Просто картинка в начале выглядит ну очень уж претенциозно.

Вообще, к сожалению, повествование местами сумбурное, как будто мешаются сущности разных классов.

Фактически одна мысль повторяется: piper – фреймворк на python, который позволяет из блоков собрать ml-решение и задеплоить его, при этом интегрируя с разными инструментами. Так? Если да, то здорово было бы увидеть реальный пример, как разработчик нас проведёт за ручку по процессу создания какого-нибудь небольшого пайплайна.

Часто по тексту встречается "на данный момент нет, но планируем добавить". Хотелось бы видеть больший акцент на том, что есть.
> На данный момент...у нас добавлены FaceRecognition, TesseractOCR, Milvus. ..
Можно ли ознакомиться с полным списком? И что используется для Face Recognition?

> Цель нашего фреймворка в ускорении ml разработки
Тогда нужна методика оценки этой скорости.
> При решение с Piper сборка производится на 90% за счет уже подготовленных модулей из библиотеки фреймворка
А если модуля нет?
А если тип данных отличается от изначального в модуле?
А если блок даёт низкую эффективность? Предусмотрен подбор гиперпараметров, иной AutoML?
Как вообще этот подход соотносится с no silver bullet theorem?

Генез оценок времени in-house непонятен.
Почему изучение задачи и подготовка среды в piper займёт в два раза меньше времени?
Почему в piper отсутсьвует этап подготовки данных – он сам чистит, преобразует во входной формат, отбирает фичи и кодирует?

Почему перенос кода в прод оценён именно такими значениями?

Вообще, почему числа именно такие, а не другие, для какойькоманды проводилась оценка, точно ли результаты аналогичны?

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

JupyterLab -- это что-то вроде IDE для интерактивного python, которая позволяет исполнять код в отдельных ячейках и хранит в памяти промежуточные значения. Также позволяет добавлять ячейки с markdown-форматированием, формулами LaTeX, изображениями и так далее.
Вроде позволяет работать с R, Julia, Scala и может даже C++, но лично не проверял.

Изначально запускается в браузере.
Исторически популярна в научной среде и у аналитиков, потому что позволяет на основе результатов выполнения небольших (ну или больших) блоков кода рассказывать историю (пресловутый storytelling with data).

То есть результаты работы в JupyterLab могут выглядеть, например, так или так.

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

Из минусов:
- расхолаживает;
- перезапуск ячеек не в том порядке может привести к ошибкам и неопределённостям;
- без сознательной работы над структурой набор блоков очень быстро может скатиться в хаотичное спагетти;
- инструментов в JupyterLab всё же поменьше, чем во "взрослых" IDE -- ранний останов, отслеживание текущих значений переменных не через исполнение кода, инструменты по рефакторингу, удалению дублирований, отслеживанию неиспользуемых переменных (что частично решается плагинами, но с их установкой могут возникать свои сложности);
- не все библиотеки python работают так же, как в скриптах (например, argparse просто так не заработает); результирующий файл (.ipynb -- ipython notebook) не является скриптом python (.py), требует дополнительной конвертации.

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

Но ведь по сообщению выше нельзя ничего сказать о навыках человека, зачем же сразу его "прихлопнуть"? Может он достаточно компетентен, чтобы влиться в ваш коллектив и вполне стоит "хорошей зп в Москве".

К сожалению, не все области науки поддерживаются частными компаниями.
Правда, также можно утверждать, что государством тоже поддерживаются не все...

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

Во-вторых, про загрузку я писал в ответ на это предложение:
> к сожалению, ни на одном стримминговом сервисе нет всей музыки, которая есть в моей коллекции
То есть, я не говорю, что так надо делать, я говорю, что есть возможность (я ей пользовался), только и всего.

В-третьих, моё предложение про скачивание лишь выказывало робкую надежду, что при скачивании вы покупаете альбомы. Благо, надежда оправдалась, и здорово, что вы пользуетесь лицензионным контентом. Зачем вы мне в ответ пишете, что я не поддерживаю музыкантов, не знаю, учитывая, что помимо прослушивания на стримингах (что также приносит копеечку музыкантам) я и покупаю альбомы, и доначу музыкантам. Я и сам музыкант-любитель, так что знаю, что копеечку-то прослушивания на стриминге приносят.

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

Во-первых, стриминговые сервисы (во всяком случае, Youtube Music и Яндекс.Музыка) позволяют загрузку на устройство с последующим прослушиванием оффлайн.

Во-вторых, Youtube Music точно позволял раньше загружать своё в коллекцию с последующим прослушиванием через приложение (на случай, если на сервисе чего-то нет).

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

Спасибо за статью.

Как истинный зануда, не могу не дополнить своими соображениями.

Pandas

Стоит знать, что pandas очень мощный инструмент, который имеет возможности по работе с данными, аналогичные SQL: эта страница документации раскрывает подробнее. (Особенно интересная работа с группировками).

Ещё интересны могут быть базовые функции по визуализации (pandas включает в себя интерфейсы к matplotlib), что позволяет "лениво" рассматривать данные (порой это очень полезно). А если ещё и seaborn использовать, вообще красота получается. Документация.

Кстати, pandas имеет отдельный тип данных categorical, в который стоит переводит столбцы с категориальными переменными для использования соответствующей функциональности.

Categorical Feature Encoding

Касательно работы с категориальными данными, мне кажется, также не лишним будет знать и другие методы (также это поможет дополнить ответ на великий вопрос о разнице трёх библиотек градиентного бустинга):

  • Binary Encoder и Hash Encoder -- по сути тот же OneHot, но вектор итоговый получается меньше, хотя пишут, что часть информации может потеряться;

  • Target Encoder (по-моему, едва ли не лучший вариант, если есть целевые значения) -- кодирует значения категориального признака с учётом их встречаемости с конкретными метками классов;

  • Frequency Encoder -- кодирует на основе частоты встречаемости значения категориального признака в выборке;

  • CatBoost Encoder (shout out to the mighty Yandex) -- как target encoder, но, кажется, учитывает только значения, которые были встречены перед текущим примером из выборки.

    Кстати, если работать на python, есть целая библиотека с интерфейсами, как у sklearn: category_encoders. При взгляде в ReadMe можно увидеть огромный простор для изучения методов кодирования категориальных данных.

Разделение датасета

Мне кажется, немало практиков валидационное множество берут всё же, отрезая от тренировочного. Это, на мой взгляд, более осмысленно, так как тест после отрезания вообще не стоит трогать (а на соревнованиях он, например, вообще недоступен).

Также новичкам стоит знать про методы кросс-валидации, зачем она вообще нужна и когда её использовать не стоит.

А ещё отдельно про валидацию последовательностей (time series), мне кажется, это довольно популярный формат данных.

Надеюсь, это будет полезной информацией.

«ну не знаю, с нашими на корпоративах всякое бывало»©

Подскажите, пожалуйста, а что произошло затем?
И если вы устроились на другую работу, насколько легко/тяжело и быстро/долго это было после мнс и аспирантуры?
Ну и да, простите за такой вопрос (мне важно просто), кандидатскую в итоге защитили?

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

Между тем, немало разработчиков это как раз люди обязательные, с обострённым чувством "справедливости" и "правильности", которые хотят делать хорошо, в срок и чтобы коллеги с менеджером уважительно кивали "маладца, хорошо сделал".

Соответственно нередко порицаемые в статье вещи являются попыткой увеличить эффективность своей работы, оптимизировать. Я по себе знаю -- поднялся в 8 -- день насмарку. Нет, я принципиальный, я буду сидеть и пытаться работать, только вот сложно это делать с ватным мозгом, риск ошибки увеличивается. А я ошибаться страсть как не люблю. Конечно, если есть договорённость -- тут уже другое дело, расшибусь, но проснусь. Но если нет -- почему бы не встать, скажем, в 10-12, неторопливо заварить кофе и позавтракать, а затем сесть решать задачи в спокойном режиме -- просто закончить чуть позже, если это необходимо? Что же в этом плохого?

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

Мне кажется, на данный момент это скорее работа на репутацию и чтобы сектор застолбить.
Думаю, не всё сразу, но лет через 10-20 это решение возможно будет приведено к чему-то рабочему (как пример, генерация изображений к DALL-E тоже пришла не сразу, но вы посмотрите на вторую версию!)

И это лет через 10-20, а рассказывать, что "мы разработали первый ИИ-помощник программиста" можно уже сейчас, ослепляя красивой фичей тех, кто, например, не попробовал или верит в технологическую сингулярность вот-вот, за поворотом.

Статья понравилась! Интересно было бы посмотреть на бота в действии

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

Но спрошу про некоторые вещи из любопытства:

  1. Из файла с записями берётся 10 тысяч, потому что на данном этапе предполагается, что там больше точно не будет?

  2. Вроде бы параметры Count Vectorizer по умолчанию рассчитаны на английский язык. Там регулярка не выбрасывает русские буквы? Также думаю замена списка стоп-слов может улучшить работу. Не пробовали TfIdfVectorizer или даже word2vec/fasttext?

  3. Проводили ли какую-нибудь оценку эффективности работы ML- алгоритма?

  4. Не уверен, насколько задачу поиска ближайшего соседа из датасета стоит решать как классификационную. Не является ли более удобным вариантом расчёт дистанции, скажем, косинусной меры, между векторами из базы и пришедшем?

Information

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

Specialization

Data Analyst, Data Scientist
Middle
From 200,000 ₽
Machine learning
Natural language processing
Neural networks
Deep Learning
Python
Keras
GitHub
Data Analysis
TENSORFLOW
Pandas