Махауты - Классификация

Что такое классификация?

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

  • Приложение iTunes использует классификацию для подготовки списков воспроизведения.

  • Поставщики почтовых услуг, такие как Yahoo! и Gmail используют этот метод, чтобы решить, следует ли классифицировать новое письмо как спам. Алгоритм категоризации обучается, анализируя привычки пользователей отмечать определенные письма как спам. Исходя из этого, классификатор решает, будет ли будущее письмо помещаться в ваш почтовый ящик или в папку для спама.

Как работает классификация

При классификации заданного набора данных система классификаторов выполняет следующие действия:

  • Первоначально новая модель данных готовится с использованием любого из алгоритмов обучения.
  • Затем подготовленная модель данных тестируется.
  • После этого эта модель данных используется для оценки новых данных и определения их класса.

Применение классификации

  • Credit card fraud detection- Механизм классификации используется для прогнозирования мошенничества с кредитными картами. Используя историческую информацию о предыдущих мошенничествах, классификатор может предсказать, какие будущие транзакции могут превратиться в мошенничества.

  • Spam e-mails - В зависимости от характеристик предыдущих спам-писем классификатор определяет, следует ли отправлять новое обнаруженное электронное письмо в папку спама.

Наивный байесовский классификатор

Mahout использует алгоритм классификатора Наивного Байеса. Он использует две реализации:

  • Распределенная наивная байесовская классификация
  • Дополнительная наивная байесовская классификация

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

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

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

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

Порядок классификации

Для реализации классификации необходимо выполнить следующие шаги:

  • Создать пример данных
  • Создание файлов последовательности из данных
  • Преобразование файлов последовательностей в векторы
  • Тренируйте векторы
  • Проверить векторы

Шаг 1. Создание примера данных

Сгенерируйте или загрузите данные для классификации. Например, вы можете получить20 newsgroups пример данных по следующей ссылке: http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

Создайте каталог для хранения входных данных. Загрузите пример, как показано ниже.

$ mkdir classification_example
$ cd classification_example
$tar xzvf 20news-bydate.tar.gz
wget http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

Шаг 2. Создайте файлы последовательностей

Создайте файл последовательности из примера, используя seqdirectoryутилита. Синтаксис для генерации последовательности приведен ниже:

mahout seqdirectory -i <input file path> -o <output directory>

Шаг 3: преобразование файлов последовательностей в векторы

Создавайте векторные файлы из файлов последовательностей, используя seq2parseутилита. Вариантыseq2parse утилиты приведены ниже:

$MAHOUT_HOME/bin/mahout seq2sparse
--analyzerName (-a) analyzerName  The class name of the analyzer
--chunkSize (-chunk) chunkSize    The chunkSize in MegaBytes.
--output (-o) output              The directory pathname for o/p
--input (-i) input                Path to job input directory.

Шаг 4: Обучите векторы

Обучите сгенерированные векторы, используя trainnbутилита. Варианты использованияtrainnb утилиты приведены ниже:

mahout trainnb
 -i ${PATH_TO_TFIDF_VECTORS}
 -el
 -o ${PATH_TO_MODEL}/model
 -li ${PATH_TO_MODEL}/labelindex
 -ow
 -c

Шаг 5: проверьте векторы

Проверьте векторы, используя testnbутилита. Варианты использованияtestnb утилиты приведены ниже:

mahout testnb
 -i ${PATH_TO_TFIDF_TEST_VECTORS}
 -m ${PATH_TO_MODEL}/model
 -l ${PATH_TO_MODEL}/labelindex
 -ow
 -o ${PATH_TO_OUTPUT}
 -c
 -seq