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- 평균 클러스터링 작업에는 입력 벡터 디렉터리, 출력 클러스터 디렉터리, 거리 측정, 수행 할 최대 반복 횟수 및 입력 데이터를 나눌 클러스터 수를 나타내는 정수 값이 필요합니다.