การจัดกึ่งกลาง (หรือลบความหมาย) ข้อมูลของคุณมีความแตกต่างจาก PCA อย่างไร ฉันได้ยินมาว่ามันทำให้คณิตศาสตร์ง่ายขึ้นหรือป้องกันพีซีเครื่องแรกไม่ให้ถูกครอบงำด้วยค่าเฉลี่ยของตัวแปร แต่ฉันรู้สึกว่าฉันยังไม่สามารถเข้าใจแนวคิดได้อย่างมั่นคง
ตัวอย่างเช่นคำตอบยอดนิยมที่นี่ข้อมูลที่อยู่ตรงกลางกำจัดการสกัดกั้นในการถดถอยและ PCA ได้อย่างไร อธิบายวิธีที่การไม่อยู่ตรงกลางจะดึง PCA แรกผ่านจุดเริ่มต้นแทนที่จะเป็นแกนหลักของคลาวด์พอยต์ จากความเข้าใจของฉันเกี่ยวกับวิธีที่พีซีได้รับจาก eigenvectors เมทริกซ์ความแปรปรวนร่วมฉันไม่สามารถเข้าใจได้ว่าทำไมสิ่งนี้จึงเกิดขึ้น
ยิ่งกว่านั้นการคำนวณของฉันเองที่มีและไม่มีการกำหนดกึ่งกลางดูเหมือนจะไม่สมเหตุสมผล
พิจารณาดอกไม้ setosa ในiris
ชุดข้อมูลใน R. ฉันคำนวณค่าลักษณะเฉพาะและค่าลักษณะเฉพาะของเมทริกซ์ความแปรปรวนร่วมตัวอย่างดังนี้
data(iris)
df <- iris[iris$Species=='setosa',1:4]
e <- eigen(cov(df))
> e
$values
[1] 0.236455690 0.036918732 0.026796399 0.009033261
$vectors
[,1] [,2] [,3] [,4]
[1,] -0.66907840 0.5978840 0.4399628 -0.03607712
[2,] -0.73414783 -0.6206734 -0.2746075 -0.01955027
[3,] -0.09654390 0.4900556 -0.8324495 -0.23990129
[4,] -0.06356359 0.1309379 -0.1950675 0.96992969
ถ้าฉันจัดกลุ่มชุดข้อมูลไว้ที่กึ่งกลางก่อนฉันจะได้ผลลัพธ์เหมือนกันทุกประการ ดูเหมือนว่าจะค่อนข้างชัดเจนเนื่องจากการอยู่ตรงกลางไม่ได้เปลี่ยนเมทริกซ์ความแปรปรวนร่วมเลย
df.centered <- scale(df,scale=F,center=T)
e.centered<- eigen(cov(df.centered))
e.centered
prcomp
ผลการทำงานในตรงรวมกัน eigenvalue-วิคเตอร์นี้เป็นอย่างดีทั้งชุดเป็นศูนย์กลางและ uncentered
p<-prcomp(df)
p.centered <- prcomp(df.centered)
Standard deviations:
[1] 0.48626710 0.19214248 0.16369606 0.09504347
Rotation:
PC1 PC2 PC3 PC4
Sepal.Length -0.66907840 0.5978840 0.4399628 -0.03607712
Sepal.Width -0.73414783 -0.6206734 -0.2746075 -0.01955027
Petal.Length -0.09654390 0.4900556 -0.8324495 -0.23990129
Petal.Width -0.06356359 0.1309379 -0.1950675 0.96992969
อย่างไรก็ตามที่ฟังก์ชั่นที่มีตัวเลือกเริ่มต้นprcomp
center = TRUE
การปิดการใช้งานตัวเลือกนี้จะส่งผลให้พีซีที่ตามมาของข้อมูลที่ไม่มีการป้อน ( p.centered
ยังคงเหมือนเดิมเมื่อcenter
ตั้งค่าเป็นเท็จ):
p.uncentered <- prcomp(df,center=F)
> p.uncentered
Standard deviations:
[1] 6.32674700 0.22455945 0.16369617 0.09766703
Rotation:
PC1 PC2 PC3 PC4
Sepal.Length -0.8010073 0.40303704 0.4410167 0.03811461
Sepal.Width -0.5498408 -0.78739486 -0.2753323 -0.04331888
Petal.Length -0.2334487 0.46456598 -0.8317440 -0.19463332
Petal.Width -0.0395488 0.04182015 -0.1946750 0.97917752
ทำไมสิ่งนี้จึงแตกต่างจากการคำนวณค่าไอเกนวีคเตอร์ของฉันเองในเมทริกซ์ความแปรปรวนร่วมของข้อมูลที่ไม่ได้ใส่ตัว มันต้องเกี่ยวข้องกับการคำนวณหรือไม่? ฉันเห็นแล้วว่าprcomp
ใช้สิ่งที่เรียกว่าวิธี SVD มากกว่าการแยกย่อยค่าเฉพาะเพื่อคำนวณพีซี ฟังก์ชั่นprincomp
ใช้หลัง prcomp
แต่ผลของมันจะเหมือนกับ ปัญหาของฉันเกี่ยวข้องกับคำตอบที่ฉันอธิบายไว้ที่ด้านบนของโพสต์นี้หรือไม่
through the origin, rather than the main axis of the point cloud
. PCA เจาะแหล่งกำเนิดเสมอ ถ้าข้อมูลอยู่กึ่งกลางให้กำเนิด = เซนทรอยด์
Based on my understanding of how the PC's are obtained from the covariance matrix's eigenvectors...
โปรดอ่านความคิดเห็นในคำตอบที่คุณลิงค์ไป Covariances หมายถึงการจัดศูนย์กลางข้อมูลไว้ที่ PCA "on covariances" = PCA สำหรับข้อมูลกึ่งกลาง หากคุณไม่ได้จัดวางตัวแปรดั้งเดิมX
ไว้ PCA ที่ยึดตามข้อมูลดังกล่าวจะเป็น = PCA บนX'X/n [or n-1]
เมทริกซ์ ดูภาพรวมยังมีความสำคัญ: stats.stackexchange.com/a/22520/3277