ทำไมอัลกอริทึมการจัดกลุ่ม k หมายถึงใช้เฉพาะการวัดระยะทางแบบยุคลิดเท่านั้น


62

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

[เพิ่มโดย @ttnphns คำถามคือสองเท่า "(ไม่ใช่) ระยะทางแบบยุคลิด" อาจเกี่ยวข้องกับระยะห่างระหว่างจุดข้อมูลสองจุดหรือระยะห่างระหว่างจุดข้อมูลและจุดศูนย์กลางคลัสเตอร์ ทั้งสองวิธีมีความพยายามในการตอบที่อยู่ในคำตอบจนถึง]


คำถามนี้ถูกถามประมาณ 10 ครั้งแล้วใน stackoverflow และไซต์นี้ กรุณาใช้ฟังก์ชั่นการค้นหา
Anony-Mousse

3
@ Anony-Mousse: ในขณะที่ฉันเห็นด้วยกับคุณอย่างเต็มที่และยกธงขึ้นบน SO เมื่อเร็ว ๆ นี้ฉันพบว่าไม่มีการปิดซ้ำซ้อนสำหรับคำถามเหล่านี้ส่วนใหญ่รบกวน
Nikana Reklawyks

4
นี่คือหน้าเว็บที่มาครั้งแรกในขณะที่ googling เกี่ยวกับหัวข้อนี้
haripkannan

คำตอบ:


62

