ฉันจะตีความสิ่งที่ได้รับจาก PCA ได้อย่างไร


14

ในฐานะเป็นส่วนหนึ่งของการมอบหมายของมหาวิทยาลัยฉันต้องดำเนินการประมวลผลข้อมูลล่วงหน้าในชุดข้อมูลดิบที่มีขนาดใหญ่หลายตัวแปร (> 10) ฉันไม่ได้เป็นนักสถิติในแง่ของคำใด ๆ ดังนั้นฉันสับสนเล็กน้อยว่าเกิดอะไรขึ้น ขอโทษล่วงหน้าสำหรับสิ่งที่อาจเป็นคำถามง่ายๆที่น่าหัวเราะ - หัวของฉันหมุนหลังจากดูคำตอบต่าง ๆ และพยายามลุยผ่านสถิติพูด

ฉันอ่านแล้ว:

  • PCA ช่วยให้ฉันลดมิติข้อมูลของฉัน
  • มันทำได้โดยการรวม / ลบคุณลักษณะ / มิติที่สัมพันธ์กันมาก (และทำให้ไม่จำเป็นเล็กน้อย)
  • มันทำได้โดยการหา eigenvectors เกี่ยวกับข้อมูลความแปรปรวนร่วม (ขอบคุณกวดวิชาที่ดีที่ฉันติดตามผ่านเพื่อเรียนรู้สิ่งนี้)

อันไหนดี

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

PersonID     Sex     Age Range    Hours Studied     Hours Spent on TV      Test Score     Coursework Score 
1            1       2            5                 7                      60             75
2            1       3            8                 2                      70             85 
3            2       2            6                 6                      50             77
...          ...     ...          ...               ...                    ...            ...

ฉันไม่แน่ใจว่าฉันจะตีความผลลัพธ์ได้อย่างไร

บทเรียนส่วนใหญ่ที่ฉันเห็นออนไลน์ดูเหมือนจะให้มุมมองทางคณิตศาสตร์ของ PCA ฉันได้ทำการค้นคว้าและติดตามพวกเขาผ่านไปแล้ว - แต่ฉันยังไม่แน่ใจว่าสิ่งนี้มีความหมายอย่างไรสำหรับฉันผู้ซึ่งพยายามดึงความหมายบางรูปแบบจากกองข้อมูลนี้ที่ฉันมีต่อหน้าฉัน

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

ฉันจะทำ PCA และทำสิ่งที่ได้รับในแบบที่ฉันสามารถพูดเป็นภาษาอังกฤษธรรมดาในมิติเดิมได้อย่างไร


3
ข้อมูลตัวอย่างของคุณแสดงให้เห็นถึงการผสมผสานของประเภทข้อมูล: เพศคือการแบ่งขั้วคู่อายุเป็นลำดับส่วนอีก 3 รายการเป็นช่วงเวลา (และอยู่ในหน่วยต่างกัน) การทำ linear PCA นั้นเหมาะสมกับข้อมูลช่วงเวลา (แต่คุณต้องกำหนดมาตรฐานให้กับตัวแปรเหล่านั้นเป็นอันดับแรกเนื่องจากหน่วย) มันเป็นที่ถกเถียงกันว่า PCA เป็นที่เหมาะสมสำหรับไบนารีหรือ dichotomousข้อมูล คุณไม่ควรใช้ข้อมูลลำดับในเชิงเส้น PCA แต่คำถามหลักที่มีข้อมูลตัวอย่างของคุณ: ทำไมที่ทุกคนจะทำ PCA กับมัน มันสมเหตุสมผลในกรณีนี้ไหม?
ttnphns

pdf นี้จะเป็นประโยชน์สำหรับการประยุกต์ใช้ PCA โพสต์อื่น ๆ ที่นี่ทำงานได้ดีเช่นอธิบายความหมายของผลลัพธ์ PCA ของคุณ
ams

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

