Mahout-클러스터링
클러스터링은 항목 간의 유사성에 따라 특정 컬렉션의 요소 또는 항목을 그룹으로 구성하는 절차입니다. 예를 들어, 온라인 뉴스 게시와 관련된 애플리케이션은 클러스터링을 사용하여 뉴스 기사를 그룹화합니다.
클러스터링의 응용
클러스터링은 시장 조사, 패턴 인식, 데이터 분석 및 이미지 처리와 같은 많은 응용 프로그램에서 광범위하게 사용됩니다.
클러스터링은 마케팅 담당자가 고객 기반에서 서로 다른 그룹을 발견하는 데 도움이 될 수 있습니다. 또한 구매 패턴에 따라 고객 그룹을 특성화 할 수 있습니다.
생물학 분야에서는 식물 및 동물 분류법을 도출하고 유사한 기능을 가진 유전자를 분류하고 개체군 고유의 구조에 대한 통찰력을 얻는 데 사용할 수 있습니다.
클러스터링은 지구 관측 데이터베이스에서 유사한 토지 사용 영역을 식별하는 데 도움이됩니다.
클러스터링은 정보 검색을 위해 웹에서 문서를 분류하는데도 도움이됩니다.
클러스터링은 신용 카드 사기 탐지와 같은 이상 값 탐지 응용 프로그램에 사용됩니다.
데이터 마이닝 기능인 Cluster Analysis는 데이터 분포에 대한 통찰력을 확보하여 각 클러스터의 특성을 관찰하는 도구 역할을합니다.
Mahout을 사용하여 주어진 데이터 세트를 클러스터링 할 수 있습니다. 필요한 단계는 다음과 같습니다.
Algorithm 클러스터의 요소를 그룹화하려면 적합한 클러스터링 알고리즘을 선택해야합니다.
Similarity and Dissimilarity 새로 발견 된 요소와 그룹의 요소 간의 유사성을 확인하려면 규칙이 있어야합니다.
Stopping Condition 클러스터링이 필요하지 않은 지점을 정의하려면 중지 조건이 필요합니다.
클러스터링 절차
주어진 데이터를 클러스터링하려면 다음이 필요합니다.
Hadoop 서버를 시작하십시오. Hadoop File System에 파일을 저장하는 데 필요한 디렉토리를 만듭니다. (캐노피의 경우 입력 파일, 시퀀스 파일 및 클러스터 된 출력에 대한 디렉토리를 생성합니다.)
입력 파일을 Unix 파일 시스템에서 Hadoop 파일 시스템으로 복사합니다.
입력 데이터에서 시퀀스 파일을 준비합니다.
사용 가능한 클러스터링 알고리즘을 실행합니다.
클러스터 된 데이터를 가져옵니다.
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
다음 URL에서 hadoop 웹 인터페이스를 사용하여 디렉토리가 생성되었는지 확인할 수 있습니다. http://localhost:50070/
아래와 같이 출력을 제공합니다.
입력 파일을 HDFS로 복사
이제 입력 데이터 파일을 Linux 파일 시스템에서 아래와 같이 Hadoop 파일 시스템의 mahout_data 디렉토리로 복사합니다. 입력 파일이 mydata.txt이고 / home / Hadoop / data / 디렉토리에 있다고 가정합니다.
$ hadoop fs -put /home/Hadoop/data/mydata.txt /mahout_data/
시퀀스 파일 준비
Mahout은 주어진 입력 파일을 시퀀스 파일 형식으로 변환하는 유틸리티를 제공합니다. 이 유틸리티에는 두 개의 매개 변수가 필요합니다.
- 원본 데이터가있는 입력 파일 디렉터리입니다.
- 클러스터 된 데이터가 저장 될 출력 파일 디렉토리입니다.
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은 클러스터링을위한 두 가지 주요 알고리즘을 지원합니다.
- 캐노피 클러스터링
- K- 평균 클러스터링
캐노피 클러스터링
Canopy 클러스터링은 클러스터링 목적으로 Mahout에서 사용하는 간단하고 빠른 기술입니다. 개체는 일반 공간의 점으로 처리됩니다. 이 기술은 k- 평균 클러스터링과 같은 다른 클러스터링 기술의 초기 단계로 자주 사용됩니다. 다음 구문을 사용하여 Canopy 작업을 실행할 수 있습니다.
mahout canopy -i <input vectors directory>
-o <output directory>
-t1 <threshold value 1>
-t2 <threshold value 2>
캐노피 작업에는 시퀀스 파일이있는 입력 파일 디렉토리와 클러스터 된 데이터가 저장 될 출력 디렉토리가 필요합니다.
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는 데이터를 나눌 군집의 수를 나타냅니다. 예를 들어이 알고리즘에 지정된 k 값이 3으로 선택되면 알고리즘이 데이터를 3 개의 클러스터로 나눕니다.
각 개체는 공간에서 벡터로 표시됩니다. 처음에 k 개의 포인트는 알고리즘에 의해 무작위로 선택되고 중심으로 취급되며 각 중심에 가장 가까운 모든 객체가 클러스터됩니다. 거리 측정에는 여러 가지 알고리즘이 있으며 사용자는 필요한 알고리즘을 선택해야합니다.
Creating Vector Files
Canopy 알고리즘과 달리 k-means 알고리즘은 벡터 파일을 입력으로 요구하므로 벡터 파일을 만들어야합니다.
시퀀스 파일 형식에서 벡터 파일을 생성하기 위해 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- 평균 클러스터링 작업에는 입력 벡터 디렉터리, 출력 클러스터 디렉터리, 거리 측정, 수행 할 최대 반복 횟수 및 입력 데이터를 나눌 클러스터 수를 나타내는 정수 값이 필요합니다.