จะทราบได้อย่างไรว่าข้อมูลถูก "รวมกลุ่ม" เพียงพอสำหรับอัลกอริธึมการจัดกลุ่มเพื่อให้ได้ผลลัพธ์ที่มีความหมายหรือไม่


78

คุณจะรู้ได้อย่างไรว่าข้อมูล (มิติสูง) ของคุณมีการจัดกลุ่มที่เพียงพอเพื่อให้ผลลัพธ์จาก kmeans หรืออัลกอริทึมการจัดกลุ่มอื่น ๆ มีความหมายจริงหรือไม่

สำหรับอัลกอริทึม k โดยเฉพาะอย่างยิ่งการลดลงของความแปรปรวนภายในคลัสเตอร์จะต้องลดลงเพียงใดเพื่อให้ผลการจัดกลุ่มที่แท้จริงมีความหมาย (และไม่ปลอม)

การจัดกลุ่มควรชัดเจนเมื่อมีการลดขนาดของรูปแบบข้อมูลและผลลัพธ์จาก kmeans (หรือวิธีอื่น ๆ ) ไม่มีความหมายหากการจัดกลุ่มไม่สามารถมองเห็นได้?


1
ตัวเลขที่เขียนด้วยลายมือทำการทดสอบที่ดีสำหรับการจัดกลุ่ม: เราคาดว่าจะมี 10 กลุ่มที่แยกจากกันอย่างดี แต่สิ่งนี้แสดงให้เห็นว่าไม่มีข้อเข่าที่ k = 10 เลยอย่างน้อยในตัวชี้วัดแบบยุคลิดใน 64d
เดนิส

ดูเพิ่มเติมที่stackoverflow.com/q/15376075/134830
Richie Cotton

2
คำถามนี้เกี่ยวข้องกับคำถามในการตรวจสอบความถูกต้องของผลลัพธ์การจัดกลุ่มของคุณและวิธีการเลือกวิธีที่ดีกว่า ดูเช่นstats.stackexchange.com/q/195456/3277
ttnphns

คำตอบ:


77

เกี่ยวกับ k-mean โดยเฉพาะคุณสามารถใช้สถิติ Gap โดยพื้นฐานแล้วแนวคิดคือการคำนวณความดีของการวัดการจัดกลุ่มตามการกระจายตัวเฉลี่ยเมื่อเทียบกับการกระจายการอ้างอิงสำหรับกลุ่มจำนวนที่เพิ่มขึ้น ข้อมูลเพิ่มเติมสามารถพบได้ในกระดาษต้นฉบับ:

Tibshirani, R. , Walther, G. และ Hastie, T. (2001) การประเมินตัวเลขของกลุ่มในชุดข้อมูลทางสถิติช่องว่าง JR Statist Soc B, 63 (2): 411-423

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

เมื่อคุณไม่มีความคิดใด ๆ เกี่ยวกับสิ่งที่คุณคาดหวังว่าจะพบว่ามีสัญญาณรบกวนเท่านั้นวิธีการที่ดีคือการใช้การสุ่มตัวอย่างใหม่และศึกษาเสถียรภาพของกลุ่ม กล่าวอีกนัยหนึ่งให้ลองข้อมูลของคุณอีกครั้ง (ผ่าน bootstrap หรือเพิ่มสัญญาณรบกวนเล็ก ๆ ) และคำนวณ "ความใกล้ชิด" ของพาร์ติชั่นผลลัพธ์ตามที่ประเมินโดยJaccardคล้ายคลึงกัน ในระยะสั้นจะช่วยให้การประเมินความถี่ที่กลุ่มที่คล้ายกันถูกกู้คืนในข้อมูล วิธีนี้สามารถใช้ได้อย่างง่ายดายในfpcแพคเกจ R clusterboot()เป็น มันใช้เป็นอินพุตข้อมูลดิบหรือเมทริกซ์ระยะทางและอนุญาตให้ใช้วิธีการจัดกลุ่มที่หลากหลาย (ลำดับชั้น, วิธี k, ค่าเฉลี่ย, วิธีฟัซซี่) วิธีการจะกล่าวถึงในการอ้างอิงที่เชื่อมโยง:

หนิก, C. (2007) การประเมินคลัสเตอร์ที่ชาญฉลาดของความมั่นคงของคลัสเตอร์ สถิติการคำนวณและการวิเคราะห์ข้อมูล , 52, 258-271

หนิก, C. (2008) จุดสลายตัวและการแยกความทนทาน: เกณฑ์ทนทานสำหรับวิธีการวิเคราะห์กลุ่มทั่วไป วารสารการวิเคราะห์หลายตัวแปร , 99, 1154-1176

ด้านล่างเป็นการสาธิตขนาดเล็กด้วยอัลกอริทึม k-mean

sim.xy <- function(n, mean, sd) cbind(rnorm(n, mean[1], sd[1]),
rnorm(n, mean[2],sd[2]))
xy <- rbind(sim.xy(100, c(0,0), c(.2,.2)),
            sim.xy(100, c(2.5,0), c(.4,.2)),
            sim.xy(100, c(1.25,.5), c(.3,.2)))
