การบรรจบกันของวิธีการ Hartigan-Wong k-mean และอัลกอริธึมอื่น ๆ


10

ฉันพยายามทำความเข้าใจเกี่ยวกับอัลกอริธึมการจัดกลุ่ม k-mean ต่าง ๆ ซึ่งส่วนใหญ่นำไปใช้ในstatsแพ็คเกจRภาษา

ฉันเข้าใจอัลกอริทึมของ Lloyd และอัลกอริทึมออนไลน์ของ MacQueen วิธีที่ฉันเข้าใจพวกเขามีดังนี้:

อัลกอริทึมของ Lloyd:

การสำรวจแบบสุ่ม 'k' ในขั้นต้นจะถูกเลือกซึ่งจะทำหน้าที่เป็น centroids ของกลุ่ม 'k' จากนั้นขั้นตอนต่อไปนี้เกิดขึ้นในการทำซ้ำจนกว่าเซนทรอยด์จะบรรจบกัน

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

เงื่อนไขที่จะมาบรรจบกันมีดังต่อไปนี้: เซนทรอยด์เก่าและใหม่นั้นเหมือนกันทุกประการความแตกต่างระหว่างเซนทรอยด์นั้นเล็ก (จากลำดับที่ 10 ^ -3) หรือถึงจำนวนสูงสุดของการทำซ้ำ (10 หรือ 100)

อัลกอริทึมของ MacQueen:

นี่เป็นเวอร์ชั่นออนไลน์ที่อินสแตนซ์ 'k' ตัวแรกถูกเลือกเป็น centroids

จากนั้นแต่ละอินสแตนซ์จะถูกวางในถังขึ้นอยู่กับเซนทรอยด์ที่ใกล้เคียงกับอินสแตนซ์นั้น เซนทรอยด์ที่เกี่ยวข้องจะถูกคำนวณใหม่

ทำซ้ำขั้นตอนนี้จนกระทั่งแต่ละอินสแตนซ์ถูกวางในที่ฝากข้อมูลที่เหมาะสม

อัลกอริทึมนี้มีการวนซ้ำเพียงครั้งเดียวและการวนซ้ำดำเนินต่อไปสำหรับอินสแตนซ์ 'x'

อัลกอริทึม Hartigan-Wong:

  1. กำหนดคะแนน / อินสแตนซ์ทั้งหมดให้กับถังสุ่มและคำนวณเซนทรอยด์ที่เกี่ยวข้อง
  2. เริ่มต้นจากอินสแตนซ์แรกค้นหาเซนทรอยด์ที่ใกล้ที่สุดและตรวจสอบที่ฝากข้อมูล หากที่ฝากข้อมูลเปลี่ยนไปให้คำนวณ centroid ใหม่เช่น centroid ของที่ฝากข้อมูลใหม่ที่ได้รับมอบหมายและ centroid ของที่ฝากข้อมูลเก่าที่ได้รับมอบหมายเนื่องจากมีสอง centroids ที่ได้รับผลกระทบจากการเปลี่ยนแปลง
  3. วนผ่านทุกจุดและรับ centroids ใหม่
  4. ทำซ้ำจุดที่สองของ 2 และ 3 ซึ่งดำเนินการเรียงลำดับของการดำเนินการทำความสะอาดและกำหนดจุดหลงทางเพื่อถังที่ถูกต้อง

ดังนั้นอัลกอริธึมนี้ทำซ้ำ 2 ครั้งก่อนที่เราจะเห็นผลการลู่เข้า

ตอนนี้ฉันไม่แน่ใจว่าสิ่งที่ฉันคิดในจุดที่ 4 ในอัลกอริทึม Hartigan-Wong เป็นวิธีที่ถูกต้องของอัลกอริทึม คำถามของฉันคือถ้าวิธีต่อไปนี้สำหรับ Hartigan-Wong เป็นวิธีที่ถูกต้องในการนำ k-mean มาใช้หรือไม่ มีวิธีการซ้ำสองวิธีเท่านั้นหรือไม่ ถ้าไม่เงื่อนไขสำหรับการบรรจบกัน (เมื่อหยุด) คืออะไร?

