Аналитика для всех
289 subscribers
2 photos
1 file
8 links
Канал про аналитику и все, что с ней связано:
- Data Science
- Machine Learning
- Математический аппарат
- Новости рынка аналитики
- Статьи, Книги, События
- Софт скиллы
- Интервью
Download Telegram
Привет, привет! Добро пожаловать в мой канал про аналитику. Наверное, надо сначала представиться. Меня зовут Сухань Андрей, работаю руководителем группы бизнес-аналитики в Яндекс.Маркет Групп. В этом канале я хотел бы делиться с тобой интересными вещами по:

- Data Science
- Machine Learning
- Математический аппарат
- Новости рынка
- Статьи, Книги, Интервью, События и прочее из мира аналитики
- Куда же без софт скиллов?

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

1. Вы никогда не пишите код только для себя

Это, пожалуй, самое просто правило из всех. Даже, если вы не рассчитываете, что кроме вас кто-то будет читать скрипт, позаботьтесь хотя бы о будущем себе. Что это означает:

- Комментарии, комментарии, комментарии! Ещё больше комментариев. Написали? А теперь давайте в 2 раза больше!
- Пишите «понятный» код. Названия переменных должны отображать их суть. Это же касается и файлов (никаких больше Untitled.ipynb). Если что-то не используется в скрипте - удалите это, ну или на крайний случай хотя бы закомментируйте.
- Ведите документирование. Это не совсем комментарии, скорее общее описание и принцип работы, чтобы можно было прочитать и быстро понять, что делает ваш алгоритм.

2. Код, который не сохранен в репозитории - никогда не существовал

Хранить код на локальной машине похоже больше на русскую рулетку. Миллион мелких причин, и ваш хард умирает. А с ним и вся проделанная работа.

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

3. Оптимальные алгоритмы

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

4. Хорошие разработчики крадут без стыда

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

5. Не используйте Python 2 (умоляю)

Серьёзно, на дворе 2019 год. Давно пора перейти на Python 3. В отличие от второй версии, его хотя бы продолжают развивать. Неужели, вы будете скучать по UnicodeErrors?

Советы на самом деле простейшие, но даже ими очень многие пренебрегают. Как раз из-за их простоты (ну и лени). Пишите хороший код и будет счастье :)
Что делают аналитики чаще всего? Правильно, копаются в данных. Но когда этих данных становится очень много, копаться в них уже тяжеловато и хочется быстро понимать их природу. Для этого создано много удобных инструментов, сегодня поговорим как раз об одном из них - Boxplot. P.S. В Instant View не работает отображение кода, пока Дзен не знает, что с этим делать
Сейчас каждая компания заявляет, что они Data Driven, но что же на самом деле это должно в себя включать?

Для аналитиков интересны компании, где:

- есть много полезной информации
- инвестируют время и ресурсы в отчетность и построение моделей
- ТОП менеджмент прислушивается к рекомендациям, основанных на данных

Для инвесторов интересны компании, которые:

- понимают какие метрики нужно замерять
- как их замерять
- на самом деле используют данные для принятия решений.

Исходя из этого, ниже я попробую описать своё видение Data Driven компаний и критерии, которым они должны соответствовать.

1. Есть данные - звучит довольно очевидно, но это точно пункт номер один. При этом данные должны быть очищены, собраны и легко доступны

2. Есть аналитики - не обязательно, чтобы это была ориентированная только на исследования команды, состоящая из докторов наук, но это должна быть солидная команда, которая знает, как собирать, обрабатывать и анализировать данные

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

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

5. Компания не нанимает управленческих консультантов - разве вам нравится просто сжигать деньги? Если да, то пригласите кучу консультантов, чтобы они рассказали вам «best practices» в вашей сфере (за очень большую плату). Но погодите секунду, если они рассказывают вам все секретные передовые практики, чтобы выиграть в конкуренции, что они говорят вашим конкурентам, которые также платят за консультационные услуги?

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

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