ขั้นตอน K-หมายถึง - ซึ่งเป็นวิธีการวัดปริมาณแบบเวกเตอร์มักใช้เป็นวิธีการจัดกลุ่ม - ไม่ใช้ ระยะทางจุดคู่อย่างชัดเจนb / w จุดข้อมูลเลย (ในทางตรงกันข้ามกับลำดับชั้นและการจัดกลุ่มอื่น ๆ มันจะมีจำนวนซ้ำ ๆ การกำหนดจุดที่จะอยู่ใกล้เซนทรอยด์จึงใช้แบบยุคลิดระยะทางจากจุดที่ข้อมูลไปยังเซน อย่างไรก็ตาม K-Means นั้นขึ้นอยู่กับระยะทางปริภูมิแบบยุคลิด b / w โดยปริยายเนื่องจากผลรวมของการเบี่ยงเบนกำลังสองจากเซนทรอยด์เท่ากับผลรวมของระยะทางแบบยุคลิดคู่ที่ถูกหารด้วยจำนวนคะแนน. คำว่า "centroid" นั้นมาจากเรขาคณิตแบบยุคลิด มันเป็นค่าเฉลี่ยหลายตัวแปรในพื้นที่ยูคลิด พื้นที่แบบยุคลิดเป็นเรื่องเกี่ยวกับระยะทางแบบยุคลิด ระยะทางที่ไม่ใช่แบบยุคลิดจะไม่ครอบคลุมพื้นที่แบบยุคลิด นั่นเป็นสาเหตุที่ K-Means นั้นมีไว้สำหรับระยะทางแบบยุคลิดเท่านั้น

แต่ระยะทางยุคลิด b / w สองจุดข้อมูลที่สามารถเป็นตัวแทนในหลายทางเลือก ตัวอย่างเช่นมีการเชื่อมโยงอย่างใกล้ชิดกับจุดโคไซน์หรือผลิตภัณฑ์สเกลาร์ b / w หากคุณมีโคไซน์หรือความแปรปรวนร่วมหรือสหสัมพันธ์คุณสามารถ (1) แปลงให้เป็น (กำลังสอง) ระยะทางแบบยุคลิดและจากนั้น (2) สร้างข้อมูลสำหรับเมทริกซ์ของระยะทางแบบยุคลิด (โดยใช้พิกัดหลักหรือตัวชี้วัดอื่น ๆ มาตราส่วนหลายมิติ) ถึง (3) ป้อนข้อมูลเหล่านั้นไปยังการจัดกลุ่ม K-Means ดังนั้นจึงเป็นไปได้ที่ จะทำให้ K-Means "ทำงานกับ" โคไซน์ตามลำดับหรือเช่น; ในความเป็นจริงการใช้งานของการจัดกลุ่ม K-หมายถึงมีอยู่ ดูสิ่งนี้ด้วย เกี่ยวกับการใช้งาน "K-mean for distance matrix"

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

โปรดทราบว่าฉันกำลังพูดถึงหัวข้อว่ายูคลิดหรือไม่มีความแตกต่างระหว่างยุคข้อมูลเข้ากันได้กับ K- หมายถึง มันเกี่ยวข้องกับ แต่ไม่ใช่คำถามเดียวกันว่าการเบี่ยงเบน noneuclidean จาก centroid (ในวงกว้าง, ศูนย์กลางหรือ quasicentroid) สามารถรวมอยู่ใน K- หมายถึงหรือแก้ไข "K- หมายถึง"

ดูคำถามที่เกี่ยวข้องK หมายถึง: ทำไมการลด WCSS ให้มีระยะห่างสูงสุดระหว่างคลัสเตอร์ .


คุณสามารถยกตัวอย่าง-docs ของวิธีการที่คุณพูดถึงได้ไหม?
อยากรู้อยากเห็น

4
@ ดักลาสโปรด ฉันบอกว่า k-mean ไม่ได้ใช้ระยะทางคู่กัน มีการระบุไว้อย่างชัดเจน มันใช้ระยะทางถึงเซนทรอยด์ แต่นั่นหมายถึงว่ามันถูกผูกติดกับงานโดยอัตโนมัติเพื่อเพิ่มประสิทธิภาพระยะทางคู่ภายในกลุ่ม
ttnphns

1
@ttnphns: ในจำนวนตัวละครที่คุณเขียนBut a Euclidean distance b/w two data points can be represented in a number of alternative ways. For example, it is closely tied with cosine or scalar product b/w the points. If you have cosine, or covariance, or correlation, you can always (1) transform it to (squared) Euclidean distanceคุณสามารถเขียนได้อย่างง่ายดายเช่น: distance(x,y) = 1 - cosine_sim(x,y)หรือสิ่งที่มีสาระคล้ายกันและให้ข้อมูล
stackoverflowuser2010

1
ดูเหมือนว่าการวิจารณ์ที่ถูกต้องและสร้างสรรค์: ควรรวมข้อมูลไว้ในโพสต์ของคุณโดยตรงแทนที่จะใช้ลิงก์ และโดยปกติจะดีกว่าชัดเจนกว่าคลุมเครือ (cc @stackoverflowuser)
whuber

3
คุณกำลังแข่งขันอะไร ว่ามันจะดีกว่าในกรณีนี้ต้องอาศัยลิงค์หรือดีกว่าที่จะคลุมเครือหรือทั้งสองอย่าง? และทำไม?
whuber

46

ดูเพิ่มเติมที่ @ttnphns คำตอบสำหรับการแปลความหมายของ k- หมายถึงที่เกี่ยวข้องกับระยะทางแบบยูคลิด

วิธี k หมายถึงมีการก่อสร้างจะไม่ขึ้นอยู่กับระยะทาง

K-หมายถึงลดความแปรปรวนภายในคลัสเตอร์ให้เหลือน้อยที่สุด ทีนี้ถ้าคุณดูนิยามของความแปรปรวนมันก็เหมือนกับผลบวกของระยะทางแบบยุคลิดแบบสแควร์จากศูนย์กลาง (@ttnphns คำตอบหมายถึงระยะทางแบบยุคลิดแบบคู่)

แนวคิดพื้นฐานของ k หมายถึงคือการลดข้อผิดพลาดยกกำลังสอง ไม่มี "ระยะทาง" เกี่ยวข้องที่นี่

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

หากคุณกำลังมองหาตัวแปร k ระยะทางของแมนฮัตตัน เนื่องจากค่ามัธยฐานเป็นตัวประมาณ L1 ที่รู้จักกันดีที่สุด

หากคุณต้องการฟังก์ชั่นระยะทางที่กำหนดให้ดูที่ k-medoids (aka: PAM, การแบ่งรอบ ๆ medoids) (เพราะมันถูกกำหนดให้เป็นขั้นต่ำ) และมีจำนวน จำกัด ที่เป็นไปได้ของ medoids เช่นกัน มันแพงกว่าค่าเฉลี่ยมาก


แต่ในขั้นตอนแรกของ k-mean แต่ละจุดจะถูกวางไว้ในกระจุกที่มีระยะทางแบบยุคลิดที่ใกล้ที่สุดกับ centroid ของกระจุกดาว ... ดังนั้นจึงมีการวัดระยะทาง
อยากรู้อยากเห็น

@AnonyMousse @ttnphns answer refers to pairwise Euclidean distances!ในคำตอบวรรคที่ 1 ของฉันฉันอ้างถึงทั้ง "ข้อผิดพลาด SS" (โดยตรง) และ "pairwise d ^ 2" (โดยปริยาย) การตีความ
ttnphns

3
ฉันเห็นด้วยกับคุณตอบ โปรดทราบว่าบัญชีการดำเนินงานของคุณคือคล้ายคลึงกันทางทฤษฎีของฉันk-means may stop converging with other distance functions Non-euclidean distances will generally not span euclidean space
ttnphns

คำอธิบายที่ดีมาก ฉันไม่เคยคิดระยะทางแบบยุคลิดครั้งที่สองและไม่ได้ตระหนักว่ามันเป็นการลดผลรวมของกำลังสองของสี่เหลี่ยมจัตุรัส
Verena Haunschmid

ฉันยังไม่เห็นว่าทำไมค่าเฉลี่ยลดระยะทางในแง่ของระยะทางแบบยุคลิดและในแง่ของโคไซน์มันไม่ได้เป็นส่วนหนึ่งของข้อพิสูจน์
อยากรู้อยากเห็น

9

ฉันอาจจะคล่องแคล่วนิดหน่อยที่นี่ แต่ K-mean คือชื่อที่กำหนดให้กับอัลกอริทึมเฉพาะที่กำหนดป้ายกำกับให้กับจุดข้อมูลเช่นภายในกลุ่มย่อยจะลดลงและไม่ใช่ชื่อสำหรับ "เทคนิคทั่วไป"

K- หมายถึงอัลกอริทึมได้รับการเสนอเป็นอิสระจากหลายสาขาที่มีการตีความที่แข็งแกร่งนำไปใช้กับสนาม มันกลับกลายเป็นว่ามันเป็นระยะทางแบบยุคลิดถึงศูนย์กลาง สำหรับประวัติโดยย่อของ K-Mean โปรดอ่านData Clustering: 50 ปีหลัง K-Mean

มีอัลกอริทึมการจัดกลุ่มอื่น ๆ มากมายที่ใช้เมทริกอื่นนอกเหนือจาก Euclidean กรณีทั่วไปที่สุดที่ฉันรู้คือการใช้Bregman Divergencesสำหรับการรวมกลุ่มซึ่ง Euclidean เป็นกรณีพิเศษ


"ตัวชี้วัดอื่นที่ไม่ใช่แบบยุคลิด" ฉันอาจจะหยาบคายมากกว่านี้เล็กน้อย แต่ความแตกต่างเหล่านั้นไม่ใช่ตัวชี้วัดโดยทั่วไป :)
ไมค์