3
ฉันสามารถแนะนำคุณได้เท่านั้นในปัจจุบันเพื่ออ่านเพิ่มเติมเกี่ยวกับ PCA (บนเว็บไซต์นี้ด้วย) ความไม่แน่นอนมากมายจะหายไปแน่นอน
ttnphns

ลิงก์ที่ดีหลายรายการด้านบนนี่เป็นตัวอย่างสั้น ๆ ที่ "สามารถ" ให้ความรู้สึกที่ดีเกี่ยวกับ PCA ในแง่ของการถดถอยด้วยตัวอย่างที่ใช้งานได้จริงและมีน้อยมาก sites.stat.psu.edu/~ajw13/stat505/fa06/16_princomp/ …
leviathan

คำตอบ:


15

หน้าบทที่ 13-20 ของบทช่วยสอนที่คุณโพสต์นั้นให้คำอธิบายทางเรขาคณิตที่เข้าใจง่ายมากเกี่ยวกับวิธีการใช้ PCA สำหรับการลดขนาด

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

  1. คอลัมน์ (ค่าสัมบูรณ์ของ) คอลัมน์ของเมทริกซ์การโหลดของคุณอธิบายว่า "จัดสรร" แต่ละองค์ประกอบตามสัดส่วนเท่าใดสำหรับแต่ละองค์ประกอบ

  2. เมทริกซ์การหมุนจะหมุนข้อมูลของคุณไปยังพื้นฐานที่กำหนดโดยเมทริกซ์การหมุนของคุณ ดังนั้นหากคุณมีข้อมูล 2 มิติและคูณข้อมูลด้วยเมทริกซ์การหมุนของคุณแกน X ใหม่ของคุณจะเป็นองค์ประกอบหลักตัวแรกและแกน Y ใหม่จะเป็นองค์ประกอบหลักตัวที่สอง

แก้ไข: คำถามนี้ถูกถามบ่อยมากดังนั้นฉันจะอธิบายรายละเอียดเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อเราใช้ PCA เพื่อลดมิติข้อมูล

ลองพิจารณาตัวอย่าง 50 คะแนนจาก y = x + noise องค์ประกอบหลักแรกจะอยู่ตามเส้น y = x และองค์ประกอบที่สองจะอยู่ตามเส้น y = -x ดังที่แสดงด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

อัตราส่วนกว้างยาวทำให้ยุ่งเล็กน้อย แต่ใช้คำพูดของฉันว่าองค์ประกอบเป็นมุมฉาก การใช้ PCA จะหมุนข้อมูลของเราเพื่อให้ส่วนประกอบกลายเป็นแกน x และ y:

ป้อนคำอธิบายรูปภาพที่นี่

ข้อมูลก่อนการแปลงคือวงกลมข้อมูลหลังจากข้าม ในตัวอย่างนี้ข้อมูลไม่ได้หมุนมากเท่าที่มันหมุนข้ามเส้น y = -2x แต่เราสามารถกลับหัวแกน y ได้อย่างง่ายดายเพื่อทำให้การหมุนเป็นไปอย่างแท้จริงโดยไม่สูญเสียความสามารถตามที่อธิบายไว้ที่นี่ .

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

ป้อนคำอธิบายรูปภาพที่นี่

เราสามารถกู้คืนข้อมูลต้นฉบับของเราได้บางส่วนด้วยการหมุน (ตกลงฉาย) กลับไปยังแกนเดิม

ป้อนคำอธิบายรูปภาพที่นี่

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

นี่คือรหัสที่ฉันใช้ในการสร้างตัวอย่างนี้ในกรณีที่คุณต้องการทำซ้ำด้วยตัวคุณเอง หากคุณลดความแปรปรวนขององค์ประกอบเสียงในบรรทัดที่สองจำนวนข้อมูลที่สูญเสียจากการแปลง PCA จะลดลงเช่นกันเนื่องจากข้อมูลจะมาบรรจบกันในองค์ประกอบหลักตัวแรก:

set.seed(123)
y2 = x + rnorm(n,0,.2)
mydata = cbind(x,y2)
m2 = colMeans(mydata)

