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-средних требуется каталог входных векторов, каталог выходных кластеров, мера расстояния, максимальное количество итераций, которые необходимо выполнить, и целочисленное значение, представляющее количество кластеров, на которые должны быть разделены входные данные.