คำอธิบายการนำไปปฏิบัติที่เป็นไปได้อีกประการหนึ่งที่ฉันเข้าใจคือ

  1. กำหนดคะแนน / อินสแตนซ์ทั้งหมดให้กับถังสุ่มและคำนวณเซนทรอยด์ที่เกี่ยวข้อง
  2. เริ่มต้นจากอินสแตนซ์แรกค้นหาเซนทรอยด์ที่ใกล้ที่สุดและกำหนดที่ฝากข้อมูล หากที่ฝากข้อมูลเปลี่ยนไปให้คำนวณ centroid ใหม่เช่น centroid ของที่ฝากข้อมูลใหม่ที่ได้รับมอบหมายและ centroid ของที่ฝากข้อมูลเก่าที่ได้รับมอบหมายเนื่องจากมีสอง centroids ที่ได้รับผลกระทบจากการเปลี่ยนแปลง
  3. เมื่อมีการเปลี่ยนแปลงในที่ฝากข้อมูลสำหรับจุดใด ๆ ให้กลับไปที่อินสแตนซ์แรกและทำซ้ำขั้นตอนอีกครั้ง
  4. การวนซ้ำจะสิ้นสุดลงเมื่อมีการทำซ้ำอินสแตนซ์ทั้งหมดและไม่มีจุดเปลี่ยนถัง

วิธีนี้มีการวนซ้ำจำนวนมากที่เริ่มต้นจากจุดเริ่มต้นของชุดข้อมูลซ้ำแล้วซ้ำอีกทุกครั้งเมื่ออินสแตนซ์เปลี่ยนที่เก็บข้อมูล

คำอธิบายใด ๆ ที่จะเป็นประโยชน์และโปรดแจ้งให้เราทราบหากฉันเข้าใจวิธีการใด ๆ เหล่านี้ผิด


อะไรคือเป็น "ถัง"?
มีทางออก - Anony-Mousse

@ Anony-Mousse "bucket" เป็น "cluster" ตัวอย่างเช่น: k-mean ใช้เพื่อแบ่งข้อมูลออกเป็นกลุ่ม / k 'กลุ่ม'
Sid

แต่ดูเหมือนว่าอัลกอริทึมของ MacQueens
มีทางออก - Anony-Mousse

@ anony-มูส ใช่นอกเหนือจากขั้นตอนแรก Hartigan-Wong ดูเหมือนว่าอัลกอริทึม MacQueens แต่ฉันไม่แน่ใจว่านี่เป็นความเข้าใจที่ถูกต้องหรือไม่ อาจมีแนวคิดบางอย่างที่ฉันขาดไปสำหรับการวนซ้ำและการลู่เข้า
ซิด

คำตอบ:


1

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

  1. x¯
  2. x¯||xผม-x¯||2
  3. {1+(L-1)[M/K]}L=1,...,K[  ]1

สำหรับอัลกอริทึมหลักนั้นมีการอธิบายไว้ในกระดาษที่เรียกว่าK-Means ของ Hartigan เทียบกับ K-Means ของ K-Means กับเวลาของการเปลี่ยนแปลงหรือไม่? จาก N Slonim, E Aharoni, K ครูกวดวิชาตีพิมพ์ในปี 2013 โดยAJCAI โปรดทราบว่ารุ่นนี้ใช้เพียงพาร์ติชันเริ่มต้นแบบสุ่ม มันไปดังนี้

xXK

  1. XKโวลต์

  2. XxX

    s=1

    x-={x}

    +={aRก.ม.ผมn* * * *()- 1nd(x,โวลต์* * * *)+1nΣY* * * *[d(Y,โวลต์* * * *x)-d(Y,โวลต์* * * *)]}{x}

    +-* * * *+โวลต์โวลต์* * * *s0

  3. s=0

* * * *aRก.ม.ผมnx* * * *dโวลต์โวลต์* * * *{x}

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

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