จะตัด dendrogram ที่ไหน?


61

การจัดกลุ่มตามลำดับชั้นสามารถแสดงโดย dendrogram การตัด dendrogram ในระดับหนึ่งจะทำให้เกิดกลุ่มของกลุ่ม การตัดในระดับอื่นจะทำให้เกิดกลุ่มอีกกลุ่มหนึ่ง คุณจะเลือกที่จะตัด dendrogram ได้อย่างไร มีบางอย่างที่เราสามารถพิจารณาจุดที่เหมาะสมหรือไม่? หากฉันมองไปที่เอนโดรแกรมข้ามเวลาที่มีการเปลี่ยนแปลงฉันควรตัดที่จุดเดียวกัน


ฉันยังสงสัยเกี่ยวกับปัญหานี้ แต่ (น่าเสียดาย) ยังไม่พบคำตอบที่น่าเชื่อถือเลย ฉันคิดว่าไม่มีวิธีแก้ปัญหา มีแพ็คเกจ R / BioC เช่นhopack(และอื่น ๆ ) ซึ่งสามารถประมาณจำนวนกลุ่ม แต่ไม่ตอบคำถามของคุณ
suncoolsu

pvclustแพคเกจสำหรับการRมีฟังก์ชั่นที่ให้ bootstrapped P-ค่าสำหรับกลุ่ม dendrogram ช่วยให้คุณสามารถระบุกลุ่ม: is.titech.ac.jp/~shimo/prog/pvclust
เบน

คำตอบ:


46

ไม่มีคำตอบที่ชัดเจนตั้งแต่การวิเคราะห์กลุ่มเป็นหลักวิธีการสำรวจ; การตีความของโครงสร้างลำดับชั้นที่เกิดขึ้นนั้นขึ้นอยู่กับบริบทและบ่อยครั้งที่การแก้ปัญหาหลายวิธีนั้นดีพอ ๆ กันจากมุมมองเชิงทฤษฎี

มีคำถามมากมายที่เกี่ยวข้องกับคำถามที่ว่าอะไรคือเกณฑ์การหยุดสำหรับการจัดกลุ่มแบบลำดับชั้นแบบ agglomerative ที่ใช้ในทางปฏิบัติ โดยทั่วไปฉันใช้เกณฑ์การมองเห็นเช่นพล็อตภาพเงาและเกณฑ์ตัวเลขบางประเภทเช่นดัชนีความตรงตามความเป็นจริงของดันน์, แกมมาของฮิวเบิร์ต, ค่าสัมประสิทธิ์ G2 / G3 หรือดัชนีแรนด์ที่ถูกต้อง โดยพื้นฐานแล้วเราต้องการทราบว่าเมทริกซ์ระยะทางดั้งเดิมนั้นประมาณในพื้นที่ของกลุ่มได้ดีเพียงใดดังนั้นการวัดความสัมพันธ์แบบ copheneticก็มีประโยชน์เช่นกัน ฉันยังใช้ k-mean ด้วยค่าเริ่มต้นหลายค่าและสถิติช่องว่าง ( มิเรอร์ ) เพื่อกำหนดจำนวนของกลุ่มที่ลดขนาดภายใน SS ให้เหลือน้อยที่สุด ความสอดคล้องกับการจัดกลุ่มแบบลำดับชั้นของ Ward ช่วยให้ทราบถึงความเสถียรของโซลูชันคลัสเตอร์ (คุณสามารถใช้matchClasses()ในแพ็คเกจe1071สำหรับเรื่องนั้น)

คุณจะพบทรัพยากรที่มีประโยชน์ใน CRAN Task View Clusterรวมถึงpvclust , fpc , clvและอื่น ๆ สิ่งที่ควรค่าแก่การลองคือแพ็คเกจclValid ( อธิบายไว้ในJournal of Statistics Software )

