Mahout - кластеризация

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

Приложения кластеризации

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

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

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

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

  • Кластеризация также помогает в классификации документов в Интернете для обнаружения информации.

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

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

Используя Mahout, мы можем кластеризовать данный набор данных. Требуются следующие шаги:

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

  • Similarity and Dissimilarity Вам необходимо иметь правило для проверки сходства между вновь обнаруженными элементами и элементами в группах.

  • Stopping Condition Условие остановки требуется для определения точки, в которой кластеризация не требуется.

Процедура кластеризации

Для кластеризации данных вам необходимо -

  • Запустите сервер Hadoop. Создайте необходимые каталоги для хранения файлов в файловой системе Hadoop. (Создайте каталоги для входного файла, файла последовательности и кластерного вывода в случае навеса).

  • Скопируйте входной файл в файловую систему Hadoop из файловой системы Unix.

  • Подготовьте файл последовательности из входных данных.

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

  • Получите кластерные данные.

Запуск Hadoop

Mahout работает с Hadoop, поэтому убедитесь, что сервер Hadoop запущен и работает.

$ cd HADOOP_HOME/bin
$ start-all.sh

Подготовка каталогов входных файлов

Создайте каталоги в файловой системе Hadoop для хранения входного файла, файлов последовательности и кластеризованных данных с помощью следующей команды:

$ hadoop fs -p mkdir /mahout_data
$ hadoop fs -p mkdir /clustered_data
$ hadoop fs -p mkdir /mahout_seq

Вы можете проверить, создан ли каталог, с помощью веб-интерфейса hadoop по следующему URL-адресу - http://localhost:50070/

Это дает вам результат, как показано ниже:

Копирование входного файла в HDFS

Теперь скопируйте файл входных данных из файловой системы Linux в каталог mahout_data в файловой системе Hadoop, как показано ниже. Предположим, что ваш входной файл - mydata.txt и находится в каталоге / home / Hadoop / data /.

$ hadoop fs -put /home/Hadoop/data/mydata.txt /mahout_data/

Подготовка файла последовательности

Mahout предоставляет вам утилиту для преобразования заданного входного файла в формат файла последовательности. Эта утилита требует двух параметров.

  • Каталог входного файла, в котором находятся исходные данные.
  • Каталог выходного файла, в котором должны храниться кластерные данные.

Ниже приведена подсказка для махаута. seqdirectory утилита.

Step 1:Перейдите в домашний каталог Mahout. Вы можете получить справку с помощью утилиты, как показано ниже:

[Hadoop@localhost bin]$ ./mahout seqdirectory --help
Job-Specific Options:
--input (-i) input Path to job input directory.
--output (-o) output The directory pathname for output.
--overwrite (-ow) If present, overwrite the output directory

Создайте файл последовательности с помощью утилиты, используя следующий синтаксис:

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

Example

mahout seqdirectory
-i hdfs://localhost:9000/mahout_seq/
-o hdfs://localhost:9000/clustered_data/

Алгоритмы кластеризации

Mahout поддерживает два основных алгоритма кластеризации, а именно:

  • Кластеризация навеса
  • К-средство кластеризации

Кластеризация навеса

Кластеризация Canopy - это простой и быстрый метод, используемый Mahout для кластеризации. Объекты будут рассматриваться как точки на простом пространстве. Этот метод часто используется в качестве начального шага в других методах кластеризации, таких как кластеризация k-средних. Вы можете запустить задание Canopy, используя следующий синтаксис:

mahout canopy -i <input vectors directory>
-o <output directory>
-t1 <threshold value 1>
-t2 <threshold value 2>

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

Example

mahout canopy -i hdfs://localhost:9000/mahout_seq/mydata.seq
-o hdfs://localhost:9000/clustered_data
-t1 20
-t2 30

Вы получите кластерные данные, сгенерированные в заданном каталоге вывода.

К-означает кластеризацию

Кластеризация K-средних - важный алгоритм кластеризации. Алгоритм кластеризации k в k-средних представляет количество кластеров, на которые должны быть разделены данные. Например, значение k, указанное для этого алгоритма, выбрано как 3, алгоритм разделит данные на 3 кластера.

Каждый объект будет представлен как вектор в пространстве. Первоначально k точек будут выбираться алгоритмом случайным образом и рассматриваться как центры, каждый объект, ближайший к каждому центру, кластеризуется. Для измерения расстояния существует несколько алгоритмов, и пользователь должен выбрать нужный.

Creating Vector Files

  • В отличие от алгоритма Canopy, алгоритм k-средних требует в качестве входных данных векторных файлов, поэтому вам необходимо создавать векторные файлы.

  • Для создания векторных файлов из формата файла последовательности Mahout предоставляет 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.

После создания векторов перейдите к алгоритму k-средних. Синтаксис для запуска задания k-means следующий:

mahout kmeans -i <input vectors directory>
-c  <input clusters directory>
-o  <output working directory>
-dm <Distance Measure technique>
-x  <maximum number of iterations>
-k  <number of initial clusters>

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