Как реализовать свой первый алгоритм машинного обучения с помощью Weka

Вступление

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

Weka - это набор инструментов для визуализации данных и алгоритмов, созданных на основе Java. Но не волнуйтесь! Вам не нужно знать Java, чтобы использовать Weka, благодаря его графическому пользовательскому интерфейсу (GUI). Используя этот графический интерфейс, вы можете запускать популярные модели машинного обучения на данных без написания кода!

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

Основы

Данные

Прежде чем вы сможете запустить алгоритмы машинного обучения, вам понадобится набор данных. Отличное место для поиска набора данных - Kaggle, веб-сайт для специалистов по данным, содержащий задачи, наборы данных и многое другое. Просто найдите набор данных в интересующей вас области и загрузите его! В этом руководстве я буду использовать набор данных о цветках ириса, который можно найти здесь, если вы хотите продолжить. Я рекомендую искать наборы данных в формате CSV для простейшей реализации. CSV означает значения, разделенные запятыми, и представляет собой простой текстовый документ, в котором каждая строка представляет собой строку таблицы, а запятые разделяют столбцы. После загрузки файла CSV откройте его в текстовом редакторе, чтобы ознакомиться с форматом.

Регресс

Регрессия - это один из методов, который вы изучите в этом руководстве. Задачи регрессии сосредоточены на предсказании непрерывного числа. Например, количество лайков в Facebook или продажная цена дома. Взгляните на свой набор данных, который вы получили от Kaggle, и попытайтесь определить любые проблемы регрессии, ища непрерывные значения и решив, будут ли они полезны для прогнозирования.

Классификация

Классификация - это еще один метод, которому вы научитесь в этом руководстве. Задачи классификации предсказывают категорию записи. Например, это роза? Или это газировка? Взгляните на свой набор данных и попытайтесь выявить любые проблемы с классификацией, ища категории и решив, будут ли они полезны для прогнозирования.

Типы данных

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

Реализация

Теперь, когда вы лучше понимаете некоторые основные термины, используемые в машинном обучении, давайте приступим к созданию вашей первой модели!

Первый шаг - загрузить графический интерфейс Weka здесь. После установки программы вы должны увидеть окно ниже.

В Weka GUI есть пять основных областей: Explorer, Experimenter, KnowledgeFlow, Workbench и Simple CLI. Вначале вы можете игнорировать все, кроме вкладки Explorer, пока не приобретете дополнительный опыт работы с Weka. Нажмите кнопку проводника, чтобы перейти на экран ниже.

На вкладке проводника есть 7 вкладок: Предварительная обработка, Классификация, Кластер, Связать, Выбрать атрибуты, Визуализировать и Прогноз. В этом руководстве мы будем придерживаться вкладок Preprocess и Classify. Вкладка Preprocess показана выше. Здесь вы загрузите свои данные. Однако нам нужно будет преобразовать набор данных csv в файл ARFF. Для этого вам понадобится текстовый редактор и Sublime Text. Sublime - это бесплатный редактор кода, который можно скачать здесь.

После загрузки Sublime откройте ваш CSV-файл в текстовом редакторе и скопируйте его содержимое. Затем вставьте их в новый файл Sublime. Сохраните этот файл и назовите его в конце .arff.

Файлы ARFF состоят из трех разделов: отношения, атрибуты и данные. Нам нужно будет добавить эти разделы в файл. В первой строке добавьте компонент отношения и назовите свой набор данных.

@RELATION iris

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

@ATTRIBUTE Id NUMERIC
@ATTRIBUTE SepalLengthCm NUMERIC
@ATTRIBUTE SepalWidthCm NUMERIC
@ATTRIBUTE PetalLengthCm NUMERIC
@ATTRIBUTE PetalWidthCm NUMERIC
@ATTRIBUTE Species {Iris-setosa, Iris-versicolor, Iris-virginica}

Пропустите следующую строку и добавьте компонент данных над скопированными данными CSV. Не забудьте удалить строку заголовка, если она есть в ваших данных.

@DATA
1,5.1,3.5,1.4,0.2,Iris-setosa
2,4.9,3.0,1.4,0.2,Iris-setosa
3,4.7,3.2,1.3,0.2,Iris-setosa
4,4.6,3.1,1.5,0.2,Iris-setosa
5,5.0,3.6,1.4,0.2,Iris-setosa
6,5.4,3.9,1.7,0.4,Iris-setosa
7,4.6,3.4,1.4,0.3,Iris-setosa
8,5.0,3.4,1.5,0.2,Iris-setosa
....

