Я бы хотел получить такое письмо три года назад, когда только начинал изучать Data Science (DS). Чтобы там были необходимые ссылки на полезные материалы. Статья не претендует на полноту охвата необъятной области DS. Однако для начинающего специалиста будет полезна.


Нейронные сети – это...


В DS наиболее часто используются следующие технологии:


  • свободное владение английским языком;
  • операционная система Ubuntu Linux (так исторически сложилось);
  • язык программирования Python (но лучше Anaconda Python);
  • интегрированная среда разработки (IDE) PyCharm (Community Edition бесплатная);
  • инфраструктура (framework) для машинного обучения (ML machine learning), глубокого обучения (DL deep learning) и создания нейросетей (PyTorch, TensorFlow и десятки других);
  • если нет своей мощной видеокарты (GPU graphical processing unit), тогда следует пользоваться бесплатными облачными технологиями на основе Jupyter Notebook;
  • умение пользоваться распределенной системой управления версиями Git (GitHub, GitLab, Bitbucket и т.д.);
  • иметь учетную запись на StackOverflow и всех его ответвлениях.

Также со временем вам понадобятся множество различных дополнительных к Python библиотек и инструментов обработки изображений и данных. Их десятки. Наиболее полезные для меня (обработка изображений) в порядке убывания важности:


  • Virtual Environment – виртуальная среда разработки для различных проектов, которая инкапсулирует в себе разные версии библиотек и инструментов.
  • NumPy – работа с матрицами, линейная алгебра.
  • OpenCV – множество различных алгоритмов для работы с изображениями.
  • Jupyter Notebook – веб-приложение для разработки и выполнения программ Python в браузере и в облаке.
  • Tensorflow-gpu – конфигурация нейронных сетей и вычисления на графических картах.
  • iPython – более удобная консольная работа с командами Python, советую использовать её вместо консоли по-умолчанию.
  • Matplotlib – рисование графиков и диаграмм.
  • Pillow – работа со всеми популярными форматами изображений.
  • Pandas – работа с данными.
  • SciPy – продвинутая работа с алгоритмами, бесплатная альтернатива программе MatLab.
  • Scikit-learn – алгоритмы машинного обучения.
  • Scikit-image – продвинутая обработка изображений.
  • K3D – работа с трехмерными графиками и изображениями в Jupyter Notebook.

Машинное обудение (ML machine learning), а особенно глубокое обучение (Deep Learning) невозможны без данных. Необходимые базы данных (датасеты, datasets) можно поискать через сервис Google Dataset Search или среди 25-ти тысяч датасетов Kaggle.


Ну, давай, покажи нам примеры


Что у меня есть:



Спасибо за внимание!