library(fpc)
km.boot <- clusterboot(xy, B=20, bootmethod="boot",
                       clustermethod=kmeansCBI,
                       krange=3, seed=15555)

ผลลัพธ์ค่อนข้างเป็นบวกในชุดข้อมูลนี้ (และมีโครงสร้างที่ดี) เนื่องจากไม่มีทั้งสามคลัสเตอร์ ( krange) ที่ถูกละลายในกลุ่มตัวอย่างและค่าเฉลี่ยความคล้ายคลึงกันของ Jaccard คลัสเตอร์เท่ากับ> 0.95 สำหรับทุกกลุ่ม

ด้านล่างนี้เป็นผลลัพธ์ของ 20 ตัวอย่าง bootstrap ดังจะเห็นได้ว่าหน่วยทางสถิติมีแนวโน้มที่จะจัดกลุ่มเป็นกลุ่มเดียวกันโดยมีข้อยกเว้นเล็กน้อยสำหรับข้อสังเกตที่อยู่ระหว่าง

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

คุณสามารถขยายแนวคิดนี้ไปยังดัชนีความถูกต้องแน่นอน: เลือกชุดการสังเกตใหม่โดย bootstrap (พร้อมการแทนที่) คำนวณสถิติของคุณ (เช่นความกว้างของเงาความสัมพันธ์ cophenetic แกมมาของฮิวเบิร์ตภายในผลรวมของสแควร์ส) หมายเลขคลัสเตอร์ (เช่น 2 ถึง 10) ทำซ้ำ 100 หรือ 500 ครั้งและดูที่ boxplot ของสถิติของคุณเป็นฟังก์ชันของจำนวนคลัสเตอร์

นี่คือสิ่งที่ฉันได้รับด้วยชุดข้อมูลจำลองเดียวกัน แต่ใช้การจัดกลุ่มแบบลำดับชั้นของ Ward และพิจารณาความสัมพันธ์แบบ cophenetic (ซึ่งประเมินว่ามีการทำซ้ำข้อมูลระยะทางในพาร์ทิชันที่เกิดขึ้นได้อย่างไร) และความกว้างของเงา การแยกคลัสเตอร์)

ค่าสหสัมพันธ์ cophenetic มีค่าตั้งแต่ 0.6267 ถึง 0.7511 โดยมีค่ามัธยฐานเท่ากับ 0.7031 (ตัวอย่างบูต 500 อัน) ความกว้างของเงาดูเหมือนจะสูงสุดเมื่อเราพิจารณา 3 กลุ่ม (ค่ามัธยฐาน 0.8408, ช่วง 0.7371-0.8769)

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


ขอบคุณสำหรับคำตอบที่ให้ข้อมูลนี้! ดูเหมือนว่า clusterboot เป็นสิ่งที่ฉันกำลังมองหา ขอบคุณสำหรับการรวมลิงค์
xuexue

1
ตัวเลขมายากลบางอย่างเพื่อตีความค่าเงา: stats.stackexchange.com/a/12923/12359
Franck Dernoncourt

1
คุณใช้คำสั่งใดในการสร้างแผนภูมิเหล่านั้นใน gif
Travis Heeter

2
@Travis ภาพที่ถูกบันทึกเป็นไฟล์ PNG แยกต่างหากและจากนั้นแปลงเป็นไฟล์ภาพเคลื่อนไหว GIF โดยใช้ImageMagick ดูโพสต์นี้
chl

10

วิธีหนึ่งในการมองเห็นได้อย่างรวดเร็วว่าข้อมูลมิติสูงมีการทำคลัสเตอร์เพียงพอหรือไม่คือใช้ t-Distributed Stochastic Neighbor Embedding ( t-SNE ) มันฉายข้อมูลไปยังพื้นที่มิติต่ำ (เช่น 2D, 3D) และทำได้ดีมากในการรักษาโครงสร้างคลัสเตอร์ถ้ามี

เช่นชุดข้อมูล MNIST :

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

Olivetti เผชิญกับชุดข้อมูล:

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


1
มีวิธีการใช้ใบหน้า (หรือภาพใด ๆ ) ใน R หรือไม่?
Travis Heeter

1
@ TravisHeeter ฉันไม่รู้
Franck Dernoncourt

4
อย่าทำคลัสเตอร์ข้อมูลที่ฉาย tSNE ดูเช่นคำตอบนี้: stats.stackexchange.com/a/264647/7828
Anony-Mousse

9

แน่นอนความสามารถในการมองเห็นกลุ่มในจำนวนที่กำหนดได้เป็นเกณฑ์ที่น่าสงสัยสำหรับประโยชน์ของอัลกอริธึมการจัดกลุ่มโดยเฉพาะอย่างยิ่งถ้าการลดขนาดนี้ทำได้โดยอิสระจากการจัดกลุ่มตัวเอง (เช่น: ในความพยายามอย่างไร้ผล การจัดกลุ่มจะทำงานได้)