p2 = prcomp(mydata, center=F, scale=F)
reduced2= cbind(p2$x[,1], rep(0, nrow(p2$x)))
recovered = reduced2 %*% p2$rotation

plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Data with principal component vectors')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+abs(p2$rotation[1,1])
       ,y1=m2[2]+abs(p2$rotation[2,1])
       , col='red')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+p2$rotation[1,2]
       ,y1=m2[2]+p2$rotation[2,2]
       , col='blue')

plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Data after PCA transformation')
points(p2$x, col='black', pch=3)
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+abs(p2$rotation[1,1])
       ,y1=m2[2]+abs(p2$rotation[2,1])
       , col='red')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+p2$rotation[1,2]
       ,y1=m2[2]+p2$rotation[2,2]
       , col='blue')
arrows(x0=mean(p2$x[,1])
      ,y0=0
      ,x1=mean(p2$x[,1])
      ,y1=1
      ,col='blue'
       )
arrows(x0=mean(p2$x[,1])
       ,y0=0
       ,x1=-1.5
       ,y1=0
       ,col='red'
)
lines(x=c(-1,1), y=c(2,-2), lty=2)


plot(p2$x, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='PCA dimensionality reduction')
points(reduced2, pch=20, col="blue")
for(i in 1:n){
  lines(rbind(reduced2[i,], p2$x[i,]), col='blue')
}

plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Lossy data recovery after PCA transformation')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+abs(p2$rotation[1,1])
       ,y1=m2[2]+abs(p2$rotation[2,1])
       , col='red')
arrows(x0=m2[1], y0=m2[2]
       ,x1=m2[1]+p2$rotation[1,2]
       ,y1=m2[2]+p2$rotation[2,2]
       , col='blue')
for(i in 1:n){
  lines(rbind(recovered[i,], mydata[i,]), col='blue')
}
points(recovered, col='blue', pch=20)

5
เดวิดโปรดงดเว้นข้อกำหนดในการใช้งาน "matrix matrix" (aka eigenvectors) และ "matrix matrix" สลับกันได้ เพื่อความบริสุทธิ์และไม่หลอกลวงผู้คน การโหลดใน PCA เป็นค่าลักษณะเฉพาะหลังจากปรับค่าลักษณะเฉพาะให้เป็นมาตรฐาน ขอบคุณ.
ttnphns

3
@ttphns ฉันคิดว่ามันสมบูรณ์ขึ้นอยู่กับแพ็คเกจที่คุณใช้ บ่อยครั้งที่ข้อกำหนดเหล่านี้ใช้แทนกันได้อย่างสมบูรณ์ พิจารณาการใช้งานของ "ภาระ" ที่นี่: utdallas.edu/~herve/abdi-awPCA2010.pdf นอกจากนี้ยังอ้างอิงฟังก์ชัน R prcompที่เมทริกการโหลดเป็นเพียงเมทริกซ์ที่มีคอลัมน์เป็นหน่วยไอเกน ฉันคิดว่าคุณมีความรู้ด้านเทคนิคที่ไม่จำเป็นและในกรณีส่วนใหญ่ฉันเชื่อว่าข้อกำหนดเหล่านี้ใช้แทนกันได้
David Marx

4
ขออภัยฉันไม่เห็นด้วย เหตุผล: จำไว้ว่าการโหลดมีความหมาย (และในความหมายเดียวกัน!) กับ PCA และการวิเคราะห์ปัจจัย การโหลดจะเปรียบเทียบโดยตรงกับสหสัมพันธ์ / โควาเรียส Eigenvectors การหมุนรอบตัว ในการวิเคราะห์ปัจจัยหลายวิธีไม่เกี่ยวข้องกับการหมุน ( ที่ระยะการสกัด) ดังนั้นการผสมคำสองคำนี้ทำให้นักเรียนเข้าใจผิดและควรหลีกเลี่ยง
ttnphns

