Машинное обучение на Python-е с интерактивными Jupyter демонстрациями

    image


    Здравствуйте, Читатели!


    Недавно я запустил репозиторий Homemade Machine Learning, который содержит примеры популярных алгоритмов и подходов машинного обучения, таких как линейная регрессия, логистическая регрессия, метод K-средних и нейронная сеть (многослойный перцептрон). Каждый алгоритм содержит интерактивные демо-странички, запускаемые в Jupyter NBViewer-e или Binder-e. Таким образом у каждого желающего есть возможность изменить тренировочные данные, параметры обучения и сразу же увидеть результат обучения, визуализации и прогнозирования модели у себя в браузере без установки Jupyter-а локально.


    Целью данного репозитория является реализация алгоритмов почти с нуля, для того, чтобы иметь более детальное понимание математических моделей, который стоят за каждым из алгоритмов. Основными используемыми библиотеками стали NumPy и Pandas. Эти библиотеки используются для эффективных операций над матрицами, а так же для загрузки и парсинга CSV данных. В демо-страничках для построения графиков и визуализации тренировочных данных так же используются библиотеки Matplotlib и Plotly. В случае с логистической регрессией для минимизации функции потерь используется библиотека SciPy, но в остальных случаях градиентный спуск реализован на чистом NumPy/Python-е. Использование библиотек на подобии PyTorch или TensorFlow избегается из-за обучающей цели репозитория.


    На данный момент в репозитории реализованы следующие алгоритмы…


    Регрессия. Линейная регрессия.


    В задачах, связанных с регрессией мы пытаемся предсказать реальное число на основании входящих данных. По сути мы строим линию/плоскость/n-мерную плоскость вдоль тренировочных данных, чтобы иметь возможность сделать прогноз для входных данных, отсутствующих в тренировочном сете. Это происходит, например, если мы хотим предсказать стоимость 2-х комнатной квартиры, в центре города N, на 7-м этаже.



    Классификация. Логистическая регрессия.


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



    Кластеризация. Метод K-средних.


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



    Нейронные сети. Многослойный перцептрон (MLP).


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



    Поиск аномалий с помощью распределения Гаусса


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





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


    Успешного кодинга!

    • +18
    • 18,5k
    • 5
    Поделиться публикацией

    Комментарии 5

      +1
      Иногда так интересно почитать статьи о ИИ. Правда потом понимаешь, что ничего не понимаешь…
        –1
        Автору спасибо за интересный материал

        немного позанудствую опять про подачу на английском (и да я в IT уже больше 15 лет и английский знаю неплохо) но: например почему то на той же coursera многие популярные курсы переведены на over 10 языков и при этом среди них нет перевода на русский.
        А мы для себя же зачем то пишем на английском. Обидно.
          +1
          Andronas, да я Вас понимаю, было бы здорово иметь много хорошего материала (статей, лекций, приложений) на более понятном языке. Мне кажется причина уклона в английский язык заключается во влиянии… Влияние, которое оказывают англоязычные программисты в той же сфере машинного обучения, по моему субъективному мнению, на порядок выше. Чтобы далеко не ходить можно взять, например, TensorFlow или NumPy библиотеки, упомянутые в статье, или курс по машинному обучению от Andrew Ng — это все создано или описано именно англоязычным сообществом. В итоге и возникает то самое влияние, которое определяет «моду» в сфере программирования и машинного обучения в частности.
            0
            Так ведь вы сами писали этот материал? Зачем писать статью на русском, а весь материал на английском? Это, как вы покупаете книгу с эпилогом на одном языке и остальным текстом на другом. Ну и как вы сами заметили — на английском материала на эту тему и так много.
          0
          А шарик в рулетке сможет рассчитать?!)

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

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