ไม่ทำให้ข้อมูลเป็นปกติก่อน PCA จะอธิบายอัตราส่วนความแปรปรวนได้ดีกว่า


19

ฉันทำให้ชุดข้อมูลของฉันเป็นปกติจากนั้นเรียกใช้ PCA 3 องค์ประกอบเพื่อรับอัตราส่วนความแปรปรวนเล็ก ๆ ([0.50, 0.1, 0.05])

เมื่อฉันไม่ได้ทำให้ปกติ แต่ทำให้ชุดข้อมูลของฉันขาวขึ้นจากนั้นก็วิ่ง PCA 3 component ฉันได้อัตราส่วนความแปรปรวนที่อธิบายไว้สูง ([0.86, 0.06,0.01])

เนื่องจากฉันต้องการเก็บข้อมูลให้มากที่สุดเป็น 3 องค์ประกอบฉันไม่ควรทำให้ข้อมูลเป็นมาตรฐานหรือไม่ จากความเข้าใจของฉันเราควรทำให้ปกติก่อน PCA

โดย normalizing: การตั้งค่าหมายถึง 0 และมีความแปรปรวนของหน่วย

pca 

3
แม้ว่ามันจะมีความชัดเจนในสิ่งที่คุณหมายถึงโดย "normalizing" ข้อมูล (ฉันรู้ว่าอย่างน้อยสี่วิธีมาตรฐานในการทำเช่นนี้ใน PCA และมีแนวโน้มที่จะมีมากขึ้น) ก็เสียงเหมือนวัสดุที่stats.stackexchange.com/questions/53อาจ ส่องสว่าง
whuber

สวัสดีผู้ร้องทุกข์: ฉันหมายถึงการทำให้ปกติการสังเกตแต่ละหน่วยเป็นบรรทัดฐาน

1
ขอบคุณ คำปกติสำหรับสิ่งนั้นคือ "การกำหนดมาตรฐาน" เมื่อคุณทำเช่นนั้นคุณกำลังแสดง PCA ตามความสัมพันธ์: นั่นเป็นเหตุผลที่ฉันคิดว่าลิงก์ที่ฉันให้ไว้อาจตอบคำถามของคุณได้แล้ว อย่างไรก็ตามฉันไม่เห็นคำตอบใดที่จริง ๆ แล้วอธิบายว่าทำไมหรืออย่างไรคุณจะได้ผลลัพธ์ที่แตกต่างกัน (อาจเป็นเพราะมันซับซ้อนและผลของมาตรฐานอาจเป็นเรื่องยากที่จะทำนาย)
whuber

1
การฟอกสีฟันก่อน PCA เป็นเรื่องปกติหรือไม่? เป้าหมายของการทำเช่นนั้นคืออะไร?
shadowtalker

2
หากคุณกำลังทำงานกับภาพเช่นบรรทัดฐานของภาพที่สอดคล้องกับความสว่าง ความแปรปรวนที่อธิบายไว้สูงของข้อมูลที่ไม่ได้ทำให้เป็นมาตรฐานหมายความว่าข้อมูลจำนวนมากสามารถอธิบายได้จากการเปลี่ยนแปลงของความสว่าง หากความสว่างไม่ใช่สิ่งสำคัญสำหรับคุณเนื่องจากความสว่างมักไม่ได้อยู่ในการประมวลผลภาพดังนั้นคุณจึงต้องการสร้างบรรทัดฐานของภาพทั้งหมดก่อน แม้จะคิดว่าความแปรปรวนที่อธิบายไว้ขององค์ประกอบ pca ของคุณจะลดลง แต่ก็สะท้อนให้เห็นถึงสิ่งที่คุณสนใจดีขึ้น
Aaron

คำตอบ:


37

ขึ้นอยู่กับเป้าหมายของการวิเคราะห์ของคุณ วิธีปฏิบัติทั่วไปบางอย่างซึ่งบางอย่างถูกกล่าวถึงในลิงก์ของ whuber:

  1. การกำหนดมาตรฐานมักกระทำเมื่อตัวแปรที่ดำเนินการกับ PCA นั้นไม่ได้รับการวัดในระดับเดียวกัน โปรดทราบว่าการกำหนดมาตรฐานหมายถึงการกำหนดความสำคัญเท่าเทียมกันให้กับตัวแปรทั้งหมด
  2. หากพวกเขาไม่ได้วัดในระดับเดียวกันและคุณเลือกที่จะทำงานกับตัวแปรที่ไม่ได้มาตรฐานก็มักจะเป็นกรณีที่พีซีแต่ละเครื่องถูกครอบงำด้วยตัวแปรเดียวและคุณเพิ่งได้รับการเรียงลำดับของตัวแปรตามความแปรปรวนของพวกเขา (หนึ่งในการโหลดของแต่ละองค์ประกอบ (ต้น) จะใกล้กับ +1 หรือ -1)
  3. ทั้งสองวิธีมักจะนำไปสู่ผลลัพธ์ที่แตกต่างกันตามที่คุณมีประสบการณ์