Комментарии (21)


  1. Ermit
    02.01.2020 01:04
    +7

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

    В качестве альтернативного (или дополнительного) варианта освоения DS возможен задачный подход, когда выбирается небольшая простая задача (например, тот же MNIST или что-то еще обучательное) и производится решение end-to-end. С анализа датасета до оформления решения. Проектный подход эффективнее по трем причинам: 1) задача определяет модели, 2) задача определяет инструменты, 3) задача определяет требования к качеству решения и оптимизацию его. Очень многие из пересчисленных Вами технологий так или иначе будут использованы, но будет совершенно иной ракурс. Без этих ограничений и фокусирования DS можно изучать неограниченно долго. )))


    1. FooBar167 Автор
      03.01.2020 23:10

      Верно, быстрее и легче задачный подход. У задачного подхода тоже есть минусы. Например, разбирать ошибки ближе к концу проекта. Отсутствие системного мышления (в моей следующей статье).
      Я как-то ближе к «старой школе». Мне интересно изучать подробно. Более нацеленно на получение кайфа от процесса изучения, чем от конечного результата. И для этого нужно в разы больше времени и усилий.
      Лучше всего комбинированный подход: сделал небольшой проект, почитал теорию, что нового по предмету появилось в последнее время, потом сделал еще один небольшой проект, снова почитал, что нового и т.д.


    1. firstdmitry
      03.01.2020 23:10
      +1

      О, ну вот для меня (маркетолога) все статьи про анализ данных заканчивались лишь их чтением, в течении многих лет (около 10 и задача передо мной стоит и коллективно даже решать её пытаемся))) пока я не сел за изучение Питона и вот здесь понеслось… Поставил интерпретатор, ещё что-то… А на курсах то они программируют из Линукса, а у меня Винда — не удобно… Либо менять курсы либо ставить Убунту на Виртуалку… Это я к чему: в моей ситуации статья очень интересная и я пошёл дальше ссылки ковырять) Спасибо!


      1. FooBar167 Автор
        03.01.2020 23:18

        Как-то получилось, что научился все настраивать и на Windows и на Ubuntu. В общем, можно настроить все на обеих операционных системах. Благо с кроссплатформенным Python все почти одинаково. Однако больше инфы по Ubuntu.
        Для Windows необходимо установить Cygwin — команды Linux для Windows. Однако в некоторых сложных случаях есть отличия.
        Для начала посмотрите список этих ссылок. Я с них начинал изучать.
        Затем попробуйте задачных подход: берите задачу и ищете в Интернете, как ее решить. Это быстрее. Возможно, это введение в машинное обучение поможет понять, как это все работает в общих чертах.


      1. FooBar167 Автор
        03.01.2020 23:21

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


    1. retar
      03.01.2020 23:22
      +1

      Вот да. Курсы, книги, мануалы — как прикладное. Берешь задачу и решаешь ее, по пути подкуривая различные мануалы, документацию и прочее. Не только в дата сайнс, но и вообще для обучения программированию


      1. FooBar167 Автор
        03.01.2020 23:27

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


        1. retar
          04.01.2020 17:20
          +1

          Ну я предлагаю наоборот: решаешь задачи и по необходимости изучаешь предметную область той или иной подзадачи.

          Пишешь парсер -> изучаешь работу регулярок вообще и в конкретном яп в частности.

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


  1. chapuza
    02.01.2020 11:15

    1. FooBar167 Автор
      03.01.2020 23:28

      Да я упомянул Google Colab и еще 6 различных облачных бесплатных Jupyter Notebook приложений.


  1. ideological
    02.01.2020 13:08
    +3

    У меня есть послание:
    Data science, это хобби, профессии такой не существует :).


    1. FooBar167 Автор
      03.01.2020 23:36

      Честно говоря, я анализировал данные еще в 2005 году и получал за это зарплату. Только это тогда не называлось Data Science, а Event Log Management. Тогда же выучил регулярные выражения до уровня профи. Сейчас же RegEx мне не нужны особо, т.к. работаю с изображениями.


  1. KonstantinSpb
    02.01.2020 14:01

    1. FooBar167 Автор
      03.01.2020 23:42

      Все настроенное в контейнере Docker? Может быть… но мы, представители «старой школы» настраиваем все руками :-) У меня есть инструкция по настройке виртуальной среды: Anaconda virtual environment. Проверял, работает на Ubuntu и Windows. С чистым Python сложнее настроить CUDA и cuDNN, поэтому лучше Anaconda Python.


  1. Unvereinbare
    02.01.2020 16:58
    +1

    Добавлю к вышеперечисленному отличный гайд Вастрика по введению в ML.


    1. FooBar167 Автор
      03.01.2020 23:49

      Отличный гайд! К сожалению, я его не нашел, поэтому написал свой.


  1. Rusov
    03.01.2020 23:49
    +1

    Спасибо


  1. IrinaBubley
    03.01.2020 23:50
    +1

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


  1. KMU
    03.01.2020 23:50
    +1

    Спасибо!
    Для старта можно купить Nvidia Jetson Nano в районе 100$ (очень мощный SBC). Там же на сайте Nvidia пошаговая инструкция/курс, как настроить и использовать данную железку.


  1. KonstantinSpb
    04.01.2020 07:42
    +1

    1. FooBar167 Автор
      04.01.2020 13:29

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