จุดที่เล็กกว่า: การสะกดคำที่ถูกต้องอยู่เสมอและเป็น "หลักการ" เท่านั้นไม่ใช่ "หลักการ" ฉันแก้ไขตามนั้น แต่ภาพหนึ่งฉันไม่สามารถแก้ไขได้
Nick Cox

1
ภาพอื่นสามารถพบได้ที่นี่setosa.io/ev/principal-component-analysis
SIslam

2

ฉันจะบอกว่าคำถามของคุณเป็นคำถามที่ผ่านการรับรองไม่เพียงcross validatedแต่ในแต่ยังstack overflowที่คุณจะได้รับการบอกวิธีการใช้การลดขนาดใน R (.. ฯลฯ ) เพื่อช่วยให้คุณระบุได้อย่างมีประสิทธิภาพว่าคอลัมน์ / ตัวแปรใด ชุดข้อมูลทั้งหมด

PCA (การวิเคราะห์องค์ประกอบหลัก) มีฟังก์ชั่นเช่นเดียวกับ SVD (การแยกแยะมูลค่าเอกพจน์) และจริง ๆ แล้วเป็นกระบวนการเดียวกันที่แน่นอนหลังจากใช้scale/ การแปลง z ไปยังชุดข้อมูล

ต่อไปนี้เป็นแหล่งข้อมูลบางส่วนที่คุณสามารถผ่านได้ในครึ่งชั่วโมงเพื่อให้เข้าใจมากขึ้น

ฉันไม่สามารถให้โซลูชันการเข้ารหัสที่ชัดเจนเพื่อช่วยให้คุณเข้าใจวิธีการใช้งาน svd และสิ่งที่แต่ละองค์ประกอบทำ แต่คนยอดเยี่ยมนี่คือบทความที่ให้ข้อมูลที่ฉันเคยติดตามด้านแอปพลิเคชันของ SVD แม้ว่าฉันจะ รู้วิธีการคำนวณปัญหา 3by3 SVD ด้วยมือ .. :)

  1. Coursera Data Analysis Class โดย Jeff Leek: การบรรยายวิดีโอ / การบรรยายในชั้นเรียน
  2. โพสต์นักเรียนที่ให้ข้อมูลมาก
  3. โพสต์จากสมาคมคณิตศาสตร์อเมริกัน

ชั้นเรียนของ Jeff Leek นั้นดีมากสำหรับการรับรู้ถึงสิ่งที่คุณสามารถทำได้ด้วย PCA สิ่งที่ดีคือมันไม่ได้ลงรายละเอียดทางคณิตศาสตร์ / สถิติที่ซับซ้อน (ซึ่งสามารถพบได้ในที่อื่น ๆ มากมาย) แต่ให้วิธีการลงมือแสดงวิธีการใช้กับข้อมูลจริงๆ
โก้

1

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

ในตัวอย่างของคุณสมมติว่าเป้าหมายของคุณคือการวัดว่านักเรียนหรือคน“ ดี” เป็นอย่างไร การดูตัวแปรเหล่านี้ทั้งหมดอาจทำให้สับสนในการดูวิธีการทำสิ่งนี้ PCA ช่วยให้เราเห็นได้อย่างชัดเจนว่านักเรียนคนไหนดี / ไม่ดี

หากองค์ประกอบหลักตัวแรกอธิบายการเปลี่ยนแปลงส่วนใหญ่ของข้อมูลนี่คือทั้งหมดที่เราต้องการ คุณจะพบความสัมพันธ์ระหว่างองค์ประกอบนี้และตัวแปรทั้งหมด ความสัมพันธ์ "ใหญ่" หมายถึงตัวแปรสำคัญ ตัวอย่างเช่นองค์ประกอบแรกอาจมีความสัมพันธ์อย่างมากกับชั่วโมงการเรียนและคะแนนการทดสอบ ดังนั้นองค์ประกอบแรกที่มีค่าสูงจึงแสดงว่ามีเวลาในการศึกษาและคะแนนการทดสอบสูง

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