บทความนี้เผยแพร่โดยเป็นส่วนหนึ่งของไฟล์ Blogathon วิทยาศาสตร์ข้อมูล
บทนำ
ในบทความนี้ เราจะดูแนวทางอื่นในการทำคลัสเตอร์ K Means ที่เรียกว่าการจัดกลุ่มแบบลำดับชั้น เมื่อเปรียบเทียบกับ K Means หรือโหมด K การจัดกลุ่มแบบลำดับชั้นมีอัลกอริธึมพื้นฐานที่แตกต่างกันสำหรับวิธีการทำงานของกลไกการจัดกลุ่ม การจัดกลุ่มแบบลำดับชั้นใช้เทคนิคการจับกลุ่มหรือการแบ่งแยก ในขณะที่ K Means ใช้การผสมผสานระหว่างระยะเซนทรอยด์และยุคคลิดเพื่อสร้างกระจุก Dendrograms สามารถใช้เพื่อแสดงภาพกลุ่มในการจัดกลุ่มแบบลำดับชั้น ซึ่งสามารถช่วยตีความผลลัพธ์ได้ดีขึ้นผ่านอนุกรมวิธานที่มีความหมาย เราไม่จำเป็นต้องระบุจำนวนคลัสเตอร์เมื่อสร้างเดนโดรแกรม
ที่นี่เราใช้ Python เพื่ออธิบายโมเดลการจัดกลุ่มแบบลำดับชั้น เรามีข้อมูลลูกค้าห้างสรรพสินค้า 200 รายในชุดข้อมูลของเรา รหัสลูกค้า ประเภท อายุ รายได้ต่อปี และคะแนนการใช้จ่ายของลูกค้าแต่ละรายรวมอยู่ในกรอบข้อมูล จำนวนเงินที่คำนวณสำหรับคะแนนการใช้จ่ายของลูกค้าแต่ละรายนั้นขึ้นอยู่กับเกณฑ์หลายประการ เช่น รายได้ จำนวนครั้งต่อสัปดาห์ที่พวกเขาไปห้างสรรพสินค้า และจำนวนเงินที่พวกเขาใช้ไปในหนึ่งปี คะแนนนี้มีตั้งแต่ 1 ถึง 100 เนื่องจากเราไม่ทราบคำตอบ ปัญหาทางธุรกิจจึงกลายเป็นปัญหาการรวมกลุ่ม เราไม่รู้จักหมวดหมู่สุดท้ายของข้อมูล ด้วยเหตุนี้ เป้าหมายของเราคือการค้นหากลุ่มลูกค้าที่ไม่รู้จักมาก่อน
แต่ก่อนอื่น เราพิจารณาคำศัพท์ที่สำคัญบางประการในการจัดกลุ่มแบบลำดับชั้น
ข้อกำหนดที่สำคัญในการจัดกลุ่มแบบลำดับชั้น
วิธีการเชื่อมโยง
หากมี (ก) การสังเกตดั้งเดิม a[0],…,a[|a|1] ในกลุ่ม (a) และ (b) วัตถุดั้งเดิม b[0],…,b[|b|1] ในกลุ่ม ( b) จากนั้นเราจะต้องคำนวณระยะห่างระหว่างสองกระจุก (a) และ (b) เพื่อรวมเข้าด้วยกัน (b) สมมติว่ามีจุด (d) ที่ไม่ได้ถูกกำหนดให้กับคลัสเตอร์ใดๆ เราจะต้องพิจารณาว่าคลัสเตอร์ (a) อยู่ห่างจากคลัสเตอร์ (d) และคลัสเตอร์ (b) อยู่ห่างจากคลัสเตอร์ (d) แค่ไหน
โดยทั่วไปแล้วคลัสเตอร์จะมีหลายจุด ซึ่งจำเป็นต้องใช้วิธีอื่นในการคำนวณเมทริกซ์ระยะทาง วิธีคำนวณระยะห่างระหว่างกระจุกหรือระยะทางชี้ไปที่กระจุกจะถูกกำหนดโดยการเชื่อมโยง ต่อไปนี้คือกลไกการเชื่อมโยงที่ใช้บ่อยที่สุดบางส่วน:
การเชื่อมโยงเดี่ยว — ระยะทางระหว่างสมาชิกที่คล้ายกันมากที่สุดจะถูกคำนวณสำหรับแต่ละคู่ของกระจุกดาว จากนั้นจึงรวมกระจุกตามระยะทางที่สั้นที่สุด
การเชื่อมโยงโดยเฉลี่ย — คำนวณระยะห่างระหว่างสมาชิกทั้งหมดของคลัสเตอร์หนึ่งและสมาชิกทั้งหมดของคลัสเตอร์อื่น หลังจากนั้นจะใช้ค่าเฉลี่ยของระยะทางเหล่านี้เพื่อกำหนดว่าคลัสเตอร์ใดจะรวมกัน
การเชื่อมโยงที่สมบูรณ์ — สำหรับกระจุกแต่ละคู่ จะมีการคำนวณระยะห่างระหว่างองค์ประกอบที่ไม่เหมือนกันมากที่สุด จากนั้นจึงรวมกระจุกตามระยะทางที่สั้นที่สุด
การเชื่อมโยงค่ามัธยฐาน — เราใช้ระยะทางมัธยฐานแทนระยะทางเฉลี่ยในลักษณะเดียวกันกับการเชื่อมโยงโดยเฉลี่ย
การเชื่อมโยงวอร์ด — กำหนดระยะห่างระหว่างกระจุกโดยใช้วิธีการวิเคราะห์ความแปรปรวน
การเชื่อมโยงเซนทรอยด์ — เซนทรอยด์ของแต่ละคลัสเตอร์คำนวณโดยการเฉลี่ยจุดทั้งหมดที่กำหนดให้กับคลัสเตอร์ จากนั้นจึงคำนวณระยะห่างระหว่างคลัสเตอร์โดยใช้เซนทรอยด์นี้
การคำนวณระยะทาง
มีหลายวิธีในการคำนวณระยะทางระหว่างกระจุกสองกระจุกขึ้นไป โดยระยะทางแบบยุคลิดเป็นวิธีที่ได้รับความนิยมมากที่สุด การวัดระยะทางอื่นๆ เช่น Minkowski, City Block, Hamming, Jaccard และ Chebyshev สามารถใช้กับการจัดกลุ่มแบบลำดับชั้นได้เช่นกัน การวัดระยะทางที่แตกต่างกันมีผลกระทบต่อการจัดกลุ่มแบบลำดับชั้น ดังแสดงในรูปที่ 2
เดนโดรแกรม
ความสัมพันธ์ระหว่างวัตถุในพื้นที่คุณลักษณะจะแสดงด้วยเดนโดรแกรม ในพื้นที่คุณลักษณะ ใช้เพื่อแสดงระยะห่างระหว่างแต่ละคู่ของวัตถุที่ผสานตามลำดับ Dendrograms มักใช้เพื่อตรวจสอบคลัสเตอร์แบบลำดับชั้นก่อนที่จะตัดสินใจเลือกจำนวนคลัสเตอร์ที่เหมาะสมสำหรับชุดข้อมูล ระยะทางเดนโดรแกรมคือระยะห่างระหว่างสองกระจุกเมื่อรวมกัน ระยะห่างของเดนโดรแกรมกำหนดว่ากระจุกตั้งแต่สองกระจุกขึ้นไปจะแยกจากกันหรือสามารถรวมเข้าด้วยกันจนกลายเป็นกระจุกเดียวได้
ตัวอย่าง
ตอนนี้เรามาดูตัวอย่างโดยใช้ Python เพื่อสาธิตโมเดลการจัดกลุ่มแบบลำดับชั้น เรามีข้อมูลลูกค้าห้างสรรพสินค้า 200 รายในของเรา ชุด. รหัสลูกค้า ประเภท อายุ รายได้ต่อปี และคะแนนการใช้จ่ายของลูกค้าแต่ละรายจะรวมอยู่ในกรอบข้อมูล จำนวนเงินที่คำนวณสำหรับคะแนนการใช้จ่ายของลูกค้าแต่ละรายนั้นขึ้นอยู่กับเกณฑ์หลายประการ เช่น รายได้ จำนวนครั้งต่อสัปดาห์ที่พวกเขาไปห้างสรรพสินค้า และเงินที่พวกเขาใช้ไปในหนึ่งปี คะแนนนี้มีตั้งแต่ 1 ถึง 100 เนื่องจากเราไม่ทราบคำตอบ ปัญหาทางธุรกิจจึงกลายเป็นปัญหาการรวมกลุ่ม
#1 การนำเข้าไลบรารี นำเข้า numpy เป็น np นำเข้า matplotlib.pyplot เป็น plt นำเข้าแพนด้าเป็น pd
#2 การนำเข้าชุดข้อมูล Mall_Customers โดยแพนด้า
ชุดข้อมูล = pd.read_csv('Mall_Customers.csv') X = dataset.iloc[:, [3,4]].ค่า
ขั้นตอนใหม่ในการทำคลัสเตอร์แบบลำดับชั้นยังเกี่ยวข้องกับการกำหนดจำนวนคลัสเตอร์ที่เหมาะสมที่สุดด้วย เราจะไม่ใช้วิธีการข้อศอกในครั้งนี้ เราจะใช้เดนโดรแกรม
#3 การใช้เดนโดรแกรมเพื่อค้นหาจำนวนคลัสเตอร์ที่เหมาะสมที่สุด # สิ่งแรกที่เราจะทำคือการนำเข้าไลบรารี่ scipy scipy เป็นไลบรารีโอเพ่นซอร์ส # Python ที่มีเครื่องมือในการทำคลัสเตอร์แบบลำดับชั้นและสร้าง dendrograms # นำเข้าเฉพาะเครื่องมือที่จำเป็นเท่านั้น นำเข้า scipy.cluster.hierarchy เป็น sch
#มาสร้างตัวแปร dendrogram กัน # การเชื่อมโยงจริงๆ แล้วเป็นอัลกอริธึมของการจัดกลุ่มแบบลำดับชั้น จากนั้นใน #linkage เราต้องระบุว่าเราใช้และมีส่วนร่วมกับข้อมูลใด นี่คือชุดข้อมูล X dendrogram = sch.dendrogram(sch.linkage(X, method = "ward")) plt.title('Dendrogram') plt.xlabel('Customers') plt.ylabel('Euclidean Distances') plt แสดง()
วิธีการ Ward เป็นวิธีการที่พยายามลดความแปรปรวนภายในแต่ละคลัสเตอร์ มันเกือบจะเหมือนกับตอนที่เราใช้ K-means เพื่อลด wcss เพื่อลงจุดแผนภูมิวิธีข้อศอกของเรา ข้อแตกต่างเพียงอย่างเดียวคือแทนที่จะใช้ wcss เราจะลดตัวแปรภายในคลัสเตอร์ให้เหลือน้อยที่สุด ภายในแต่ละคลัสเตอร์ นี่คือความแปรปรวน เดนโดรแกรมแสดงไว้ด้านล่าง
ลูกค้าจะแสดงบนแกน x และระยะห่างแบบยุคลิดระหว่างคลัสเตอร์จะแสดงบนแกน y เราจะหาจำนวนคลัสเตอร์ที่ดีที่สุดจากแผนภาพนี้ได้อย่างไร เราต้องการหาระยะทางแนวตั้งที่ยาวที่สุดที่เราสามารถทำได้โดยไม่ต้องข้ามเส้นแนวนอนใดๆ ซึ่งเป็นเส้นกรอบสีแดงในแผนภาพด้านบน ลองนับเส้นบนแผนภาพแล้วดูว่ามีกี่คลัสเตอร์ที่ดีที่สุด สำหรับชุดข้อมูลนี้ หมายเลขคลัสเตอร์จะเป็น 5
#4 การปรับการจัดกลุ่มแบบลำดับชั้นให้เหมาะสมกับชุดข้อมูล Mall_Customes # มีสองอัลกอริธึมสำหรับการจัดกลุ่มแบบลำดับชั้น: การทำคลัสเตอร์แบบลำดับชั้นแบบ Agglomerative และ # การจัดคลัสเตอร์แบบลำดับชั้นแบบแบ่งส่วน เราเลือกวิธีแบบยุคลิดระยะทางและวอร์ดสำหรับคลาสอัลกอริทึม # ของเราจาก sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 5, affinity = 'euclidean', linkage ='ward') # มาลองปรับอัลกอริทึมการจัดกลุ่มแบบลำดับชั้นให้เข้ากับชุดข้อมูล X กันดีกว่า ในขณะที่สร้าง # คลัสเตอร์เวกเตอร์ที่บอกลูกค้าแต่ละรายว่าลูกค้าอยู่ในคลัสเตอร์ใด y_hc=hc.fit_predict(X)
#5 การแสดงภาพคลัสเตอร์ รหัสนี้คล้ายกับรหัสการแสดงภาพเคมีน #เราจะแทนที่เฉพาะชื่อเวกเตอร์ y_kmeans เป็น y_hc สำหรับการจัดกลุ่มแบบลำดับชั้น plt.scatter(X[y_hc==0, 0], X[y_hc==0, 1], s=100, c='red', label = 'คลัสเตอร์ 1') plt.scatter(X[y_hc==1, 0], X[y_hc==1, 1], s=100, c='blue', label = 'คลัสเตอร์ 2') plt.scatter( X[y_hc==2, 0], X[y_hc==2, 1], s=100, c='green', label ='คลัสเตอร์ 3') plt.scatter(X[y_hc==3, 0] , X[y_hc==3, 1], s=100, c='cyan', label ='คลัสเตอร์ 4') plt.scatter(X[y_hc==4, 0], X[y_hc==4, 1 ], s=100, c='magenta', label ='คลัสเตอร์ 5') plt.title('กลุ่มลูกค้า (โมเดลการจัดกลุ่มแบบลำดับชั้น)') plt.xlabel('รายได้ต่อปี(k$)') plt.ylabel ('คะแนนการใช้จ่าย(1-100') plt.show()
กลุ่มเหล่านี้ถือได้ว่าเป็นกลุ่มลูกค้าของห้างสรรพสินค้า
นั่นคือทั้งหมดที่มีสำหรับโมเดลการจัดกลุ่มแบบลำดับชั้นมาตรฐาน ชุดข้อมูลและโค้ดทั้งหมดมีอยู่ในส่วน Github
สรุป
ในแบบฝึกหัดการจัดกลุ่มใดๆ การกำหนดจำนวนของกลุ่มเป็นกระบวนการที่ใช้เวลานาน เนื่องจากด้านการค้าของธุรกิจเกี่ยวข้องกับการแยกความหมายออกจากกลุ่มเหล่านี้มากกว่า การแสดงภาพกลุ่มในสองมิติและดูว่ามีความแตกต่างกันหรือไม่จึงเป็นสิ่งสำคัญ สามารถใช้ PCA หรือการวิเคราะห์ปัจจัยเพื่อให้บรรลุเป้าหมายนี้ได้ นี่เป็นวิธีการทั่วไปในการนำเสนอผลลัพธ์สุดท้ายแก่ผู้มีส่วนได้ส่วนเสียต่างๆ ทำให้ทุกคนสามารถบริโภคผลลัพธ์ได้ง่ายขึ้น
สิ้นสุดหมายเหตุ
ขอบคุณสำหรับการอ่าน!
ฉันหวังว่าคุณจะสนุกกับบทความนี้และเพิ่มพูนความรู้ของคุณ
โปรดอย่าลังเลที่จะติดต่อฉัน on อีเมลล์
มีอะไรที่ไม่ได้กล่าวถึงหรือต้องการแบ่งปันความคิดของคุณ? รู้สึกอิสระที่จะแสดงความคิดเห็นด้านล่างและฉันจะกลับไปหาคุณ
เกี่ยวกับผู้เขียน
ฮาร์ดิกกุมาร์ เอ็ม. ดาดุก
นักวิเคราะห์ข้อมูล | ผู้เชี่ยวชาญด้านการวิเคราะห์ข้อมูลดิจิทัล | ผู้เรียนวิทยาศาสตร์ข้อมูล
เชื่อมต่อกับฉัน LinkedIn
เชื่อมต่อกับฉัน Github
สื่อที่แสดงในบทความนี้ไม่ใช่ของ Analytics Vidhya และใช้ดุลยพินิจของผู้เขียน
ที่เกี่ยวข้อง
ที่มา: https://www.analyticsvidhya.com/blog/2021/08/hierarchical-clustering-algorithm-python/
- 100
- ขั้นตอนวิธี
- อัลกอริทึม
- ทั้งหมด
- การวิเคราะห์
- นักวิเคราะห์
- การวิเคราะห์
- บทความ
- ที่ดีที่สุด
- การก่อสร้าง
- ธุรกิจ
- เมือง
- รหัส
- เชิงพาณิชย์
- ร่วมกัน
- บริโภค
- การสร้าง
- ลูกค้า
- ข้อมูล
- การวิเคราะห์ข้อมูล
- วิทยาศาสตร์ข้อมูล
- ดิจิตอล
- ระยะทาง
- การออกกำลังกาย
- ลักษณะ
- รูป
- ชื่อจริง
- พอดี
- ฟอร์ม
- ฟรี
- GIF
- GitHub
- สีเขียว
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- HTTPS
- ส่งผลกระทบ
- การนำเข้า
- เงินได้
- IT
- ความรู้
- ห้องสมุด
- Line
- การทำ
- ภาพบรรยากาศ
- สมาชิก
- ตัวชี้วัด
- แบบ
- เงิน
- เป็นที่นิยม
- ตัวเลข
- เปิด
- โอเพนซอร์ส
- ใบสั่ง
- อื่นๆ
- ยอดนิยม
- หลาม
- RE
- ลด
- ผลสอบ
- วิทยาศาสตร์
- Share
- ช่องว่าง
- การใช้จ่าย
- บอก
- เวลา
- us
- การสร้างภาพ
- สัปดาห์
- ภายใน
- โรงงาน
- X
- ปี