Наконец, сохраните этот файл еще раз, и вы готовы загрузить его в Weka!

На вкладке «Предварительная обработка» в Weka нажмите «Открыть файл» и перейдите к новому файлу ARFF.

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

После загрузки данных щелкните вкладку классификации. Здесь мы будем запускать как регрессионные, так и классификационные модели (регрессионные модели также запускаются здесь, несмотря на название classify). Вы должны увидеть экран ниже.

В разделе «Параметры теста» у нас есть 4 варианта: «Использовать обучающий набор», «Поставляемый набор тестов», «Перекрестная проверка» и «Процентное разбиение». Чтобы оценить точность модели для прогнозирования выбранного столбца, нам необходимо предоставить ему новые данные, которых он раньше не видел. Один из способов сделать это - разбить набор данных на две части, называемые тестовой и обучающей. Однако я рекомендую использовать перекрестную проверку с 10 кратностями. Это разделит набор данных на тест и обучение (с 10% данных, используемых для тестирования) 10 раз. Обычно это лучшая практика.

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

Затем нам нужно выбрать алгоритм машинного обучения, который мы будем использовать. Поскольку вид ириса представляет собой проблему классификации, я буду использовать алгоритмы классификации. Одним из основных алгоритмов классификации является логистическая регрессия (не путайте регрессию в логистической регрессии - это алгоритм классификации). Логистическая регрессия выдаст число от 0 до 1 для классификации записи. Я пропущу математику в этом руководстве, однако понимание того, как работают эти алгоритмы, чрезвычайно важно. Подробнее о логистической регрессии вы можете узнать здесь. Чтобы выбрать алгоритм логистической регрессии, нажмите выбрать под классификатором, а затем логистический под классификаторами ›функции.

Теперь все, что нам нужно сделать, это нажать кнопку «Старт»! После запуска модели вы должны получить результат, аналогичный показанному ниже.

Если вы решаете проблему регрессии, процесс будет таким же. Однако вместо того, чтобы выбирать логистику в ›классификаторах, функции выбирают LinearRegression. Как и в случае с логистической регрессией, я пропущу математику линейной регрессии, однако вы можете найти дополнительную информацию о ней здесь.

Теперь вы можете сказать: «Отлично! Я заставил модель работать ... но что теперь? " После запуска вашей модели вам нужно научиться читать выходные данные и оценивать успешность модели.

Оценка модели

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

Классификация

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

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

В разделе точности по классам обратите внимание на f-меру и область ROC. F-мера - это показатель от 0 до 1, который учитывает как точность, так и отзывчивость. При оценке f-меры, чем ближе она к 1, тем лучше работает модель. Область ROC - это область под кривой рабочих характеристик приемника. Этот вывод будет между 0 и 1 и укажет, насколько хорошо модель может различать классы. При оценке области ROC, чем ближе число к 1, тем лучше. Вы также можете видеть, что Weka предоставляет f-меру и область ROC для каждого класса, а также средневзвешенное значение. Я рекомендую обращать внимание на средневзвешенное значение, чтобы оценить модель в целом, однако, если у вас есть несколько классов, это может помочь определить классы, классифицируемые модели с определенными проблемами.

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

Регресс

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

PetalWidthCm = 0,0035 * Id -0,1591 * SepalLengthCm +0,2095 * SepalWidthCm + 0,4272 * PetalLengthCm -0,3811

В сводном разделе будут представлены показатели для оценки успешности модели. Коэффициент корреляции покажет вам, насколько линейная связь существует между переменными. Чем ближе коэффициент корреляции к 1, тем лучше. Кроме того, средняя абсолютная ошибка сообщит вам абсолютное значение средней ошибки (сверх или заниженной). Абсолютное значение используется для регистрации отрицательных ошибок. Лучше иметь более низкую среднюю абсолютную ошибку, однако значение «ниже» будет зависеть от данных и потребует некоторой интуиции.

Обсуждение

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

Вы также можете развить свои навыки с Weka, чтобы использовать различные и более продвинутые методы. Некоторые дополнительные алгоритмы, которые вы можете использовать для классификации: C4.5 Decision Tree (известное как J48 в Weka), Random Forest и Naive Bayes. Если вы чувствуете себя уверенно, у Weka также есть реализация Support Vector Machine (SVM) под названием SMOreg - внимательно выбирайте ядро!