Один из основных инструментов, где аналитики проводят много времени, это Jupyter Notebook. В нем делается все - от подготовки данных до готовых моделей. Но после того, как что-то сделано в Notebook’е, это перекочёвывает в продакшен код через серию пул реквестов и различных апрувов. Врядли после релиза аналитические скрипты будут часто переписываться, скорее только читаться. Так почему бы сразу не позаботиться о тех, кто полезет в ваш код? Может вы и понимаете зачем вам та или иная функция, или почему тут применяется такая логика, а не другая. Но тем, кто не писал этот код, придётся приложить массу усилий, чтобы в нем разобраться.

Для этого существуют стандарты. Они могут отличаться от компании к компании, но сегодня я поговорю про PEP8 - мой личный фаворит. PEP расшифровывается как Python Enhancement Proposal. Это документация по оформлению и стилизации кода для сообщества. В качестве авторов выступают ведущие люди в отрасли, в частности разработчики Google, Microsoft и других крупных компаний.

Достаточно вводных слов, перейдём к сути.


===КАК ПРАВИЛЬНО ДАВАТЬ НАЗВАНИЯ===

1. Переменные, функции, методы, пакеты, модули - маленькие буквы через подчеркивание между словами
lower_case_with_underscores


2. Классы и исключения - каждое слово с заглавной буквы без пробела
CapWords


3. Константы - все заглавные буквы через подчеркивание между словами
ALL_CAPS_WITH_UNDERSCORES


4. Человекопонятные названия - не надо называть переменные x, y, z, лучше отобразить в названии суть, например, first_name, last_name, age


===ПОРЯДОК ИМПОРТОВ===

1. Встроенные пакеты Python
2. Сторонние пакеты
3. Локальные импорты


===ДЛИНА СТРОКИ===

Не стоит писать строки длиннее 80-100 символов. Да, иногда невозможно перенести что-то на новую строку из-за длинных названий или обращению к каким-то методам, но это скорее исключение из правил.


===ПРОБЕЛЫ===

1. Ставьте пробел между двоеточием и значением в словарях
names = {‘test’: 123}


2. Ставьте пробел вокруг символа равенства в случае присвоения значения переменной и между математическими знаками
var = 25
math_operation_result = 25 * 5
operation_with_brackets = (x-y) * (x+y)


3. Не ставьте пробел вокруг равно, если задаёте дефолтное значение для параметра
def count_even(num=20):
pass


4. Ставьте пробел после запятой
var1, var2 = get_values(num1, num2)



===ДОКУМЕНТИРОВАНИЕ===

Не ленитесь и пишите документацию к своему коду, даже если вам кажется что-то очевидным. Также это относится к обычным поясняющим комментариям - не нужно писать что-то совсем очевидное как «тут я присваиваю значение переменной». Но основные логические блоки стоит прописать.

Придерживайтесь принципа - “Code tells you how, comments tell you why”.

К каждому классу и функции также пишите мини-документацию происходящего. Что обязательно должно быть:

1. Общее описание - для чего нужна эта функция
2. Если требуется и не очевидно - примеры использования
3. Принимаемые аргументы
4. Тип возвращаемого значения и описание, если возврат не None

Пример:
def sum_of_ints(a, b):
‘’’Сумма двух целых чисел
:param int a: первое число
:param int b: второе число
:return int: сумма a и b
’’’
return a + b



Я описал самые частые ошибки, но не поленитесь и изучите весь PEP8. Чистый и понятный код в каждый репозиторий!
👍1
В качестве хобби я сейчас выступаю наставником в Яндекс.Практикуме по напралению Data Science. Один из самых частых вопросов, который мне задают начинающие аналитики - что нужно знать, чтобы стать аналитиком? Кажется, пора написать общий пост, структурировав все ответы в один :) Я попробую рассказать лишь про базовый минимум, но предела совершенству нет!