ในความเป็นจริงวิธีการจัดกลุ่มมีค่าสูงสุดในการค้นหากลุ่มที่สายตามนุษย์ / จิตใจไม่สามารถเห็นกลุ่ม

คำตอบง่ายๆคือ: ทำการจัดกลุ่มแล้วหาว่ามันใช้งานได้หรือไม่ (กับเกณฑ์ใด ๆ ที่คุณสนใจดูคำตอบของ @ Jeff ด้วย)


1
ใช่และกลุ่มไม่จำเป็นต้องมีกลุ่มคะแนนที่ดีซึ่งเป็นสิ่งที่ kmeans ถือว่า
Wayne

@chl คุณสร้างภาพเคลื่อนไหวนี้ด้วย R หรือไม่
Stéphane Laurent

7

เมื่อเป็นผลที่มีความหมายหรือไม่? โดยเฉพาะอย่างยิ่งผลลัพธ์ k-mean?

ความจริงก็คือ k-หมายถึงการเพิ่มประสิทธิภาพทางคณิตศาสตร์ที่แน่นอน ไม่มี "ความหมาย" ที่เกี่ยวข้องกับสิ่งนี้

โดยเฉพาะอย่างยิ่งในข้อมูลมิติสูงคำถามแรกควรเป็น: ระยะทางแบบยุคลิดยังคงมีความหมายหรือไม่? ถ้าไม่ใช้วิธี k ระยะทางแบบยุคลิดนั้นมีความหมายในโลกทางกายภาพ แต่มันจะสูญเสียความหมายอย่างรวดเร็วเมื่อคุณมีข้อมูลอื่น โดยเฉพาะอย่างยิ่งเมื่อคุณแปลงข้อมูลให้เป็นพื้นที่เวกเตอร์โดยแท้ ๆ มีเหตุผลใดที่ควรเป็นแบบยุคลิดหรือไม่

หากคุณใช้ชุดข้อมูล "ความซื่อสัตย์เก่า" แบบคลาสสิคแล้วรัน k- mean โดยไม่มีการทำให้เป็นมาตรฐาน แต่ด้วยระยะทางแบบยุคลิดอันบริสุทธิ์มันไม่มีความหมายอีกต่อไปแล้ว EM ซึ่งอันที่จริงใช้รูปแบบของ "คลัสเตอร์ภายใน" ระยะทาง Mahalanobis จะทำงานได้ดีขึ้นมาก โดยเฉพาะอย่างยิ่งมันปรับให้เข้ากับแกนที่มีตาชั่งที่แตกต่างกันมาก

Btw จุดแข็งหลักของ k-mean คือว่ามันจะทำการแบ่งข้อมูลเสมอไม่ว่าจะเป็นหน้าตาแบบใด คุณสามารถใช้วิธี k เพื่อแบ่งพาร์ติชันเสียงให้เป็นกลุ่ม kได้ เราสามารถอ้างได้ว่ากลุ่ม k-หมายความว่าไม่มีความหมาย หรือใครจะยอมรับสิ่งนี้ในฐานะ: ผู้ใช้ต้องการแบ่งพาร์ติชันข้อมูลเพื่อลดระยะทางแบบยุคลิดแบบสแควร์ลดลงโดยไม่จำเป็นต้องมีกลุ่มที่จะ "มีความหมาย"


@ Anony-Mousse และใช้เคสสำหรับ 'แบ่งพาร์ทิชันเสียงเป็น k กลุ่ม'?
CodeFarmer

ไม่มีเลย ประเด็นก็คือว่า k- หมายถึงไม่สนใจมันจะแบ่งพาร์ติชันข้อมูลให้เป็น "กลุ่ม" นั่นคือมันก่อให้เกิดกลุ่มไร้สาระ
Anony-Mousse

6

ฉันเพิ่งเริ่มใช้อัลกอริทึมการจัดกลุ่มเมื่อเร็ว ๆ นี้ดังนั้นหวังว่าบางคนที่มีความรู้สามารถให้คำตอบที่สมบูรณ์ยิ่งขึ้น แต่นี่คือความคิดบางอย่าง:

'มีความหมาย' อย่างที่ฉันแน่ใจว่าคุณรู้ตัว ดังนั้นไม่ว่าการจัดกลุ่มนั้นดีเพียงพอหรือไม่นั้นขึ้นอยู่กับสาเหตุที่คุณต้องทำการรวมกลุ่มตั้งแต่แรก หากคุณพยายามที่จะทำนายการเป็นสมาชิกของกลุ่มอาจเป็นไปได้ว่าการจัดกลุ่มใด ๆ จะทำได้ดีกว่าโอกาส (และไม่แย่กว่านั้น) ดังนั้นผลลัพธ์ควรมีความหมายในระดับหนึ่ง

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

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

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


3

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

kk

kk

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