ตัวอย่างที่ใช้งานง่าย:

สมมติว่าคุณมีสองตัวแปร: ความสูงของต้นไม้และเส้นรอบวงของต้นไม้เดียวกัน เราจะแปลงปริมาตรเป็นปัจจัย: ต้นไม้จะมีปริมาณสูงหากปริมาตรมากกว่า 20 ลูกบาศก์ฟุตและมีปริมาณต่ำ เราจะใช้ชุดข้อมูลต้นไม้ซึ่งโหลดไว้ล่วงหน้าใน R

>data(trees)
>tree.girth<-trees[,1]
>tree.height<-trees[,2]
>tree.vol<-as.factor(ifelse(trees[,3]>20,"high","low"))

ทีนี้สมมติว่าความสูงถูกวัดเป็นไมล์แทนที่จะเป็นฟุต

>tree.height<-tree.height/5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
>summary(tree.pca)
Importance of components:
                      Comp.1       Comp.2
Standard deviation     3.0871086 1.014551e-03
Proportion of Variance 0.9999999 1.080050e-07
Cumulative Proportion  0.9999999 1.000000e+00

องค์ประกอบแรกอธิบายความแปรปรวนของข้อมูลได้เกือบ 100% โหลด:

> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height        -1    
tree.girth   1           

การประเมินผลกราฟิก:

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot ของวิธีแรก

เราเห็นว่าต้นไม้ที่มีปริมาตรสูงมักจะมีเส้นรอบวงต้นไม้สูง แต่ความสูงทั้งสามนั้นไม่ให้ข้อมูลใด ๆ กับปริมาตรต้นไม้ สิ่งนี้อาจผิดและผลที่ตามมาจากการวัดสองหน่วยที่แตกต่างกัน

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

>tree.height<-tree.height*5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1    Comp.2
Standard deviation     6.5088696 2.5407042
Proportion of Variance 0.8677775 0.1322225
Cumulative Proportion  0.8677775 1.0000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height -0.956  0.293
tree.girth  -0.293 -0.956

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot ของวิธีที่สอง

ตอนนี้เราเห็นว่าต้นไม้ที่สูงและมีเส้นรอบวงใหญ่มีปริมาณสูง (มุมซ้ายล่าง) เมื่อเปรียบเทียบกับเส้นรอบวงต่ำและความสูงต่ำสำหรับต้นไม้ที่มีปริมาณน้อย (มุมขวาบน) สิ่งนี้ทำให้รู้สึก

หากมองอย่างใกล้ชิดเราจะเห็นว่าความแตกต่างระหว่างระดับเสียงสูง / ต่ำมีความแข็งแกร่งที่สุดในทิศทางเส้นรอบวงและไม่อยู่ในทิศทางความสูง มาดูกันว่าจะเกิดอะไรขึ้นเมื่อเราสร้างมาตรฐาน:

>tree<-scale(tree,center=F,scale=T)
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1     Comp.2
Standard deviation     0.2275561 0.06779544
Proportion of Variance 0.9184749 0.08152510
Cumulative Proportion  0.9184749 1.00000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height  0.203 -0.979
tree.girth   0.979  0.203
>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot ของวิธีที่สาม

แท้จริงตอนนี้เส้นรอบวงอธิบายความแตกต่างส่วนใหญ่ในต้นไม้สูงและต่ำ! (ความยาวของลูกศรใน biplot นั้นบ่งบอกถึงความแปรปรวนในตัวแปรดั้งเดิม) ดังนั้นแม้ว่าสิ่งต่าง ๆ จะถูกวัดในระดับเดียวกันการทำให้เป็นมาตรฐานอาจมีประโยชน์ อาจไม่แนะนำให้ปรับมาตรฐานเมื่อเรายกตัวอย่างเช่นการเปรียบเทียบความยาวของต้นไม้ชนิดต่าง ๆ เพราะนี่เป็นการวัดเดียวกัน


2
(+1) คำตอบที่ดีมากจริง ๆ แล้วทั้งหมดที่ได้รับในหัวข้อยอดนิยมที่เชื่อมโยงเกี่ยวกับ PCA เกี่ยวกับความแปรปรวนร่วมกับความสัมพันธ์
อะมีบาพูดว่า Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.