เป็นไปได้ไหมที่จะใช้ kernel PCA สำหรับการเลือกคุณสมบัติ?


9

เป็นไปได้หรือไม่ที่จะใช้การวิเคราะห์องค์ประกอบหลักของเคอร์เนล (kPCA) สำหรับ Latent Semantic Indexing (LSI) ในลักษณะเดียวกับที่ใช้ PCA

ฉันดำเนินการ LSI ใน R โดยใช้prcompฟังก์ชั่น PCA และแยกคุณสมบัติด้วยการโหลดสูงสุดจากองค์ประกอบแรก โดยที่ฉันได้รับคุณสมบัติการอธิบายองค์ประกอบที่ดีที่สุดk

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


คุณเคยลองใช้ฟังก์ชั่น princomp ไหม?
mariana soffer

คำตอบ:


6

ฉันคิดว่าคำตอบสำหรับคำถามของคุณเป็นลบ: เป็นไปไม่ได้

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

แต่ใน kernel PCA แต่ละองค์ประกอบหลักคือการรวมกันเชิงเส้นของคุณสมบัติในพื้นที่เป้าหมายและสำหรับเช่นเคอร์เนล Gaussian (ซึ่งใช้บ่อย) พื้นที่เป้าหมายคือมิติที่ไม่มีที่สิ้นสุด ดังนั้นแนวคิดของ "การโหลด" จึงไม่สมเหตุสมผลสำหรับ kPCA และในความเป็นจริงส่วนประกอบของเคอร์เนลหลักจะถูกคำนวณโดยตรงการข้ามการคำนวณของแกนหลัก (ซึ่งสำหรับ PCA มาตรฐานจะได้รับใน R ด้วยprcomp$rotation) โดยสิ้นเชิงขอบคุณสิ่งที่เรียกว่าเคล็ดลับเคอร์เนล ดูเช่นที่นี่: Kernel PCA ที่มีเคอร์เนลเชิงเส้นเทียบเท่ากับ PCA มาตรฐานหรือไม่ สำหรับรายละเอียดเพิ่มเติม

ดังนั้นไม่เป็นไปไม่ได้ อย่างน้อยก็ไม่มีวิธีง่ายๆ


2
(+1) ฉันคิดว่ามันง่ายที่จะอธิบายด้วยการเปรียบเทียบกับ SVM ซึ่งในพื้นที่เชิงเส้นคุณสามารถคำนวณน้ำหนักแต่ละตัวแปรที่มีส่วนร่วมในการแยกไฮเปอร์เพลน (ค่อนข้างสำคัญสำหรับใช้เลือกคุณลักษณะอย่างน้อย) ในพื้นที่เคอร์เนล ซับซ้อนเกินไปหรือเป็นไปไม่ได้เลยที่จะทำ ตรรกะเดียวกันที่นี่
Firebug

2

ตัวอย่างต่อไปนี้ (นำมาจากคู่มืออ้างอิง kernlab) แสดงวิธีเข้าถึงส่วนประกอบต่าง ๆ ของเคอร์เนล PCA:

data(iris)
test <- sample(1:50,20)
kpc <- kpca(~.,data=iris[-test,-5],kernel="rbfdot",kpar=list(sigma=0.2),features=2)

pcv(kpc)        # returns the principal component vectors
eig(kpc)        # returns the eigenvalues
rotated(kpc)    # returns the data projected in the (kernel) pca space
kernelf(kpc)    # returns the kernel used when kpca was performed

สิ่งนี้ตอบคำถามของคุณหรือไม่


ฉันลองหมุน (kpca) คิดว่ามันเหมือนกับ prcomp $ หมุน; ซึ่งก็คือ (ใช้รูปแบบ R ช่วย (prcomp)): "การหมุน: เมทริกซ์ของการโหลดตัวแปร (เช่นเมทริกซ์ที่มีคอลัมน์ที่มี eigenvectors)" อย่างไรก็ตามมันไม่ได้เป็น อย่างไรก็ตามคำถามก็มีความหมายทั่วไปเช่นกันเพราะฉันไม่แน่ใจว่า LSA / LSI เป็นไปได้โดยใช้การลดขนาดที่ไม่เป็นเชิงเส้นเลยหรือไม่
user3683

ขออภัย แต่ฉันอาจหายไปคำถาม; ทำไมคุณถึงคิดว่าการลดขนาดแบบไม่เชิงเส้นเป็นไปไม่ได้ใน LSA / LSI
Lalas

1
เพราะไม่มีการรวมกันเชิงเส้นของมิติ แต่สิ่งหนึ่งที่ขึ้นอยู่กับฟังก์ชันเคอร์เนล ในการตั้งค่านี้เป็นไปได้หรือไม่ที่จะกำหนดน้ำหนักหนึ่งมิติที่มีสำหรับองค์ประกอบหลัก (ไม่ใช่แบบเชิงเส้น)?
3683

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