ทีนี้ถ้ากลุ่มของคุณเปลี่ยนไปตามกาลเวลานี่มันค่อนข้างยุ่งยากกว่า เหตุใดจึงเลือกโซลูชันคลัสเตอร์แรกแทนที่จะเป็นโซลูชันอื่น คุณคาดหวังหรือไม่ว่าบางคนย้ายจากคลัสเตอร์หนึ่งไปอีกคลัสเตอร์หนึ่งอันเป็นผลมาจากกระบวนการพื้นฐานที่วิวัฒนาการไปตามกาลเวลา?

มีการวัดบางอย่างที่พยายามจับคู่กลุ่มที่มีการทับซ้อนสัมบูรณ์สูงสุดหรือสัมพัทธ์สูงสุดดังที่แนะนำให้คุณในคำถามก่อนหน้านี้ ดูการเปรียบเทียบการทำคลัสเตอร์ - ภาพรวมจาก Wagner และ Wagner


12

ไม่มีคำตอบจริงๆ มันอยู่ระหว่าง 1 ถึง N

อย่างไรก็ตามคุณสามารถคิดได้จากมุมมองของผลกำไร

ตัวอย่างเช่นในด้านการตลาดจะใช้การแบ่งกลุ่มซึ่งคล้ายกับการทำคลัสเตอร์

ข้อความ (โฆษณาหรือจดหมายบอกว่า) ที่เหมาะสำหรับแต่ละบุคคลจะมีอัตราการตอบสนองสูงสุด ข้อความทั่วไปที่ปรับให้เหมาะกับค่าเฉลี่ยจะมีอัตราการตอบกลับต่ำที่สุด ต้องบอกว่ามีสามข้อความที่ปรับให้เหมาะกับสามส่วนจะอยู่ที่ใดที่หนึ่งในระหว่าง นี่คือด้านรายได้

ข้อความที่ปรับให้เหมาะกับแต่ละบุคคลจะมีค่าใช้จ่ายสูงสุด ข้อความทั่วไปที่ปรับให้เหมาะกับค่าเฉลี่ยจะมีต้นทุนต่ำที่สุด ข้อความสามข้อความที่ปรับให้เหมาะกับสามส่วนจะอยู่ในตำแหน่งที่เหมาะสม

สมมติว่าการจ่ายเงินให้นักเขียนเพื่อเขียนข้อความที่กำหนดเองมีค่าใช้จ่าย 1,000 สองค่าใช้จ่าย 2,000 และอื่น ๆ

พูดโดยใช้ข้อความเดียวรายได้ของคุณจะเท่ากับ 5,000 ถ้าคุณแบ่งกลุ่มลูกค้าของคุณออกเป็น 2 ส่วนและเขียนข้อความที่ปรับให้เหมาะกับแต่ละเซ็กเมนต์อัตราการตอบกลับของคุณจะสูงขึ้น สมมติว่ารายได้อยู่ที่ 7500 ด้วยสามส่วนอัตราการตอบกลับที่สูงขึ้นเล็กน้อยและรายได้ของคุณคือ 9000 ส่วนอีกหนึ่งเซ็กเมนต์และคุณอยู่ที่ 9500

เพื่อเพิ่มผลกำไรสูงสุดให้แบ่งกลุ่มจนกว่ารายได้ส่วนเพิ่มจากการแบ่งส่วนเท่ากับต้นทุนส่วนเพิ่มของการแบ่งส่วน ในตัวอย่างนี้คุณจะใช้สามส่วนเพื่อเพิ่มผลกำไรสูงสุด

Segments  Revenue  Cost  Profit
1         5000     1000  4000
2         7500     2000  5500
3         9000     3000  6000
4         9500     4000  5500

นี่เป็นมุมมองที่น่าสนใจ!
AndyF

5

บางทีหนึ่งในวิธีที่ง่ายที่สุดอาจเป็นการแสดงกราฟิกซึ่งแกน x คือจำนวนของกลุ่มและแกน y ใด ๆ เมตริกการประเมินผลเป็นระยะทางหรือความคล้ายคลึงกัน ในพล็อตนั้นโดยปกติคุณสามารถสังเกตเห็นสองภูมิภาคที่แตกต่างกันโดยเป็นค่าแกน x ที่ 'เข่า' ของบรรทัดเป็นจำนวนคลัสเตอร์ที่ 'ดีที่สุด'

