ควาญช้าง - การรวมกลุ่ม
การทำคลัสเตอร์เป็นขั้นตอนในการจัดองค์ประกอบหรือรายการของคอลเลกชันที่กำหนดให้เป็นกลุ่มตามความคล้ายคลึงกันระหว่างรายการ ตัวอย่างเช่นแอปพลิเคชันที่เกี่ยวข้องกับการเผยแพร่ข่าวออนไลน์จัดกลุ่มบทความข่าวโดยใช้การทำคลัสเตอร์
การประยุกต์ใช้การทำคลัสเตอร์
การทำคลัสเตอร์ใช้กันอย่างแพร่หลายในหลาย ๆ แอปพลิเคชันเช่นการวิจัยตลาดการจดจำรูปแบบการวิเคราะห์ข้อมูลและการประมวลผลภาพ
การทำคลัสเตอร์สามารถช่วยให้นักการตลาดค้นพบกลุ่มที่แตกต่างกันตามฐานลูกค้าของตน และสามารถกำหนดลักษณะกลุ่มลูกค้าได้ตามรูปแบบการซื้อ
ในสาขาชีววิทยาสามารถใช้เพื่อหาอนุกรมวิธานของพืชและสัตว์จัดหมวดหมู่ยีนที่มีฟังก์ชันการทำงานที่คล้ายคลึงกันและได้รับข้อมูลเชิงลึกเกี่ยวกับโครงสร้างที่มีอยู่ในประชากร
การจัดกลุ่มช่วยในการระบุพื้นที่ที่มีการใช้ประโยชน์ที่ดินในลักษณะเดียวกันในฐานข้อมูลการสังเกตการณ์บนพื้นโลก
การจัดกลุ่มยังช่วยในการจัดประเภทเอกสารบนเว็บสำหรับการค้นหาข้อมูล
การทำคลัสเตอร์ใช้ในแอปพลิเคชันการตรวจจับค่าผิดปกติเช่นการตรวจจับการฉ้อโกงบัตรเครดิต
ในฐานะฟังก์ชั่นการขุดข้อมูล Cluster Analysis ทำหน้าที่เป็นเครื่องมือในการทำความเข้าใจเกี่ยวกับการกระจายข้อมูลเพื่อสังเกตลักษณะของแต่ละคลัสเตอร์
การใช้ Mahout ทำให้เราสามารถจัดกลุ่มข้อมูลที่กำหนดได้ ขั้นตอนที่จำเป็นมีดังต่อไปนี้:
Algorithm คุณต้องเลือกอัลกอริทึมการจัดกลุ่มที่เหมาะสมเพื่อจัดกลุ่มองค์ประกอบของคลัสเตอร์
Similarity and Dissimilarity คุณต้องมีกฎเพื่อตรวจสอบความคล้ายคลึงกันระหว่างองค์ประกอบที่พบใหม่และองค์ประกอบในกลุ่ม
Stopping Condition ต้องมีเงื่อนไขการหยุดเพื่อกำหนดจุดที่ไม่จำเป็นต้องทำคลัสเตอร์
ขั้นตอนการทำคลัสเตอร์
ในการจัดกลุ่มข้อมูลที่คุณต้องการ -
เริ่มเซิร์ฟเวอร์ Hadoop สร้างไดเร็กทอรีที่จำเป็นสำหรับการจัดเก็บไฟล์ใน Hadoop File System (สร้างไดเร็กทอรีสำหรับอินพุตไฟล์ไฟล์ลำดับและเอาต์พุตคลัสเตอร์ในกรณีของ canopy)
คัดลอกไฟล์อินพุตไปยังระบบ Hadoop File จากระบบไฟล์ 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 File System ดังที่แสดงด้านล่าง สมมติว่าไฟล์อินพุตของคุณคือ 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 รองรับอัลกอริทึมหลักสองแบบสำหรับการทำคลัสเตอร์ ได้แก่ :
- การจัดกลุ่มหลังคา
- K-mean clustering
การจัดกลุ่มหลังคา
การจัดกลุ่ม Canopy เป็นเทคนิคที่ง่ายและรวดเร็วที่ Mahout ใช้เพื่อจุดประสงค์ในการจัดกลุ่ม วัตถุจะถือว่าเป็นจุดในพื้นที่ธรรมดา เทคนิคนี้มักใช้เป็นขั้นตอนเริ่มต้นในเทคนิคการทำคลัสเตอร์อื่น ๆ เช่น k-mean clustering คุณสามารถรันงาน 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-mean Clustering
K-mean clustering เป็นอัลกอริธึมการทำคลัสเตอร์ที่สำคัญ k ในอัลกอริทึมการทำคลัสเตอร์ k หมายถึงจำนวนคลัสเตอร์ที่จะแบ่งข้อมูลออกเป็น ตัวอย่างเช่นค่า k ที่ระบุในอัลกอริทึมนี้ถูกเลือกเป็น 3 อัลกอริทึมจะแบ่งข้อมูลออกเป็น 3 คลัสเตอร์
แต่ละวัตถุจะแสดงเป็นเวกเตอร์ในอวกาศ จุดเริ่มต้น k จะถูกเลือกโดยอัลกอริทึมแบบสุ่มและถือว่าเป็นจุดศูนย์กลางวัตถุทุกชิ้นที่อยู่ใกล้กับแต่ละจุดศูนย์กลางมากที่สุดจะรวมกลุ่มกัน มีหลายอัลกอริทึมสำหรับการวัดระยะทางและผู้ใช้ควรเลือกอันที่ต้องการ
Creating Vector Files
ซึ่งแตกต่างจากอัลกอริทึม Canopy อัลกอริทึม k-mean ต้องการไฟล์เวกเตอร์เป็นอินพุตดังนั้นคุณต้องสร้างไฟล์เวกเตอร์
ในการสร้างไฟล์เวกเตอร์จากรูปแบบไฟล์ลำดับ 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-mean ไวยากรณ์ในการรัน k-mean job มีดังนี้:
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-mean ต้องการไดเร็กทอรีเวกเตอร์อินพุตไดเร็กทอรีคลัสเตอร์เอาต์พุตการวัดระยะทางจำนวนการทำซ้ำสูงสุดที่จะดำเนินการและค่าจำนวนเต็มแทนจำนวนคลัสเตอร์ที่ข้อมูลอินพุตจะถูกแบ่งออกเป็น