Разобью тему на 3 основные части:

- Технические навыки
- Теория
- Практика

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


==ТЕХНИЧЕСКИЕ СКИЛЛЫ==

Основы Python

В опросе 2018 года «Kaggle Machine Learning and Data Science» 83% респондентов сказали, что используют Python на ежедневной основе. Это прекрасный язык, легкий в изучении и в применении.

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

Успехом можно считать, если вы знаете:

- базовый синтаксис
- функции
- циклы
- основные модули и классы

Отдельно стоит отметить замечательные библиотеки numpy и pandas - их тоже желательно знать на хорошем уровне.

SQL

SQL это простой скриптовый язык, который позволяет работать в базами данных. Он является очень важным инструментом в работе аналитика, ведь для начала нужно как-то эти данные получить. Для разных систем хранения синтаксис может немного отличаться, но основная идея будет прослеживаться везде.

Отдельно хочу отметить современные подходы к хранению информации и, так называемые, map-reduce хранилища. Желательно понимать принцип их работы: хранение данных, обработка запросов, управление нагрузкой.

Алгоритмы

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


==ТЕОРИЯ==

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

1. Производные
2. Дифференцирование сложной функции
3. Градиенты
4. Вектора и пространства
5. Матричные преобразования
6. Описательная статистика
7. Вероятность события
8. Распределения и их свойства (параметры, моменты, центральные тенденции и т.д.)
9. Корреляция/ковариация
10. Тестирование гипотез, тесты, p-value, доверительные интервалы
11. Сэмплирование
12. Регрессии
13. Классификации и кластеризации
14. Методы машинного обучение с/без учителя
15. Нейронные сети (вынес отдельно, так как это довольно большой пласт)


==ПРАКТИКА==

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

Но вот и первая трудность - компании редко выкладывают в открытый доступ свои задачки и тем более дата сеты. Что же можно сделать?

Курсы

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

Kaggle


Отличная платформа, где проходят соревнования по машинному обучению. Также тут есть готовые notebook’и с комментариями о том, что делает автор, наборы дата сетов и отличный форум, где могут помочь с вопросами. Можно не просто попробовать руками что-то поделать, но и сравнить себя с крутыми чуваками из отрасли :)

UCI ML Repository

Это ресурс с большим количеством публично доступных дата сетов. Можно их использовать для создания своих задачек и моделей. Такие pet projects лучше хранить в публично доступном месте (н-р, GitHub), так как это будет вашим портфолио при устройстве на работу.

Участие в Open Source проектах

Ещё один отличный способ отточить навыки и параллельно внести вклад в историю - участие в различных open source проектах. Это не обязательно должны быть именно аналитические проекты. Такой подход поможет отточить скилл программирования и командной работы.


Надеюсь, мой небольшой список поможет тебе на пути становления аналитика :) Тем же, кто уже стал им - полезно иногда возвращаться и повторять основы, может даже понять и заполнить свои пробелы.
P.S. Оказывается, у телеграмма есть ограничение по длине поста… Надо будет учесть это в следующий раз :)
Ну что ж, двухнедельная болезнь и отпуск подошли, наконец-то, к концу, можно вернуться в привычное русло! Скоро будет новый пост с новым форматом. Всех с наступившим :)
Как и обещал - новый тестовый формат. На мой взгляд самый простой и быстрый способ обучения - это учиться у тех, кто уже прошел нужный вам путь. Опыт - самый дорогой источник знаний. Поэтому одной из личных целей на этот год я поставил общение не менее чем с десятью интересными личностями. В своих «интервью» я ни в коем случае не претендую на конкуренцию с лучшими, делаю просто с душой и для себя. Надеюсь, вам понравится :)

Первым отозвался поговорить со мной про жизнь Влад Исмагилов, руководитель службы аналитики Яндекс.Маркет Групп. Наша беседа вышла довольно объемной, поэтому буду дописылать скрипт по мере его заполнения.
1. Привет, расскажи коротко о себе

