ทุกคนสามารถชี้ให้ฉันเห็นการใช้งาน k- หมายถึง (มันจะดีกว่าถ้าใน MATLAB) ที่สามารถใช้เมทริกซ์ระยะทางในการป้อนข้อมูล? การใช้งานมาตรฐาน MATLAB ต้องใช้เมทริกซ์การสังเกตในอินพุตและไม่สามารถเปลี่ยนการวัดความคล้ายคลึงกันได้
ทุกคนสามารถชี้ให้ฉันเห็นการใช้งาน k- หมายถึง (มันจะดีกว่าถ้าใน MATLAB) ที่สามารถใช้เมทริกซ์ระยะทางในการป้อนข้อมูล? การใช้งานมาตรฐาน MATLAB ต้องใช้เมทริกซ์การสังเกตในอินพุตและไม่สามารถเปลี่ยนการวัดความคล้ายคลึงกันได้
คำตอบ:
เนื่องจาก k-หมายความว่าจำเป็นต้องสามารถค้นหาวิธีการของชุดย่อยที่แตกต่างกันของจุดที่คุณต้องการจัดกลุ่มมันจึงไม่สมเหตุสมผลที่จะขอรุ่นของค่าเฉลี่ย k ที่ใช้เมทริกซ์ระยะทางเป็นอินพุต
คุณสามารถลองk-medoidsแทน มีการใช้งาน MATLABอยู่บ้าง
คุณสามารถเปลี่ยนเมทริกซ์ของระยะทางของคุณให้เป็นข้อมูลดิบและป้อนสิ่งเหล่านี้ไปยังการจัดกลุ่ม K-Means ขั้นตอนจะเป็นดังนี้:
1) ระยะทางระหว่างจุด N ของคุณจะต้องเป็นแบบยูคลิด ดำเนินการ "การจัดกึ่งกลางสองครั้ง " ของเมทริกซ์: ค่าแถวย่อยแทนที่จากแต่ละองค์ประกอบ ในผลลัพธ์คอลัมน์ย่อยค่าเฉลี่ยจากแต่ละองค์ประกอบ ในผลลัพธ์ให้เพิ่มเมทริกซ์เฉลี่ยสำหรับแต่ละองค์ประกอบ หารด้วยลบ 2 เมทริกซ์ที่คุณมีตอนนี้คือเมทริกซ์ SSCP (ผลรวมของกำลังสองและครอสโปรดัคส์) ระหว่างจุดของคุณที่จุดกำเนิดถูกวางไว้ที่กึ่งกลางทางเรขาคณิตของคลาวด์ของจุด N (อ่านคำอธิบายของการจัดกึ่งกลางที่นี่ )
2) ดำเนินการ PCA (การวิเคราะห์องค์ประกอบหลัก) บนเมทริกซ์นั้นและรับเมทริกซ์การโหลดส่วนประกอบ NxN คอลัมน์สุดท้ายบางคอลัมน์มีแนวโน้มที่จะเป็น 0 ทั้งหมดดังนั้นให้ตัดออก สิ่งที่คุณอยู่ตอนนี้คือคะแนนองค์ประกอบหลักพิกัดของคะแนน N ของคุณไปยังส่วนประกอบหลักที่ผ่านเป็นแกนผ่านคลาวด์ของคุณ ข้อมูลนี้สามารถใช้เป็นข้อมูลดิบที่เหมาะสมสำหรับอินพุต K-Means
ป.ล. หากระยะทางของคุณไม่ถูกต้องทางเรขาคณิตแบบยูคลิดคู่กำลังสองคุณอาจพบปัญหา: เมทริกซ์ SSCP อาจไม่แน่นอน (กึ่ง) แน่นอน ปัญหานี้สามารถแก้ไขได้หลายวิธี แต่ขาดความแม่นยำ
X
(สมมติว่า N * N) เป็นไปได้สมมาตรดังนั้นcolMeans(X) =rowMeans(X)
และเมื่อคุณลบแถวหรือคอลัมน์หมายถึง: Y=X-rowMeans(X)
, mean(Y)
เป็น 0
You could turn your matrix of distances into raw data
(จุดที่ 1 และ 2) ฉันอ้างถึงโดยทั่วไปแล้วคือการปรับมาตราส่วนหลายมิติของ Torgerson (MDS)ซึ่งการจัดกึ่งกลางสองครั้งเป็นขั้นตอนแรก โปรดค้นหาไซต์นี้ (และ Google เช่นกัน) เกี่ยวกับขั้นตอนนั้น "การจัดกึ่งกลางสองครั้ง" เป็นการแปลงของระยะทาง (กำลังสอง) เป็นเมทริกซ์สเกลาร์ผลิตภัณฑ์ที่สอดคล้องกันซึ่งกำหนดไว้เหนือจุดกำเนิดที่ใส่ลงในเซนทรอยด์ของคลาวด์ของคะแนน
โปรดดูบทความนี้เขียนโดยหนึ่งในคนรู้จักของฉัน;)
http://arxiv.org/abs/1304.6899
มันเกี่ยวกับการใช้งาน k-mean ทั่วไปซึ่งใช้เมทริกซ์ระยะทางโดยพลการเป็นอินพุต มันสามารถเป็นเมทริกซ์ nonnegative สมมาตรใด ๆ ที่มีเส้นทแยงมุมเป็นศูนย์ โปรดทราบว่ามันอาจไม่ให้ผลลัพธ์ที่สมเหตุสมผลสำหรับเมทริกซ์ระยะทางแปลก ๆ โปรแกรมถูกเขียนใน C #
สามารถรับรหัสต้นฉบับได้โดยไปที่ลิงค์ด้านบนจากนั้นคลิกรูปแบบอื่นแล้วคลิกดาวน์โหลดแหล่งที่มา จากนั้นคุณจะได้รับ. tar.gz ที่มี Program.cs หรือสามารถคัดลอกซอร์สโค้ดจาก PDF ได้เช่นกัน
คุณสามารถใช้ Java Machine Learning Library พวกเขามีการใช้งาน K-Means หนึ่งในผู้สร้างยอมรับข้อโต้แย้งที่สาม
หนึ่งสามารถขยายคลาสทางไกลได้อย่างง่ายดายเพื่อให้ได้ผลลัพธ์ที่ต้องการ แนวคิดคือการส่งคืนค่าจากเมทริกซ์ระยะทางที่กำหนดเองในวิธีการวัด (อินสแตนซ์ x, อินสแตนซ์ y) ของคลาสนี้
K-หมายถึงถูก guarnateed มาบรรจบสมมติคุณสมบัติบางอย่างของการวัดระยะทาง ระยะทางแบบยุคลิดระยะทางแมนฮัตตันหรือตัวชี้วัดมาตรฐานอื่น ๆ เป็นไปตามสมมติฐานเหล่านี้ เนื่องจากเมตริกระยะทางที่กำหนดเองอาจไม่เป็นไปตามสมมติฐานเหล่านี้ผู้สร้างจึงมีพารามิเตอร์ตัวที่สามที่ระบุจำนวนการวนซ้ำเพื่อรันสำหรับการสร้างคลัสเตอร์