Здравствуйте, Читатели!
Недавно я запустил репозиторий Homemade Machine Learning, который содержит примеры популярных алгоритмов и подходов машинного обучения, таких как линейная регрессия, логистическая регрессия, метод K-средних и нейронная сеть (многослойный перцептрон). Каждый алгоритм содержит интерактивные демо-странички, запускаемые в Jupyter NBViewer-e или Binder-e. Таким образом у каждого желающего есть возможность изменить тренировочные данные, параметры обучения и сразу же увидеть результат обучения, визуализации и прогнозирования модели у себя в браузере без установки Jupyter-а локально.
Целью данного репозитория является реализация алгоритмов почти с нуля, для того, чтобы иметь более детальное понимание математических моделей, который стоят за каждым из алгоритмов. Основными используемыми библиотеками стали NumPy и Pandas. Эти библиотеки используются для эффективных операций над матрицами, а так же для загрузки и парсинга CSV данных. В демо-страничках для построения графиков и визуализации тренировочных данных так же используются библиотеки Matplotlib и Plotly. В случае с логистической регрессией для минимизации функции потерь используется библиотека SciPy, но в остальных случаях градиентный спуск реализован на чистом NumPy/Python-е. Использование библиотек на подобии PyTorch или TensorFlow избегается из-за обучающей цели репозитория.
На данный момент в репозитории реализованы следующие алгоритмы…
Регрессия. Линейная регрессия.
В задачах, связанных с регрессией мы пытаемся предсказать реальное число на основании входящих данных. По сути мы строим линию/плоскость/n-мерную плоскость вдоль тренировочных данных, чтобы иметь возможность сделать прогноз для входных данных, отсутствующих в тренировочном сете. Это происходит, например, если мы хотим предсказать стоимость 2-х комнатной квартиры, в центре города N, на 7-м этаже.
- ∑ Математическая модель — теория и ссылки для дальнейшего чтения.
- ✎ Пример имплементации на Python.
- ➤ Демонстрация линейной регрессии с одним параметром — прогнозирование "уровня счастья" в стрне в зависимости от ВВП.
- ➤ Демонстрация линейной регрессии с несколькими параметрами — прогнозирование "уровня счастья" в стрне в зависимости от ВВП и показателя свободы.
- ➤ Демонстрация нелинейной регрессии — пример полиномиального/синусоидального расширения входных параметров для прогнозирования нелинейных зависимостей.
Классификация. Логистическая регрессия.
В задачах связанных с классификацией мы разбиваем данные на классы в зависимости от параметров этих данных. Примером задачей классификации может быть распознавание спама. В зависимости от текста письма (входящие данные) мы относим каждое письмо к одному из двух классов ("спам" или "не спам").
- ∑ Математическая модель — теория и ссылки для дальнейшего чтения.
- ✎ Пример имплементации на Python
- ➤ Демонстрация логистической регрессии с линейными границами — классификация цветов по ширине и длинне их лепестков.
- ➤ Демострация логистичекой регрессии с нелинейными границами — классификация микрочипов (исправный/неисправный) по двум параметрам.
- ➤ Демонстрация логистической регрессии с множеством параметров — распознавание рукописных цифр.
Кластеризация. Метод K-средних.
В задачах кластеризации мы разбиваем наши данные на кластеры, которые заранее нам неизвестны. Эти алгоритмы могут использоваться для сегментации рынка, анализа социальных и не только сетей.
- ∑ Математическая модель — теория и ссылки для дальнейшего чтения.
- ✎ Пример имплементации на Python.
- ➤ Демонстрация метода К-средних — кластеризация цветов на группы в зависимости от длинны и ширины их лепестков.
Нейронные сети. Многослойный перцептрон (MLP).
Нейронные сети скорее являются не алгоритмом, а "паттерном" или "фреймворком" для организации разных алгоритмов машинного обучения в одну систему для дальнейшего анализа сложных входных данных.
- ∑ Математическая модель — теория и ссылки для дальнейшего чтения.
- ✎ Пример имплементации на Python.
- ➤ Демонстрация многослойного перцептрона — распознование рукописных цифр.
Поиск аномалий с помощью распределения Гаусса
В задачах связанных с поиском аномалий мы пытаемся выделить те экземпляры данных, которые выглядят "подозрительно" в сравнении с большинством других экземпляров. Например определение нетипичных (подозрительных) транзакций по банковской карте.
- ∑ Математическая модель — теория и ссылки для дальнейшего чтения.
Я надеюсь, что вы найдете репозиторий полезным, либо экспериментируя с демонстрациями каждого алгоритма, либо читая о математических моделях, стоящими за ними, либо анализируя детали имплементации каждого из них.
Успешного кодинга!
Автор: Алексей