นอกจากนี้ยังมีสถิติบางอย่างที่สามารถทำให้งานนี้ออกมาได้: แกมม่า, หลอก, tseudo-t², หลอกหลอก -F หรือเกณฑ์การแบ่งกลุ่มลูกบาศก์ (CCC)


ฉันเห็นด้วยกับ chl การวิเคราะห์กลุ่มเป็นวิธีการสำรวจและการตีความผลลัพธ์สำหรับกรณีนี้จำนวนกลุ่มที่เหมาะสมขึ้นอยู่กับบริบทของคุณ ตัวอย่างเช่นในงานของฉันเป็นเรื่องปกติที่จะใช้การวิเคราะห์คลัสเตอร์เพื่อจำแนกบุคคลตามลักษณะหลายอย่างและบางครั้งก็มีการกำหนดจำนวนคลัสเตอร์ไว้ล่วงหน้า ในกรณีนี้วัตถุประสงค์ของเราคือการค้นหาชุดของตัวแปรการจำแนกประเภทที่แยกความแตกต่างของบุคคลที่อยู่ในกลุ่มที่แตกต่างกันได้ดีที่สุด
Manuel Ramón


3

ในการจัดกลุ่มแบบลำดับชั้นจำนวนพาร์ติชันเอาท์พุทไม่ได้เป็นเพียงการตัดตามแนวนอน แต่ยังรวมถึงการตัดในแนวนอนที่ไม่ใช่การตัดสินใจในการจัดกลุ่มสุดท้าย ดังนั้นนี้สามารถมองเห็นเป็นเกณฑ์ที่สามกัน1. ระยะเมตริกและ2. การเชื่อมโยงเกณฑ์ http://en.wikipedia.org/wiki/Hierarchical_clustering

เกณฑ์ที่คุณกล่าวถึงเป็นประเภทที่ 3 ซึ่งเป็นข้อ จำกัด ในการเพิ่มประสิทธิภาพของชุดพาร์ติชันในลำดับชั้น นี่คือการนำเสนออย่างเป็นทางการในบทความนี้และตัวอย่างของการแบ่งส่วนได้รับ!

http://www.esiee.fr/~kiranr/ClimbingECCV2012_Preprint.pdf


1

ดังที่คำตอบอื่น ๆ บอกไว้มันเป็นอัตวิสัยแน่นอนและขึ้นอยู่กับประเภทของความละเอียดที่คุณพยายามศึกษา สำหรับวิธีการทั่วไปฉันจะตัดอันนี้ให้กับฉัน 2 กลุ่มและ 1 ค่าผิดปกติ จากนั้นฉันจะมุ่งเน้นไปที่ทั้งสองกลุ่มเพื่อดูว่ามีอะไรที่สำคัญระหว่างพวกเขาหรือไม่

# Init
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

# Load data
from sklearn.datasets import load_diabetes

# Clustering
from scipy.cluster.hierarchy import dendrogram, fcluster, leaves_list
from scipy.spatial import distance
from fastcluster import linkage # You can use SciPy one too

%matplotlib inline

# Dataset
A_data = load_diabetes().data
DF_diabetes = pd.DataFrame(A_data, columns = ["attr_%d" % j for j in range(A_data.shape[1])])

# Absolute value of correlation matrix, then subtract from 1 for disimilarity
DF_dism = 1 - np.abs(DF_diabetes.corr())

# Compute average linkage
A_dist = distance.squareform(DF_dism.as_matrix())
Z = linkage(A_dist,method="average")

# Dendrogram
D = dendrogram(Z=Z, labels=DF_dism.index, color_threshold=0.7, leaf_font_size=12, leaf_rotation=45)

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.