Подборка: Более 70 источников по машинному обучению для начинающих



    Индикатор кулачкового аналогового компьютера / Wiki

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

    Это список предназначен для тех, кто только начинает изучать тему машинного обучения, например, с использованием Python (если вы хотите начать учить Python, вам в помощь эта статья).

    Машинное обучение – это лишь одна из математических дисциплин, связанных с понятием «данные». Чтобы разобраться в том, что такое аналитика данных, анализ данных, наука о данных, машинное обучение и большие данные, прочитайте этот материал.


    Вот инструменты, которые вам понадобятся:

    • Python (Python 3 – наилучший вариант),
    • IPython и Jupyter Notebook (IPython Notebook),
    • Пакеты для расчетов: NumPy, Pandas, Scikit-Learn, Matplotlib.

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

    Не страшно, если у вас установлен Python 2.7. Переходить на Python 3 нет необходимости. Вместо Anaconda вы можете воспользоваться pip или virtualenv. Не можете определиться? Прочитайте этот материал.

    Для начала познакомьтесь с IPython Notebook (это займет 5-10 минут). Еще можете посмотреть это видео. Далее рассмотрите небольшой пример (это займет 10 минут) классификации цифр с использованием библиотеки scikit-learn.

    Наглядное введение в теорию машинного обучения


    Давайте побольше узнаем о машинном обучении: об идеях и особенностях. Прочитайте статью Стефани Йи (Stephanie Yee) и Тони Чу (Tony Chu) «Наглядное введение в машинное обучение. Часть 1».



    Прочитайте статью профессора Педро Домингоса (Pedro Domingos). Во время чтения не торопитесь, делайте заметки. В статье можно выделить два основных момента:

    Одних только данных недостаточно. Домингос писал: «…нет ничего удивительного в том, что для обучения нужны знания. Машинное обучение не может получить что-то из ничего, но может получить большее из меньшего. Обучение похоже на сельское хозяйство, где большую часть работы делает природа. Фермеры дают семенам питательные вещества, чтобы вырастить урожай. Так и здесь: чтобы создать программу, нужно совместить знания и данные».

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

    Итак, знания и данные имеют решающее значение. Это означает, что усложнять алгоритмы нужно только тогда, когда у вас действительно нет выбора.



    Схема составлена на основе слайда из лекции Алекса Пинто (Alex Pinto) «Математика на страже безопасности: руководство по мониторингу с применением машинного обучения».

    Обучайтесь на примерах


    Выберете и рассмотрите один или два примера из представленных ниже.

    • Распознавание лиц на фотографиях из базы данных сайта Labeled Faces in the Wild.
    • Машинное обучение на основе данных о катастрофе Титаника. Здесь демонстрируются методы преобразования данных и их анализа, а также техники визуализации. Есть примеры методов машинного обучения с учителем.
    • Прогнозирование итогов выборов: использование модели Нейта Сильвера (Nate Silver) для составления прогноза итогов выборов президента США в 2012 году, опубликованных The New York Times.

    Вот еще руководства и обзоры:


    Другие источники, в которых можно найти блокноты IPython:

    • Галерея интересных блокнотов IPython: статистика, машинное обучение и наука о данных.
    • Большая галерея Фабиана Педрегозы (Fabian Pedregosa).


    Курсы по машинному обучению


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

    Еще часто рекомендуют книгу «The Elements of Statistical Learning», но она, как правило, выступает в роли справочника. Книга бесплатная, поэтому скачайте ее или добавьте в закладки браузера.

    Еще есть вот эти онлайн-курсы:

    • Курс «Машинное обучение» профессора Педро Домингоса из Вашингтонского университета.
    • Практикум по науке о данных.
    • Наука о данных.
    • Видео «Введение в машинное обучение с scikit-learn» от Кевина Маркхэма (Kevin Markham). После просмотра видеоматериала, вы можете пройти интерактивный курс по науке о данных (есть его более ранние версии: 7, 5, 4, 3).
    • Гарвардский курс CS109 – наука о данных.
    • Продвинутый курс статистических вычислений (курс BIOS8366 университета Вандербильта).

    Отзывы о курсах и различные обсуждения:

    • Ознакомьтесь с ответом Джека Голдинга (Jack Golding) на Quora. Там вы найдете ссылку на специализацию «Data Science» на Coursera – если вам не нужен сертификат, то можете пройти все 9 курсов бесплатно.
    • Другое обсуждение на Quora: как стать специалистом по обработке и анализу данных?
    • Большой перечень ресурсов по науке о данных от сайта Data Science Weekly, а также список открытых онлайн-курсов.

    Изучаем Pandas


    Чтобы работать с Python, вам необходимо познакомиться с пакетом Pandas. Вот список материалов, которые в этом помогут:

    • Основное: знакомство с Pandas,
    • Руководство: несколько вещей в Pandas, которые я бы хотел знать раньше (блокноты IPython),
    • Полезные фрагменты кода Pandas,

    Вам также стоит уделить внимание этим ресурсам:


    Еще больше материалов и статей


    • Доступная книга Джона Формана (John Foreman) «Data Smart»,
    • Курс по науке о данных с блокнотами IPython,
    • Статья: основные трудности раздела науки о данных (прочитайте статью и комментарий Джозефа Маккарти (Joseph McCarthy)),
    • IPython: ключевые навыки специалистов по работе с данными.

    Вопросы, ответы, чаты


    На данный момент лучшим местом для поиска ответов на свои вопросы является раздел о машинном обучении на stackexchange.com. Также есть сабреддит: /r/machinelearning. Присоединяйтесь к каналу по scikit-learn на Gitter! Еще стоит обратить внимание на обсуждения на Quora и большой перечень материалов по науке о данных от сайта Data Science Weekly.

    Другие вещи, которые полезно знать


    • Наука о данных: статья Джона Формана (John Foreman), специалиста по обработке и анализу данных в MailChimp.
    • Статья: одиннадцать факторов, ведущих к переобучению, и как их избежать.
    • Достойная статья: «Машинное обучение: накладные расходы, которые влечет за собой технический долг» («Machine Learning: The High-Interest Credit Card of Technical Debt»). Цель данной статьи: определить специфические факторы риска при машинном обучении и создать шаблоны, с помощью которых можно их избежать.
    • Джон Форман: «Опасный мир машинного обучения».
    • Kdnuggets: «Издержки систем машинного обучения».

    Вам нужна практика. Пользователь с ником Olympus на Hacker News отметил, что для этого необходимо участвовать в конкурсах и соревнованиях. Kaggle и ChaLearn – это платформы для исследователей, где можно попробовать свои силы, участвуя в различных состязаниях. Здесь вы найдете примеры кода для конкурса Kaggle. Еще вариант: HackerRank.

    Послушайте и почитайте, что победители конкурсов Kaggle говорят о предложенных ими решениях. Например, почитайте блог «No Free Hunch».

    Конкурсы или состязания лишь один из способов попрактиковаться. Вы можете начать проводить исследования:

    1. Начните с вопроса. «Самая важная вещь в науке о данных – это вопрос», – говорит доктор Джефф Лик (Dr. Jeff T. Leek). Начните с вопроса, затем найдите реальные данные и проанализируйте их.
    2. Огласите результаты и обратитесь за экспертной оценкой.
    3. Устраните найденные проблемы. Поделитесь своими открытиями.

    Подробнее о научном методе вы можете узнать здесь и здесь.

    Вот еще парочка руководств по машинному обучению:
    Университет ИТМО 113,21
    IT's MOre than a University
    Поделиться публикацией
    Похожие публикации
    Комментарии 16
    • +2
      А насколько инструментарий на Питоне применим для практических задач? Как у него с производительностью и интеграцией с GPU?
      • +1
        Много success stories про использование есть.

        Большинство инструментов аналитики, обучения и прочего в Python базируются на numpy, а numpy почти полностью написан на C.
        Есть биндинги к системам анализа, который могут работать кластерами — например для Spark — PySpark
        Интеграция с GPU тоже есть — через CUDA или NumbaPRO.
        Есть куча библиотек для Deep Learning, например, Caffe

        • 0
          Дополнение по Spark.

          Spark в скором будущем будет поддерживать GPU: прототип на Github , Jira

          Идеи по использованию мобильных архитектур в кластере: Jira , новость от Databricks
          • 0
            Идеи по использованию мобильных архитектур в кластере: Jira, новость от Databricks

            Вас не смутила подпись [Just in case you didn’t realize – it’s April 1st!]?
            • 0
              Не заметил, буду внимательнее.
        • 0
          Для практической задачи обучения ML — вполне, ровно как и для визуализации работы алгоритма, например, при пошаговой обработке в интерфейсе Jupyter.
          Для практической задачи модификации или адаптации алгоритма — вполне.

          Для задач обработки крупных массивов либо окончательной подстройки коэффициентов на конкретном наборе данных — наверное, не очень, но это уже вопрос качества написания кода и применения нативных расширений, например, Cython и MKL для компиляции кода на C.
          • 0
            Дык зависит от размера ваших данных — не все задачи ML требуют терабайтов данных.
          • +4
            На курсере недавно на русском курс начался, теги: шад/вшэ, python.
            https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie
            • 0
              Да уж, курс как то не очень, я одновременно прохожу его в месте с этим www.coursera.org/learn/machine-learning небо и земля.
              Хотелось бы услышать отзывы по вот этому www.coursera.org/specializations/mashinnoye-obucheniye

              • 0
                Похоже отзывов по последнему пока нет. Записался, прохожу первый курс: экстремумы функций, производные первого и второго порядка, питон/блокнот — вот это вот всё. Вроде бы можно ускориться, но если одновременно с несколькими другими, то труднаа )

                Да, а на «Введение» на всякий случай перезаписался, но вряд ли продолжу.
                • +1
                  На мой взгляд, в курсе «Введение в машинное обучение» не хватает только лабораторных работ — чтоб тебе еще показали, как пользоваться библиотеками. А то так действительно курс распадается на 2 части, не особо связанные друг с другом. Из плюсов выделил бы финальный проект. И задача интересная, и для многих это быстрое погружение в соревнования Kaggle.
                  А то что теоретический материал «суховат»… ну да, у Andrew Ng все увлекательней, но там где, он 5 минут рассказывает, что такое производная (и 2 раза повторяет, что вы эксперт в ML), хочется давно уже просто формулу увидеть. Если ставить себе задачу действительно разбираться в машинном обучении — надо уметь воспринимать и такую подачу материала, как у Воронцова.
            • +8
              А какже знаменитый курс от Стэнфордского профессора Эндрю Энг (Andrew Ng) на coursera: www.coursera.org/learn/machine-learning
              • +1
                Есть еще обзор полезных репозиториев по Data Science и машинному обучению (там же и Python).
                • 0
                  На мой взгляд, неплохой вариант приступить к практике (помимо Kaggle) — это попроходить интерактивные тьюториалы типа Dataquest и Datacamp. А стратегия становления классным специалистом в области Data Science неплохо описана тут.
                  • 0
                    Стоило бы указать, что это перевод: github.com/hangtwenty/dive-into-machine-learning.

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

                    Самое читаемое