Sử dụng phân tích thành phần chính (PCA) để lựa chọn tính năng


54

Tôi chưa quen với lựa chọn tính năng và tôi đã tự hỏi làm thế nào bạn sẽ sử dụng PCA để thực hiện lựa chọn tính năng. PCA có tính điểm tương đối cho từng biến đầu vào mà bạn có thể sử dụng để lọc ra các biến đầu vào không phù hợp không? Về cơ bản, tôi muốn có thể đặt hàng các tính năng gốc trong dữ liệu theo phương sai hoặc lượng thông tin có trong đó.

Câu trả lời:


75

Ý tưởng cơ bản khi sử dụng PCA làm công cụ để lựa chọn tính năng là chọn các biến theo độ lớn (từ lớn nhất đến nhỏ nhất trong các giá trị tuyệt đối) của các hệ số của chúng ( tải ). Bạn có thể nhớ lại rằng PCA tìm cách thay thế các biến (ít nhiều tương quan) bằng k < p kết hợp tuyến tính không tương quan (các phép chiếu) của các biến ban đầu. Hãy để chúng tôi bỏ qua làm thế nào để chọn một k tối ưu cho vấn đề trong tay. Các thành phần chính k được xếp hạng theo mức độ quan trọng thông qua phương sai được giải thích của chúng và mỗi biến đóng góp với mức độ khác nhau cho từng thành phần. Sử dụng tiêu chí phương sai lớn nhất sẽ giống với tính năng trích xuấtpk<pkk , trong đó thành phần chính được sử dụng làm tính năng mới, thay vì các biến ban đầu. Tuy nhiên, chúng ta có thể quyết định chỉ giữ thành phần đầu tiên và chọn các biến có hệ số tuyệt đối cao nhất; số j có thể dựa trên tỷ lệ của số lượng biến (ví dụ: chỉ giữ 10% số biến p hàng đầu ) hoặc mức cắt cố định (ví dụ: xem xét ngưỡng về các hệ số chuẩn hóa). Cách tiếp cận này có một số điểm tương đồng với toán tử Lasso trong hồi quy bị phạt (hay hồi quy PLS ). Không phải giá trị của j , cũng như số lượng thành phần cần giữ lại là những lựa chọn rõ ràng.j<pjpj

Vấn đề với việc sử dụng PCA là (1) các phép đo từ tất cả các biến ban đầu được sử dụng trong phép chiếu đến không gian chiều thấp hơn, (2) chỉ các mối quan hệ tuyến tính được xem xét và (3) các phương pháp dựa trên PCA hoặc SVD cũng vậy như các phương pháp sàng lọc đơn biến (kiểm tra t, tương quan, v.v.), không tính đến tính chất đa biến tiềm năng của cấu trúc dữ liệu (ví dụ: tương tác bậc cao hơn giữa các biến).

Về điểm 1, một số phương pháp sàng lọc phức tạp hơn đã được đề xuất, ví dụ như phân tích tính năng chính hoặc phương pháp từng bước, giống như phương pháp được sử dụng để ' cạo gen ' trong các nghiên cứu biểu hiện gen. Ngoài ra, PCA thưa thớt có thể được sử dụng để thực hiện giảm kích thước và lựa chọn biến dựa trên tải trọng biến kết quả. Về điểm 2, có thể sử dụng kernel PCA (sử dụng thủ thuật kernel ) nếu người ta cần nhúng các mối quan hệ phi tuyến tính vào một không gian chiều thấp hơn. Cây quyết định , hay tốt hơn là thuật toán rừng ngẫu nhiên , có thể giải quyết tốt hơn Điểm 3. Cái sau cho phép rút ra các biện pháp dựa trên Gini hoặc hoán vị có tầm quan trọng khác nhau .

Điểm cuối cùng: Nếu bạn có ý định thực hiện lựa chọn tính năng trước khi áp dụng mô hình phân loại hoặc hồi quy, hãy đảm bảo xác thực chéo toàn bộ quá trình (xem §7.10.2 của Yếu tố học thống kê , hoặc Ambroise và McLachlan, 2002 ).


Vì bạn có vẻ quan tâm đến giải pháp R, tôi khuyên bạn nên xem gói caret bao gồm rất nhiều chức năng tiện dụng để xử lý trước dữ liệu và lựa chọn biến trong bối cảnh phân loại hoặc hồi quy.


1
Có rất nhiều thông tin tốt ở đây, nhưng tôi ngạc nhiên rằng không có đề cập đến EFA. Tôi nghĩ rằng phân tích nhân tố là phù hợp để giảm tính năng lựa chọn / chiều, và PCA thực sự chỉ phù hợp để biểu diễn lại dữ liệu của bạn sao cho các biến không tương quan. Tôi đoán bạn không đồng ý?
gung - Phục hồi Monica

3
np

Đây rõ ràng là một vấn đề khó khăn, nhiều sắc thái. Vì bạn biết nhiều về nó hơn tôi, tôi quan tâm đến ý kiến ​​của bạn. +1, btw.
gung - Phục hồi Monica