จริง :); ฉันน่าจะแก้ไขคำตอบ
user1669710

8

เนื่องจากตอนนี้ดูเหมือนจะเป็นคำถามที่ยอมรับกันแล้วและยังไม่ได้รับการกล่าวถึงที่นี่:

Rdφ:RพีHdd(x,Y)=φ(x)-φ(Y)H{φ(xผม)}φk(x,Y)=φ(x),φ(Y)H

ในสถานการณ์นี้ในอัลกอริธึม k-mean มาตรฐาน (Lloyd's) เราสามารถกำหนดจุดให้กับกลุ่มของพวกเขาได้ง่าย แต่เราเป็นตัวแทนของศูนย์คลัสเตอร์โดยปริยาย การค้นหาการนำเสนอที่ดีที่สุดในพื้นที่ป้อนข้อมูลนั้นต้องการการค้นหาค่าเฉลี่ยของFréchetซึ่งค่อนข้างแพง ดังนั้นจึงเป็นเรื่องง่ายที่จะได้รับการมอบหมายคลัสเตอร์ด้วยเคอร์เนลยากที่จะได้รับวิธี

บทความต่อไปนี้กล่าวถึงอัลกอริทึมนี้และเกี่ยวข้องกับการจัดกลุ่มสเปกตรัม:

I. Dhillon, Y. Guan และ B. Kulis K- หมายถึงเคอร์เนล, การจัดกลุ่มสเปกตรัมและการตัดแบบปกติ KDD 2005


ฉันไม่เข้าใจว่าเคอร์เนลเคล็ดลับสามารถใช้กับอัลกอริทึมของ Lloyd ได้อย่างไร ฉันคิดว่าการคำนวณ centroid (แม้ในปริภูมิ Hilbert) เราต้องการแผนที่ที่ชัดเจน explicit (x_i) หรือไม่? สำหรับการกำหนดคะแนนให้กับกลุ่มเราต้องการเพียงเคอร์เนล แต่สำหรับการคำนวณ centroid ใหม่เราไม่สามารถไปได้ด้วยเคอร์เนลเนื่องจาก Centroid เป็นค่าเฉลี่ยของ {φ (x_i)} ที่กำหนดให้กับคลัสเตอร์นั้น ฉันพลาดอะไรไปรึเปล่า?
2428107

1nijCiφ(xj)xφ(x)-1nผมΣJCผมφ(xJ)2=k(x,x)+1nผม2ΣJ,J'k(xJ,xJ')-2nผมΣJk(x,xJ)

