มันเป็นความจริงที่ K-หมายถึงการจัดกลุ่มและ PCA ดูเหมือนจะมีเป้าหมายที่แตกต่างกันมากและตั้งแต่แรกเห็นดูเหมือนจะไม่เกี่ยวข้องกัน อย่างไรก็ตามดังที่อธิบายไว้ในกระดาษK & หมายถึงการจัดกลุ่มผ่านการวิเคราะห์ส่วนประกอบหลักของ Ding & He 2004 มีการเชื่อมต่ออย่างลึกซึ้งระหว่างสิ่งเหล่านี้
ปรีชาคือ PCA พยายามที่จะเป็นตัวแทนของเวกเตอร์ข้อมูลทั้งหมดเป็นการรวมกันเชิงเส้นของจำนวนน้อยของ eigenvector และทำเพื่อลดข้อผิดพลาดการฟื้นฟูหมายถึงกำลังสอง ในทางตรงกันข้าม K-วิธีการพยายามที่จะเป็นตัวแทนพาหะข้อมูลผ่านทางขนาดเล็กจำนวน centroids คลัสเตอร์คือเพื่อเป็นตัวแทนของพวกเขาเป็นผลรวมเชิงเส้นของจำนวนเล็ก ๆ ของคลัสเตอร์เวกเตอร์เซนทรอยด์ที่มีน้ำหนักรวมกันเชิงเส้นจะต้องเป็นศูนย์ทั้งหมดยกเว้นเพียงครั้งเดียว1นอกจากนี้ยังทำเพื่อลดข้อผิดพลาดในการสร้างค่าเฉลี่ยกำลังสองให้น้อยที่สุดn 1nn1
ดังนั้นค่าเฉลี่ย K จึงถูกมองว่าเป็น PCA ที่กระจัดกระจาย
กระดาษของ Ding & He ทำอะไรเพื่อให้การเชื่อมต่อนี้แม่นยำยิ่งขึ้น
น่าเสียดายที่กระดาษ Ding & He มีสูตรเลอะเทอะ (อย่างดีที่สุด) และสามารถเข้าใจผิดได้ง่าย เช่นอาจดูเหมือนว่า Ding & He อ้างว่าได้พิสูจน์แล้วว่า centroids คลัสเตอร์ของ K-หมายถึงวิธีการแก้ปัญหาการจัดกลุ่มอยู่ในพื้นที่ย่อย - มิติ PCA:(K−1)
ทฤษฎีบท 3.3 พื้นที่สเปซ Centroid ของกลุ่มจะถูกขยายโดย
ทิศทางหลัก [... ]K−1
สำหรับนี่หมายความว่าการคาดการณ์บนแกน PC1 จะต้องเป็นค่าลบสำหรับหนึ่งคลัสเตอร์และบวกสำหรับอีกคลัสเตอร์หนึ่งนั่นคือแกน PC2 จะแยกกลุ่มอย่างสมบูรณ์K=2
นี่อาจเป็นความผิดพลาดหรือการเขียนเลอะเทอะ ไม่ว่าในกรณีใดก็ตามการอ้างสิทธิ์นี้เป็นเท็จ
ขอเริ่มต้นด้วยการมองหาที่บางตัวอย่างเล่น ๆ ใน 2D สำหรับ 2 ฉันสร้างตัวอย่างบางส่วนจากการแจกแจงปกติสองตัวที่มีเมทริกซ์ความแปรปรวนร่วมเดียวกัน แต่วิธีที่ต่างกัน ฉันวิ่งทั้ง K-Mean และ PCA รูปต่อไปนี้แสดงพล็อตกระจายของข้อมูลด้านบนและข้อมูลสีเดียวกันตามวิธีแก้ปัญหา K-mean ด้านล่าง ฉันยังแสดงทิศทางหลักแรกเป็นเส้นสีดำและเซนทรอยด์ระดับที่พบโดย K- หมายถึงด้วยกากบาทสีดำ แกน PC2 แสดงขึ้นพร้อมกับเส้นประสีดำ K-mean ซ้ำครั้งด้วยการสุ่มเมล็ดเพื่อให้แน่ใจว่าการบรรจบกับโลกที่เหมาะสมที่สุด100K=2100
เราสามารถเห็นได้อย่างชัดเจนว่าถึงแม้ว่า centroids คลาสจะค่อนข้างใกล้เคียงกับทิศทางพีซีเครื่องแรก แต่ก็ไม่ได้ล้มลงอย่างแน่นอน ยิ่งไปกว่านั้นแม้ว่าแกน PC2 จะแยกกลุ่มอย่างสมบูรณ์ในแผนการย่อยที่ 1 และ 4 แต่ก็มีจุดสองสามจุดที่อยู่ผิดด้านของมันในแผนการย่อยที่ 2 และ 3
ดังนั้นข้อตกลงระหว่าง K-mean และ PCA ค่อนข้างดี แต่ไม่แน่นอน
ดังนั้น Ding & เขาพิสูจน์อะไร เพื่อความง่ายฉันจะพิจารณาเฉพาะกรณีให้จำนวนของจุดที่ได้รับมอบหมายให้แต่ละกลุ่มจะและ และจำนวนรวมของจุดnต่อไปนี้ Ding & He ให้นิยามตัวบ่งชี้กลุ่มเวกเตอร์ ดังนี้:ถ้า -th points เป็นของคลัสเตอร์ 1 และถ้าเป็นของคลัสเตอร์ 2 เวกเตอร์ตัวบ่งชี้คลัสเตอร์มีความยาวหน่วยและ "ศูนย์กลาง" คือองค์ประกอบของผลรวมเป็นศูนย์0n 1 n 2 n = n 1 + n 2 q ∈ R n q i = √K=2n1n2n=n1+n2 q∈Rn iqi=-√qi=n2/nn1−−−−−−√iqi=−n1/nn2−−−−−−√∥q∥=1∑qi=0
Ding & เขาแสดงให้เห็นว่า K- หมายถึงฟังก์ชั่นการสูญเสีย (K-หมายถึงอัลกอริธึมที่ย่อเล็กสุด) สามารถเขียนใหม่ได้เท่ากับที่เป็นแกรมเมทริกซ์ของผลิตภัณฑ์เกลาระหว่างจุดทั้งหมด:ที่เป็นเมทริกซ์ข้อมูลและเป็นเมทริกซ์ข้อมูลกึ่งกลาง∑k∑i(xi−μk)2−q⊤GqGn×nG=X⊤cXcXn×2Xc
(หมายเหตุ: ฉันกำลังใช้สัญลักษณ์และคำศัพท์ที่แตกต่างจากกระดาษของพวกเขาเล็กน้อย แต่ฉันพบว่าชัดเจนขึ้น)
ดังนั้น K-วิธีการแก้ปัญหาเป็นเวกเตอร์หน่วยศูนย์กลางการเพิ่มQ มันเป็นเรื่องง่ายที่จะแสดงให้เห็นว่าองค์ประกอบหลักตัวแรก (เมื่อปรับให้เป็นหน่วยรวมของกำลังสอง) เป็นผู้นำของไอแกรมเมทริกซ์แกรมเมทริกซ์นั่นคือมันยังเป็นเวกเตอร์ยูนิทกึ่งกลางเพิ่มสูงสุดพี ความแตกต่างเพียงอย่างเดียวคือถูก จำกัด นอกจากนี้เพื่อให้มีค่าที่แตกต่างกันสองค่าเท่านั้นในขณะที่ไม่มีข้อ จำกัด นี้qq⊤Gqpp⊤Gpqp
กล่าวอีกนัยหนึ่ง K- หมายถึงและ PCA เพิ่มฟังก์ชั่นวัตถุประสงค์เดียวกันด้วยความแตกต่างเพียงอย่างเดียวที่ K-Mean มีข้อ จำกัด "เด็ดขาด" เพิ่มเติม
เหตุผลก็คือว่าส่วนใหญ่เวลาที่ K-mean (ถูก จำกัด ) และ PCA (ไม่ จำกัด ) จะค่อนข้างใกล้เคียงกันอย่างที่เราเห็นในการจำลอง แต่เราไม่ควรคาดหวังว่ามันจะเหมือนกัน การและการตั้งค่าองค์ประกอบเชิงลบทั้งหมดจะเท่ากับและทุกองค์ประกอบในเชิงบวกในการโดยทั่วไปจะไม่ให้ว่า คิวp−n1/nn2−−−−−−√n2/nn1−−−−−−√q
Ding & เขาดูเหมือนจะเข้าใจดีเพราะพวกเขากำหนดทฤษฎีบทของพวกเขาดังนี้
ทฤษฎีบท 2.2 สำหรับ K-หมายถึงการทำคลัสเตอร์โดยที่ , วิธีแก้ปัญหาอย่างต่อเนื่องของเวกเตอร์ตัวบ่งชี้คลัสเตอร์คือ [ส่วนประกอบแรก]K=2
โปรดทราบว่าคำว่า "การแก้ปัญหาอย่างต่อเนื่อง" หลังจากพิสูจน์ทฤษฎีบทนี้พวกเขายังแสดงความคิดเห็นว่า PCA สามารถนำมาใช้ในการเริ่มต้น K-หมายถึงการทำซ้ำซึ่งจะทำให้ความรู้สึกที่ได้รับทั้งหมดที่เราคาดว่าจะใกล้เคียงกับพี แต่ก็ยังต้องทำการวนซ้ำเพราะมันไม่เหมือนกันqp
อย่างไรก็ตาม Ding & He ก็จะพัฒนาวิธีการรักษาแบบทั่วไปสำหรับและจบลงด้วยการกำหนดทฤษฎีบท 3.3 เป็นK>2
ทฤษฎีบท 3.3 พื้นที่สเปซ Centroid ของกลุ่มจะถูกขยายโดย
ทิศทางหลัก [... ]K−1
ฉันไม่ได้ผ่านคณิตศาสตร์ของส่วนที่ 3 แต่ฉันเชื่อว่าทฤษฎีบทนี้ในความเป็นจริงยังหมายถึง "การแก้ปัญหาอย่างต่อเนื่อง" ของ K- หมายถึงคือคำสั่งของมันควรจะอ่าน "พื้นที่ Centroid กลุ่มของการแก้ปัญหาอย่างต่อเนื่องของ K- หมายถึง ขยาย [... ] "
อย่างไรก็ตาม Ding & He ไม่ได้ทำการรับรองคุณสมบัติที่สำคัญนี้และยิ่งไปกว่านั้นเขียนในเชิงนามธรรมของพวกเขาว่า
ที่นี่เราพิสูจน์ได้ว่าส่วนประกอบหลักเป็นโซลูชั่นต่อเนื่องสำหรับตัวบ่งชี้การเป็นสมาชิกคลัสเตอร์แบบไม่ต่อเนื่องสำหรับการจัดกลุ่ม K-mean เท่าที่เราแสดงให้เห็นว่าสเปซทอด centroids คลัสเตอร์จะได้รับจากการขยายตัวของสเปกตรัมของเมทริกซ์ข้อมูลแปรปรวนตัดทอนที่เงื่อนไขK−1
ประโยคแรกนั้นถูกต้องอย่างแน่นอน แต่ประโยคที่สองไม่ได้ มันไม่ชัดเจนสำหรับฉันหากนี่เป็นงานเขียนที่เลอะเทอะหรือผิดพลาดอย่างแท้จริง ฉันได้ส่งอีเมลถึงผู้เขียนทั้งสองอย่างสุภาพเพื่อขอคำชี้แจง (อัปเดตสองเดือนต่อมา: ฉันไม่เคยได้ยินจากพวกเขาเลย)
รหัสการจำลอง Matlab
figure('Position', [100 100 1200 600])
n = 50;
Sigma = [2 1.8; 1.8 2];
for i=1:4
means = [0 0; i*2 0];
rng(42)
X = [bsxfun(@plus, means(1,:), randn(n,2) * chol(Sigma)); ...
bsxfun(@plus, means(2,:), randn(n,2) * chol(Sigma))];
X = bsxfun(@minus, X, mean(X));
[U,S,V] = svd(X,0);
[ind, centroids] = kmeans(X,2, 'Replicates', 100);
subplot(2,4,i)
scatter(X(:,1), X(:,2), [], [0 0 0])
subplot(2,4,i+4)
hold on
scatter(X(ind==1,1), X(ind==1,2), [], [1 0 0])
scatter(X(ind==2,1), X(ind==2,2), [], [0 0 1])
plot([-1 1]*10*V(1,1), [-1 1]*10*V(2,1), 'k', 'LineWidth', 2)
plot(centroids(1,1), centroids(1,2), 'w+', 'MarkerSize', 15, 'LineWidth', 4)
plot(centroids(1,1), centroids(1,2), 'k+', 'MarkerSize', 10, 'LineWidth', 2)
plot(centroids(2,1), centroids(2,2), 'w+', 'MarkerSize', 15, 'LineWidth', 4)
plot(centroids(2,1), centroids(2,2), 'k+', 'MarkerSize', 10, 'LineWidth', 2)
plot([-1 1]*5*V(1,2), [-1 1]*5*V(2,2), 'k--')
end
for i=1:8
subplot(2,4,i)
axis([-8 8 -8 8])
axis square
set(gca,'xtick',[],'ytick',[])
end