Mahout - Phân cụm
Phân cụm là thủ tục để tổ chức các phần tử hoặc mục của một tập hợp nhất định thành các nhóm dựa trên sự giống nhau giữa các mục. Ví dụ, các ứng dụng liên quan đến xuất bản tin tức trực tuyến nhóm các bài báo của họ bằng cách sử dụng phân cụm.
Các ứng dụng của phân cụm
Phân cụm được sử dụng rộng rãi trong nhiều ứng dụng như nghiên cứu thị trường, nhận dạng mẫu, phân tích dữ liệu và xử lý hình ảnh.
Phân cụm có thể giúp các nhà tiếp thị khám phá các nhóm khác biệt trong cơ sở khách hàng của họ. Và họ có thể mô tả đặc điểm nhóm khách hàng của mình dựa trên mô hình mua hàng.
Trong lĩnh vực sinh học, nó có thể được sử dụng để xác định các đơn vị phân loại thực vật và động vật, phân loại các gen có chức năng tương tự và hiểu sâu hơn về cấu trúc vốn có trong quần thể.
Phân cụm giúp xác định các khu vực sử dụng đất tương tự trong cơ sở dữ liệu quan sát trái đất.
Phân cụm cũng giúp phân loại tài liệu trên web để khám phá thông tin.
Phân cụm được sử dụng trong các ứng dụng phát hiện ngoại lệ như phát hiện gian lận thẻ tín dụng.
Là một chức năng khai thác dữ liệu, Phân tích cụm đóng vai trò như một công cụ để hiểu sâu hơn về việc phân phối dữ liệu để quan sát các đặc điểm của từng cụm.
Sử dụng Mahout, chúng ta có thể phân cụm một tập dữ liệu nhất định. Các bước yêu cầu như sau:
Algorithm Bạn cần chọn một thuật toán phân cụm phù hợp để nhóm các phần tử của một cụm.
Similarity and Dissimilarity Bạn cần có một quy tắc để xác minh sự giống nhau giữa các phần tử mới gặp và các phần tử trong nhóm.
Stopping Condition Điều kiện dừng là cần thiết để xác định điểm mà không cần phân cụm.
Quy trình phân cụm
Để phân cụm dữ liệu đã cho, bạn cần -
Khởi động máy chủ Hadoop. Tạo các thư mục cần thiết để lưu trữ tệp trong Hệ thống tệp Hadoop. (Tạo thư mục cho tệp đầu vào, tệp trình tự và đầu ra theo cụm trong trường hợp tán).
Sao chép tệp đầu vào vào hệ thống Tệp Hadoop từ hệ thống tệp Unix.
Chuẩn bị tệp trình tự từ dữ liệu đầu vào.
Chạy bất kỳ thuật toán phân cụm nào có sẵn.
Nhận dữ liệu được phân nhóm.
Khởi động Hadoop
Mahout làm việc với Hadoop, do đó đảm bảo rằng máy chủ Hadoop đang hoạt động.
$ cd HADOOP_HOME/bin
$ start-all.sh
Chuẩn bị thư mục tệp đầu vào
Tạo các thư mục trong hệ thống tệp Hadoop để lưu trữ tệp đầu vào, tệp trình tự và dữ liệu nhóm bằng cách sử dụng lệnh sau:
$ hadoop fs -p mkdir /mahout_data
$ hadoop fs -p mkdir /clustered_data
$ hadoop fs -p mkdir /mahout_seq
Bạn có thể xác minh xem thư mục có được tạo bằng giao diện web hadoop hay không trong URL sau: http://localhost:50070/
Nó cung cấp cho bạn kết quả như hình dưới đây:
Sao chép tệp đầu vào sang HDFS
Bây giờ, sao chép tệp dữ liệu đầu vào từ hệ thống tệp Linux vào thư mục mahout_data trong Hệ thống tệp Hadoop như hình dưới đây. Giả sử tệp đầu vào của bạn là mydata.txt và nó nằm trong thư mục / home / Hadoop / data /.
$ hadoop fs -put /home/Hadoop/data/mydata.txt /mahout_data/
Chuẩn bị tệp trình tự
Mahout cung cấp cho bạn một tiện ích để chuyển đổi tệp đầu vào đã cho sang định dạng tệp tuần tự. Tiện ích này yêu cầu hai tham số.
- Thư mục tệp đầu vào nơi chứa dữ liệu gốc.
- Thư mục tệp đầu ra nơi dữ liệu được phân cụm sẽ được lưu trữ.
Dưới đây là lời nhắc trợ giúp của mahout seqdirectory tiện ích.
Step 1:Duyệt đến thư mục chính của Mahout. Bạn có thể nhận trợ giúp của tiện ích như hình dưới đây:
[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
Tạo tệp trình tự bằng tiện ích theo cú pháp sau:
mahout seqdirectory -i <input file path> -o <output directory>
Example
mahout seqdirectory
-i hdfs://localhost:9000/mahout_seq/
-o hdfs://localhost:9000/clustered_data/
Thuật toán phân cụm
Mahout hỗ trợ hai thuật toán chính để phân cụm cụ thể là:
- Phân cụm
- K-có nghĩa là phân cụm
Phân cụm
Phân cụm tán là một kỹ thuật đơn giản và nhanh chóng được Mahout sử dụng cho mục đích phân cụm. Các đối tượng sẽ được coi là điểm trong một không gian thuần túy. Kỹ thuật này thường được sử dụng như một bước khởi đầu trong các kỹ thuật phân cụm khác như phân cụm k-mean. Bạn có thể chạy công việc Canopy bằng cú pháp sau:
mahout canopy -i <input vectors directory>
-o <output directory>
-t1 <threshold value 1>
-t2 <threshold value 2>
Công việc Canopy yêu cầu một thư mục tệp đầu vào với tệp trình tự và một thư mục đầu ra nơi dữ liệu được phân cụm sẽ được lưu trữ.
Example
mahout canopy -i hdfs://localhost:9000/mahout_seq/mydata.seq
-o hdfs://localhost:9000/clustered_data
-t1 20
-t2 30
Bạn sẽ nhận được dữ liệu nhóm được tạo trong thư mục đầu ra đã cho.
K-có nghĩa là phân cụm
K-mean clustering là một thuật toán phân cụm quan trọng. Thuật toán phân cụm k trong k-mean biểu thị số lượng các cụm dữ liệu sẽ được chia thành. Ví dụ, giá trị k được chỉ định cho thuật toán này được chọn là 3, thuật toán sẽ chia dữ liệu thành 3 cụm.
Mỗi đối tượng sẽ được biểu diễn dưới dạng vector trong không gian. Ban đầu, k điểm sẽ được thuật toán chọn ngẫu nhiên và được coi là trung tâm, mọi đối tượng gần nhất với mỗi trung tâm đều được nhóm lại. Có một số thuật toán cho phép đo khoảng cách và người dùng nên chọn thuật toán bắt buộc.
Creating Vector Files
Không giống như thuật toán Canopy, thuật toán k-mean yêu cầu tệp vectơ làm đầu vào, do đó bạn phải tạo tệp vectơ.
Để tạo tệp vectơ từ định dạng tệp trình tự, Mahout cung cấp seq2parse tiện ích.
Dưới đây là một số tùy chọn của seq2parsetiện ích. Tạo tệp vectơ bằng cách sử dụng các tùy chọn này.
$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.
Sau khi tạo vectơ, tiến hành giải thuật k-mean. Cú pháp để chạy k-mean job như sau:
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>
Công việc phân cụm K-mean yêu cầu thư mục vectơ đầu vào, thư mục cụm đầu ra, số đo khoảng cách, số lần lặp tối đa được thực hiện và một giá trị nguyên đại diện cho số cụm dữ liệu đầu vào sẽ được chia thành.