2
Hai bình luận. Trước tiên, bạn đề cập đến kPCA như một giải pháp khả thi cho điểm 2. Nhưng làm thế nào kPCA có thể được sử dụng để lựa chọn tính năng, khi các hàm riêng / tải trọng không có sẵn ở đó? Có một câu hỏi thêm về điều đó, và tôi lập luận rằng nó không thể . Thứ hai, đoạn thứ hai của bạn trước đoạn cuối có thể cải thiện rất nhiều nếu bạn đề cập đến LASSO, như một cách ưa thích (?) Để thực hiện lựa chọn tính năng trong hồi quy. Chủ đề này vẫn rất phổ biến và nhiều câu hỏi được đóng lại như các bản sao của nó, vì vậy điều quan trọng là câu trả lời của bạn phải xuất sắc nhất có thể!
amip nói phục hồi Monica

@chl, cảm ơn câu trả lời đầy thông tin của bạn. Bạn nói về "quyết định chỉ giữ lại thành phần đầu tiên". Tại sao chỉ có thành phần đầu tiên? Với một thành phần, thật dễ dàng để xếp hạng các tính năng / biến. Làm thế nào bạn sẽ làm điều đó với nhiều thành phần, nói 3? Làm thế nào để bạn xếp hạng các biến trên các thành phần? Tôi cho rằng bạn có thể đi qua từng thành phần chính và chọn tính năng có tải lớn nhất từ ​​thành phần chính đó, từ bộ tính năng chưa được chọn. Chúng một lần nữa có thể được chọn bởi một số (j) hoặc bởi một hệ số chuẩn hóa. Bạn có đồng ý không?
Sàng

6

Cho một tập hợp các tính năng N, phân tích PCA sẽ tạo ra (1) tổ hợp tuyến tính của các tính năng có phương sai cao nhất (thành phần PCA đầu tiên), (2) kết hợp tuyến tính với phương sai cao nhất trong không gian con trực giao với thành phần PCA đầu tiên, v.v. (trong điều kiện ràng buộc là các hệ số của tổ hợp tạo thành một vectơ với chỉ tiêu đơn vị) Việc kết hợp tuyến tính với phương sai tối đa có phải là một tính năng "tốt" hay không thực sự phụ thuộc vào những gì bạn đang cố gắng dự đoán. Vì lý do này, tôi muốn nói rằng là một thành phần PCA và là một tính năng "tốt" là (nói chung) hai khái niệm không liên quan.


(-1) Tôi không thấy cách này trả lời câu hỏi ban đầu.
amip nói rằng Phục hồi lại

-1

Bạn không thể đặt hàng các tính năng theo phương sai của chúng, vì phương sai được sử dụng trong PCA về cơ bản là một thực thể đa chiều. Bạn chỉ có thể sắp xếp các tính năng bằng cách chiếu phương sai theo hướng nhất định mà bạn chọn (thường là compnonet chính đầu tiên.) Vì vậy, nói cách khác, một tính năng có nhiều phương sai hơn bao phấn hay không phụ thuộc vào cách bạn chọn hướng chiếu.


2
Tôi không hiểu: mỗi tính năng ban đầu có một phương sai, và do đó, một tính năng chắc chắn có thể "đặt hàng các tính năng theo phương sai của chúng". Hơn nữa, tôi không hiểu làm thế nào người ta có thể ra lệnh cho họ "bằng cách chiếu phương sai theo hướng nhất định mà bạn chọn". Ý bạn là như thế nào?
amip nói rằng Tái lập lại Monica

Bạn thực sự có thể sử dụng phương sai để đặt hàng các tính năng, chỉ cần điều đó có liên quan đến PCA, điều này xử lý tất cả các tính năng với nhau.
James LI

Về phép chiếu: Nếu bạn có n tính năng, vectơ chỉ là một vectơ đơn vị trong không gian n chiều; hình chiếu của vectơ m của bạn là sản phẩm tỷ lệ của vectơ thể hiện với vectơ đơn vị đó, kết quả là vectơ sáng. Và phương sai của vectơ m chiều này là "phép chiếu" phương sai của tập dữ liệu theo hướng đã chọn.
James LI

1
-1. Tôi nghĩ rằng mỗi một trong ba câu trong câu trả lời của bạn là sai hoặc không rõ ràng đến mức nó gây hiểu nhầm. Tôi đồng ý với tất cả những gì bạn viết trong các bình luận, nhưng tôi không biết câu trả lời của bạn có thể diễn giải như thế nào. "Bạn không thể đặt hàng các tính năng theo phương sai của chúng" - ?? "Bạn chỉ có thể sắp xếp các tính năng bằng cách chiếu phương sai theo hướng nhất định" - ?? "Liệu một tính năng có nhiều phương sai hơn ... phụ thuộc ..." - ?? Tất cả điều đó là sai.
amip nói rằng Tái lập lại Monica

2
Tôi đã không biết rằng câu hỏi này đã được hỏi từ rất lâu rồi; và tôi đồng ý với hầu hết các phản hồi này. Quan điểm của tôi là: PCA không phù hợp để lựa chọn tính năng. Chỉ không ai ở đây muốn nói điều này trực tiếp.
James LI
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.