5

ฉันได้อ่านความคิดเห็นที่น่าสนใจมากมายที่นี่ แต่ให้ฉันเพิ่มว่าการใช้งาน k-หมายถึง "ส่วนตัว" ของ Matlab นั้นสนับสนุนระยะทางที่ไม่ใช่แบบยูคลิด 4 ระยะ [ระหว่างจุดข้อมูลและศูนย์คลัสเตอร์] ความคิดเห็นเดียวจากเอกสารที่ฉันเห็นได้คือ:

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

kmeans คำนวณกลุ่ม centroid ต่างกันสำหรับมาตรการระยะทางที่แตกต่างกัน ตารางนี้สรุปมาตรการระยะทางที่มี ในสูตร x คือการสังเกต (นั่นคือแถวของ X) และ c คือ centroid (เวกเตอร์แถว)

จากนั้นรายการฟังก์ชันcและxต่อไปนี้ ดังนั้นเมื่อพิจารณาว่าpเป็นมิติข้อมูลอินพุตดูเหมือนว่าจะไม่มีการฝังแบบยุคลิดก่อน

BTW ในอดีตที่ผ่านมาฉันใช้ k-mean ของ Matlab ด้วยระยะทางสหสัมพันธ์และ (แปลกใจ) ทำสิ่งที่ควรจะทำ


2
cosinecorrelationcityblockL1hammingcityblock

@ ผิดกฎหมาย, ค่ามัธยฐานจะถูกปรับให้เป็นอัลกอริทึมอย่างไร? มันไม่เปลี่ยน k- หมายถึงอัลโกที่แตกต่างกันโดยทั่วไปใช่ไหม
ttnphns

1
โปรดทราบว่าสำหรับข้อมูลไบนารี "ระยะการแฮ็ก" "cityblock = sq. ระยะทางแบบยุคลิด
ttnphns

1
=L22=L1

1
@Dougal โปรดสังเกตว่าขั้นตอน MATLAB ที่เชื่อมโยงกับระยะทางต่างๆระหว่างจุดข้อมูลและศูนย์คลัสเตอร์ ซึ่งไม่เหมือนกับระยะทางแบบคู่
ttnphns

2

จากที่นี่ :

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

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


นี่เป็นคำตอบทั่วไป มันไม่ได้อธิบายว่าทำไมใน k- หมายถึงไม่มีความคล้ายคลึงโคไซน์ ตัวอย่างเช่นในการจัดกลุ่มแบบลำดับชั้นมันถูกใช้อย่างกว้างขวาง
อยากรู้อยากเห็น

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