Влад, занимаюсь аналитикой. Первая моя несерьезная работа была связана с распознаванием образов - делал автоматизированное КПП, пытались определять сотрудников и не сотрудников какого-то конкретного подразделения с записей видеокамер. Потом в Ламоде занимался аналитикой логистики, склада и их процессов. Сейчас в Маркете занимаюсь другими направлениями аналитики - продуктом, маркетингом, B2B, операциями, товародвижением и другими. На всех местах работы по сути извлекал пользу для бизнеса из данных. Так или иначе все время был связан с анализом данных. До этого я учился в МГУ на Факультете вычислительной математики и кибернетики. Изучал методы оптимизации, теорию игр, программирование и все, что с этим связано.

2. Как пришёл в аналитику? Ты изучал математику и программирование, почему не пошел в науку?

Сначала я понял, что хочу видеть результат своей работы в каком-либо сервисе, которым пользуюсь сам. Это было очень важным элементом моей мотивации. Потом я пытался как-то сопоставить имеющиеся навыки и свои планы по их развитию, с требованиями к разным вакансиям. Достаточно долго выбирал между разработкой и аналитикой. Когда я представлял работу разработчика, я почему-то думал, что разработчикам четко говорят что и как должно работать, и ты такой сидишь 24/7 пишешь код. И даже, если это код играет очень важную роль для бизнеса и явным образом влияет на продукт - меня прям смущало, что это не моя идея, что это придумано не мной. Я хотел чуть более творческой истории, но не менее технически сложной. Какими-то такими, очень наивными и достаточно банальными размышлениями я и пришел к тому, что анализ данных, математика вокруг этого и более глубокое понимание бизнеса мне ближе

3. Но ведь в разработке, как и в аналитики, есть разные грейды. И допустим джуны действительно просто пишут код, который их попросили, а синьор программисты уже сами решают в каком направлении двигать продукт

Конечно, так. Но когда я решал на тему того, чем хочу заниматься, я был гораздо менее осознанный, поэтому просто так получилось. Я также понимал, что мне безумно нравится работать с цифрами, с показателями, с причино-следственными связями. Всеми такими логическими штуками мне просто нравилось заниматься. Более того, когда проходил самые первые собеседования, мне задавали очень интересные и клёвые задачки. Просто логически сложные, на подумать, где надо на листочке что-то покрутить, порисовать. Как сейчас помню, что особенно после проваленных собеседований, я вечерами сам и с друзьями разбирался с заданными вопросами, потому что было интересно. В общем, как-то так, во многом случайно, и получилось, что я выбрал супер правильный для себя путь аналитики, и сейчас об этом вообще не жалею. А, ну и ещё я очень плохо рисую, так что всякие креативные штуки отвалились практически сразу. Ну и я уже потом понял, что опыт работы аналитиком - это отличный бекграунд для огромного кол-ва новых сфер и ролей в рамках практически любой компании, Это так, потому что с опытом у аналитиков ключевую роль начинают играть более бизнесовые компетенции, а не навыки работы с данными.
4. Ты получил довольно техническое образование, а можно ли стать аналитиком без такого бэкграунда?

