Начав изучать библиотеку Weka я обнаружила, что в Интернете очень мало информации о ней на русском языке – как с ней работать и как ее использовать. Эта статья будет вводной для знакомства с библиотекой.
Что такое WEKA?
Начнем с того, что WEKA – это библиотека для анализа данных и машинного обучения, написанная на Java. Название расшифровывается как Waikato Environment for Knowledge Analysis. Это проект Университета Waikato в Новой Зеландии. Weka представляет собой набор современных алгоритмов машинного обучения и инструментов предварительной обработки данных. Скачать ее можно на сайте.
Работать в WEKA можно, как через графический интерфейс, так и используя библиотеку в коде. В этой статье мы разберем использование библиотеки с помощью графического интерфейса. Так как изучать что-то новое интереснее и быстрее на практике, то будем учиться пользоваться библиотекой на примере данных, взятых с портала Kaggle.
Загрузка данных в WEKA
Интерфейс WEKA
Открываем Weka. Weka содержит несколько приложений для работы с данными: Explorer, Experimenter, KnowledgeFlow, Workbrench, Simple CLI. Нас интересует Explorer. Это основной графический интерфейс Weka. Explorer содержит 7 различных панелей.
Загрузка данных
Для начала загрузим данные. Делается это в панели Preprocess. Нажимаем Open file… и выбираем нужный файл. Для хранения данных Weka использует формат ARFF. ARFF – это аббревиатура от Attribute-Relation File Format. Файл типа ARFF выглядит следующим образом:
Файл ARFF состоит из двух частей: в первой части находится информация о данных – список атрибутов и их типы, а во второй части, после @data – сами данные. Первая строка файла – это название самого файла.
Weka также позволяет открывать файлы других типов. Для этого используется конвертер.
Предварительная обработка данных
Предварительная обработка данных проводится в панели Preprocess.
Так, посмотрим на наши данные. Набор данных содержит информацию о воде. Наша задача – создать модель, которая будет предсказывать пригодна ли вода для питья.
Для начала изучим данные. Наш набор данных состоит из 3276 примеров и 10 атрибутов.
Пропуски
Проверим данные на пропуски. Выбрав атрибут мы видим информацию о нем – значения какого типа он содержит, сколько пропущенных значений и т.д. Проверив все атрибуты мы видим, что пропущенные значения содержат следующие атрибуты: ph, sulfate, trihalomethanes.
Для того, чтобы заполнить пропуски в WEKA существует 2 фильтра: ReplaceMissingValues, который заполняет пропуски модой и средним значением и ReplaceMissingWithUserConstant, который заполняет пропуски заданным пользователем значением. Воспользуемся фильтром ReplaceMissingValues. Найти этот фильтр можно нажав Choose… и выбрав weka→filters→unsupervised→attribute→ReplaceMissingValues. Применим данный фильтр, нажав Apply.
Преобразование типа данных
Для того, чтобы мы могли работать с разными алгоритмами преобразуем тип атрибута potability в номинальный тип. Для этого воспользуемся фильтром NumericToNominal (находится он там же, где и предыдущий) и в настройках фильтра в строке attributeIndices укажем значение last (последний атрибут). Затем нажмем Apply.
Обучение
В панели Classify мы можем выбрать алгоритм машинного обучения и обучить наши данные.
Результаты обучения в WEKA зависят от типа класса, который мы предсказываем. Например, если мы хотим предсказать тип nominal, то мы получаем точность классификации и матрицу ошибок. А если мы хотим предсказать числовой (numeric) тип, то точность классификации и матрицу ошибок мы не получаем. В этом случае мы оцениваем качество модели по коэффициенту корреляции и другим характеристикам.
Выберем алгоритм RandomForest. Находится он в папке trees.
Для обучения модели будем использовать кросс-валидацию.
Кросс-валидация (перекрестная проверка) – это статистический метод оценки модели. В кросс-валидации данные разбиваются на k подмножеств, которые по очереди используются в обучающей и тестовой выборках. Одно подмножество используется для тестирования, а остальные (k-1) – для обучения. Процедура повторяется k раз и в результате мы получаем усредненные результаты. Задать количество подмножеств в WEKA можно в окошке Folds (по умолчанию там 10).
Оставляем значение по умолчанию и нажимаем Start. В результате мы получаем точность обучения, которая равна 66,88%, матрицу ошибок и другие оценки качества модели.
Заключение
Пакет программ WEKA хорошо подходит для тех, кто только начинает изучать интеллектуальный анализ данных и машинное обучение, так как работать в WEKA можно через графический интерфейс, что не требует написание кода. WEKA содержит необходимые инструменты предварительной обработки данных, визуализации данных и алгоритмы машинного обучения.
В установочной папке Weka есть папка data, где находятся наборы данных, которые можно использовать для практики.
Если вам понравилась WEKA и вы хотите изучить ее лучше, то на сайте futurelearn.com есть 3 курса от создателей WEKA – Data Mining with Weka, More Data Mining with Weka, Advanced Data Mining with Weka. К курсам можно присоединиться бесплатно, но тогда доступ к курсам будет ограниченный. Также видеоуроки этих курсов доступны в YouTube.
Комментарии (5)
p-oleg
21.11.2021 22:17Когда искал библиотеку для ML на Java, остановился на Deeplearning4j. У них на Github есть хорошие примеры для вхождения в тему, типа классики для классификатора цветков ириса и более сложные. Weka видел но как-то не зашло.
Но вообще на Java ML библиотек немного, балом правит питон.
Goupil
22.11.2021 00:00В свое время много пользовался WEKA, так как она входит в программный пакет ImageJ-Fiji. Она довольно неплохо позволяла делать semi-supervised segmentation на сложных биологических картинках как раз с применением random forest. Сейчас я конечно же написал бы это в виде скрипта на питоне,или вообще применил бы u-net, но тогда неплохо работало.
YuryB
22.11.2021 22:28так на сколько я понимаю на пайтоне в основном обвязки вокруг плюсов. в принципе есть graalvm из под неё можно запускать всё что компилируется в llvm, т.е. и питон и Р и си++
Divasoft
Напомнило https://ru.wikipedia.org/wiki/GPSS который в институте много лет назад преподавали нам.
lxsmkv
Нам преподавали WinGPSS, с графической оболочкой. Дискретная симуляция — интересно. Мы аэропорт моделировали в курсовой. Жаль только, что не настолько распространненая область в IT.