Хороший вопрос, на самом-то деле, наверное, можно. Все сильно зависит от желания и упорства конкретного человека. Существует огромное количество курсов для самостоятельного обучения, также есть много пабликов, в которых можно найти единомышленников для обмена опытом или менторства. Ну и есть много разных технологий, в которых можно достаточно просто и оперативно можно развернуть какой-нибудь собственный сервис или микро-продукт, и уже на нем попрактиковаться (не имея времени на полноценную или парттайм работу). Стажировки также никто не отменял - огромное кол-во компаний готовы предоставить возможности обучения на практических задачах. Я бы не менее важной компетенцией для аналитика назвал бы хорошее понимание курса физики 9 класса, чтобы вообще представлять, почему так устроен мир. Это и про любопытство и про “правильные вопросы” и про некоторую критичность мышления, что является чуть ли не ключевым навыком аналитика. Технические навыки, как мне кажется, меньшая из проблем в росте и развитии аналитика. То есть это те скиллы, на которые можно потратить ряд усилий, времени и во всем разобраться. Мне кажется, это вообще не является необходимым условием, так как знаю много прекрасных аналитиков, которые получали гуманитарное образование. Они подмечают нужные вещи, задаются правильными вопросами, по сути - хорошо познают, что их окружает. Эта часть мне кажется более важной, чем какое-то конкретное образование. Например, хорошие журналисты, которые работают с большим количеством неструктурированной информации, способны ее укладывать в какую-то системную картинку и доносить объективные выводы до аудитории - это серьезная аналитическая работа. Скорее технические навыки это хорошее подспорье, которое позволит не тратить много усилий на первичную обработку данных на самом деле.
5. В таком случае, что нужно знать, чтобы прийти в аналитику, скажем, на стажера/джуна. Что нужно выучить, чтобы пройти собеседование и получить работу, которую они хотят?

С одной стороны, собеседование далеко не самый первый шаг у кандидата, который хочет стать аналитиком. Он заранее начинает подготовку к этому процессу - изучает, что это за профессия, какие задачи решают, чем вообще занимаются. Ожидается, что кандидат, который все-таки решил прийти на собеседование, уже какое-то количество времени в этот процесс инвестировал. Здесь, в первую очередь, от начинающего специалиста в области аналитики я бы ожидал понимание базовых физических процессов. Это те штуки, которые окружают всех нас - от того как кипит вода до того, как летают самолёты и не тонут огромные лайнеры. Это такие базовые вопросы, которыми очень любопытный человек может задаться и круто, если он не пройдёт мимо этого интента и пойдет раскопает эту историю. Это первый пункт, который надо прокачать начинающему аналитику. Как только он хотя бы немного времени инвестирует в понимание, что же это за профессия, он быстро дойдет до идеи, что навыки работы с данными - это тоже необходимая история. Речь не идет о том, чтобы стажер-аналитик умел писать на десятке библиотек на Python, на R, еще и знает C++ и C#. Здесь речь про то, что человек выбрал нужный себе инструмент, прошёл пару курсов, написал какой-нибудь свой первый проект, взял открытые данные из открытых источников и решил свою прикладную задачу. Например, взял и спарсил Gismeteo, Яндекс.Погоду, какие-то другие сервисы и показывает для себя личный прогноз погоды, получающийся через усреднение всех источников, которые он знает. По сути это такая понятная задача, где человек решил интересную для себя проблему в моменте, используя какие-то инструменты, которые позволили ему получить данные, обработать их и получить пользу. Это первый путь, чтобы понять какие инструменты понадобятся в работе. Или спарсил весь Циан и выбрал себе самую оптимальную локацию квартиру, которую он собирается снять, относительно близости к работе, университету или какие-то еще важные требования. Это позволит не пугаться работе с данными, их объемов и всему, что с этим связано. Круто, если человек пошел еще дальше и понял, что данные мы не просто складываем и усредняем, а что есть некоторая математическая база под всем этим делом, как вообще принимаются решения. Если с этим бекграундлом еще и подойти к понимаю бизнеса, в котором человек собирается работать, то у него будет какое-то интуитивное понимание о командах и процессах внутри компании. Он поймет, что есть люди, которые развивают сам продукт, есть люди, которые делают его дистрибуцию, есть какие-то оффлайн процессы, без которых этот продукт невозможен. Хотя бы интуитивное понимания, как устроен бизнес, получить первые теоретические знания и немного практики по работе с данными и начале статистики и, самое важное, критическое мышление - это уже такой комплект, который очень хорошо характеризует начинающего интересного аналитика.