Chọn các thành phần PCA phân tách các nhóm


13

Tôi thường sử dụng để chẩn đoán dữ liệu đa biến của mình bằng PCA (dữ liệu omics với hàng trăm ngàn biến và hàng chục hoặc hàng trăm mẫu). Dữ liệu thường đến từ các thử nghiệm với một số biến độc lập phân loại xác định một số nhóm và tôi thường phải trải qua một vài thành phần trước khi tôi có thể tìm thấy các biến thể hiện sự tách biệt giữa các nhóm quan tâm. Tôi đã nghĩ ra một cách khá sơ khai để tìm các thành phần phân biệt đối xử như vậy, và tôi tự hỏi

  1. đến mức nào thì điều này là hợp lý / chính đáng, và
  2. cho dù có những cách tốt hơn để đạt được như nhau.

Lưu ý rằng đây là thăm dò. Trước khi tôi thuyết phục bất cứ ai khác, tôi muốn thuyết phục bản thân mình. Nếu tôi thấy rằng có những thành phần phân biệt rõ ràng các nhóm lợi ích (ví dụ: kiểm soát so với điều trị), ngay cả khi chúng chịu trách nhiệm cho một phần nhỏ của phương sai của các phản hồi, tôi tin tưởng nó hơn là kết quả từ máy có giám sát học tập.

Đây là cách tiếp cận của tôi. Tôi sẽ sử dụng tập dữ liệu ví dụ "metabo" từ pca3d trong R.

Ý tưởng là để đánh giá mức độ sai lệch của từng thành phần có thể được giải thích bằng biến độc lập. Đối với điều này, tôi tính toán một mô hình đơn giản cho từng thành phần và sử dụng làm số liệu để sắp xếp các thành phần từ "thú vị nhất" đến "ít thú vị nhất".R2

require( pca3d )
# data on metabolic profiles of TB patients and controls
data( metabo )
# first column is the independent variable
pca <- prcomp( metabo[,-1], scale.= T ) 

# create a model for each component
lm.m <- lm( pca$x ~ metabo[,1] )
lm.s <- summary( lm.m )
lm.r2 <- sapply( lm.s, function( x ) x$r.squared )
plot( lm.r2, type= "l" )
text( 1:length( lm.r2 ), lm.r2, 1:length( lm.r2 ), pos= 3 )

Đây là kết quả. Biểu đồ cho thấy tỷ lệ phần trăm chênh lệch của từng thành phần được giải thích bởi biến độc lập trong metabo[,1].

nhập mô tả hình ảnh ở đây

Chúng ta có thể sắp xếp các thành phần theo để tìm ra thành phần nào sẽ hiển thị ; ba thành phần đầu tiên là 2, 1 và 7.r2order( lm.r2, decreasing= TRUE )

pca3d( pca, components= c( 1, 2, 7 ), group= metabo[,1] )

Đây là cốt truyện:

nhập mô tả hình ảnh ở đây

(Các loại màu đỏ và màu xanh lá cây là hai nhóm đối tượng không phải là bệnh nhân và dự kiến ​​chúng không thể được phân biệt.)

Để cải cách câu hỏi của tôi,

  1. Liệu cách tiếp cận này có ý nghĩa với bạn? Vấn đề của tôi là nó trông quá giống như nạo vét dữ liệu. Ngoài ra, theo trực giác tôi nghĩ có lẽ tôi nên xoay bảng và hỏi phần nào của phương sai trong biến độc lập được giải thích bởi mỗi biến? Cuối cùng, tôi (gần như) chắc chắn rằng tôi đang phát minh lại bánh xe, thật tệ, vì vậy câu hỏi thứ hai của tôi là
  2. Có gì tốt hơn không?

Lưu ý rằng tôi không muốn chuyển sang bình phương tối thiểu một phần hoặc bất cứ thứ gì tương tự ở giai đoạn này; Tôi chỉ muốn chẩn đoán PCA trong bối cảnh phân loại của tôi.


2
Tôi muốn đưa ra hai nhận xét về câu hỏi thú vị của bạn. 1) Mô tả bằng từ ngữ cách tiếp cận của bạn bên cạnh việc hiển thị mã của nó (hãy nhớ rằng mọi người ở đây sử dụng nhiều phần mềm khác nhau, không nhất thiết phải là R). 2) Scatterplot không có nhiều sức thuyết phục nếu không tăng đột biến lên sàn của nó. Ngoài ra, nếu bạn có bất kỳ nghi ngờ cụ thể nào về cách tiếp cận của mình, vui lòng nói ra để làm cho câu hỏi tập trung hơn.
ttnphns

1
đã chỉnh sửa: Để làm rõ, trước tiên bạn tiến hành PCA và sau đó cố gắng cô lập các thành phần chính được giải thích tốt nhất bằng một số biến cụ thể? Bạn có xác nhận chéo những điều này với một âm mưu scree? Có thể xảy ra trường hợp một số x bạn chọn trong bộ dữ liệu của mình xảy ra để giải thích rất nhiều phương sai trong thành phần chính, nhưng tôi không chắc điều đó có nghĩa gì nếu phương sai rất thấp dọc theo thành phần chính đó.
Shadowtalker

1
R2

2
to find out what share of the overall variance in the data matrix is explained by a given classificationNếu chỉ muốn biết điều này bạn không cần PCA. Chỉ cần tính tỷ lệ giữa các bình phương giữa các nhóm với tổng bình phương: (SStotal-SSwithin)/SStotaltrong đó SSwithin là tổng bình phương trong nhóm.
ttnphns

1
Tôi không thấy bất kỳ vấn đề nào với cách bạn khai thác PCA, nhưng tôi không hiểu tại sao bạn thực sự cần nó. (Chỉ vì bạn thích nó có lẽ?) Bởi vì tôi không thể thấy mục tiêu chính xác của bạn, tôi không thể nói bất cứ điều gì cho bạn Is there anything better?.
ttnphns

Câu trả lời:


8

Câu trả lời cho câu hỏi số 1 của bạn là có, giải pháp của bạn tương đương với việc nạo vét dữ liệu. Câu trả lời cho câu hỏi số 2 của bạn là có, có những phương pháp ưu việt trong tài liệu.

n<<p

Bạn đang chạy một phân tích tương tự như hồi quy thành phần chính, ngoại trừ việc bạn đã hoán đổi các biến độc lập và phụ thuộc của mình, dẫn đến phân tích hồi quy đa biến (trái ngược với nhiều ). Hồi quy đa biến yêu cầu kích thước mẫu của bạn lớn hơn số lượng biến phụ thuộc, một yêu cầu mà bạn đang vi phạm triệt để trong ví dụ của mình.

Nếu bạn thực sự cam kết chạy PCA trên dữ liệu của mình và sau đó sử dụng hồi quy đa biến, bạn phải sử dụng một phương pháp thích hợp. Ví dụ, xem xét MRCE và các phương pháp liên quan [1].

Tuy nhiên, mặc dù có một vài nhận xét khó hiểu mà bạn đã đưa ra, mọi thứ trong phân tích của bạn như được trình bày hiện nay cho thấy mục tiêu cuối cùng của bạn là xác định mối quan hệ giữa một tập hợp lớn các biến liên tục (metabo [, - 1]) và một biến phân loại duy nhất (metabo [ , 1]). PCA là một cách kém để thực hiện điều này. Có hai loại giải pháp chung cho vấn đề này trong trường hợp chiều cao: thứ nhất, các giải pháp giả định độ thưa và các giải pháp giả định cấu trúc nhân tố.

Các giải pháp dựa trên độ thưa thớt thường cho rằng chỉ có một tỷ lệ rất nhỏ các biến thực sự có liên quan đến biến quan tâm phân loại và cố gắng tìm tập hợp nhỏ này; ví dụ xem DALASS [2]. Các phương pháp dựa trên cấu trúc nhân tố cho rằng các biến phân biệt đối xử của bạn là biểu hiện của các biến tiềm ẩn tiềm ẩn có mối quan hệ thực sự với biến phân loại. Một ví dụ về lớp phương thức này là DLDA [3].

Lưu ý rằng tôi không nhất thiết phải đề xuất bất kỳ phương pháp nào tôi đã đề cập cho dữ liệu của bạn; bạn phải xem xét cẩn thận mục tiêu của mình và kiến ​​thức chuyên môn về vấn đề trong việc lựa chọn một phương pháp phù hợp.

[1] Rothman, Levina, Zhu (2010). Hồi quy đa biến thưa thớt với ước lượng hiệp phương sai. Tạp chí thống kê tính toán và đồ họa, tập 19, số 4, trang 947 điện962.

[2] Nickolay T. Trendafilov, Ian T. Jolliffe, DALASS: Lựa chọn biến trong phân tích phân biệt thông qua LASSO, Phân tích dữ liệu và thống kê tính toán, Tập 51, Số 8, ngày 1 tháng 5 năm 2007, Trang 3718-3736.

[3] Yu, Yang (2001). Một thuật toán LDA trực tiếp cho dữ liệu chiều cao với ứng dụng nhận dạng khuôn mặt. Nhận dạng mẫu 34, 2067-2070.


2
Tôi đã bắt đầu một tiền thưởng mới để trao giải cho câu trả lời này.
tháng

1
@January: Đây là một câu trả lời tốt đẹp, nhưng tôi muốn chỉ ra rằng "LDA trực tiếp" là một thuật toán rất lạ lúc tốt nhất , xem Gao và Davis, 2005, Tại sao LDA trực tiếp là không tương đương với LDA : "chúng tôi chứng minh rằng. .. D-LDA có thể áp đặt một giới hạn hiệu suất đáng kể trong các ứng dụng chung ", vì vậy hãy cẩn thận với nó.
amip nói rằng Phục hồi Monica

@amoeba Cảm ơn bạn đã trích dẫn. Tôi đã có những lo ngại về DLDA trong một thời gian, vì không có lý do nào để chọn các thành phần theo cách cụ thể đó. Tôi thấy đó là một giải pháp rất cụ thể, không nhất thiết phải khái quát hóa ngoài các vấn đề phân biệt đối mặt, mặc dù nó có thể dễ dàng thích nghi với bất kỳ vấn đề nào với một số kiến ​​thức về thành phần nào hữu ích nhất cho phân biệt đối xử. Mọi giải pháp thực hiện phân biệt đối xử chiều cao với cấu trúc yếu tố giả định đều gặp phải vấn đề ... bạn đã tìm thấy cách tiếp cận nào tốt hơn chưa? Tôi quan tâm đến ý kiến ​​của bạn ở đây.
ahfoss

n«k

4

@ahfoss đã chỉ cho bạn LDA là chất tương tự phân loại cho PCA. Trên thực tế, hai phương pháp này có liên quan với nhau và cả PLS:

nature of dependent variable (for supervised)     unsupervised    supervised
or structure of data (unsupervised)
continuous                                        PCA             PLS
factor/groups/classes                                             LDA

TôiTôi

n«p

PLS có thể được coi là một quy trình chính quy như LASSO, và cũng có sẵn PLS thưa thớt (mặc dù tôi chưa sử dụng nó: dữ liệu của tôi phù hợp hơn với PLS bình thường, không giả định về độ thưa thớt). Để có một cuộc thảo luận tốt đẹp về các phương pháp chính quy hóa khác nhau, hãy xem ví dụ: Các yếu tố của học thống kê .

n»p

T= =X×W
L= =X×B


L'(n×k-1)= =T(n×m)B'(m×k-1)
L(n×k-1)= =X(n×p)W(p×m)B'(m×k-1)
L(n×k-1)= =X(n×p)B"(p×k-1)
L'B"B'B

Lưu ý thực tế: trong trường hợp bạn làm việc trong R, tôi có một gói đang được phát triển cung cấp các mô hình PLS-LDA và PCA-LDA. Hãy cho tôi biết nếu bạn muốn thử.


Để tránh nạo vét dữ liệu, bạn cần xác thực mô hình cuối cùng của mình (= đo hiệu suất của nó) với dữ liệu độc lập.

Độc lập ở đây có nghĩa là trường hợp này (bệnh nhân?) Không đóng góp cho mô hình phù hợp theo bất kỳ cách nào. Đặc biệt,

  • đã không nhập bất kỳ loại tiền xử lý nào liên quan đến nhiều trường hợp, chẳng hạn như định tâm hoặc tiêu chuẩn hóa
  • đã không nhập tính toán PCA / PLS / ....
  • đã không được sử dụng để ước tính siêu tham số.

Vì bạn chỉ có một vài trường hợp, một chiến lược lấy mẫu lại sẽ phù hợp. Trong tình huống này, có lẽ tốt nhất là sửa bất kỳ siêu đường kính nào (như số lượng PC hoặc PLS tiềm ẩn, hoặc LASSO bị ràng buộc) bằng kiến ​​thức bên ngoài để tránh phân tách dữ liệu đào tạo thứ hai của bạn để tối ưu hóa siêu tham số.


+1 cho các mô hình xác thực chéo. Vô cùng quan trọng. Tuy nhiên, tôi muốn nghe từ OP @Janemony, người đã tuyên bố rằng anh ta không quan tâm đến sự phân biệt đối xử, mặc dù vấn đề của anh ta / cô ta có vẻ rất phù hợp với phân tích phân biệt / phân loại.
ahfoss

Tôi không đồng ý với khẳng định của bạn rằng k-nghĩa / PCA / vv thuộc về cùng một gia đình. Điều này ngụ ý rằng chúng là những trường hợp đặc biệt của cùng một mô hình hoặc thuật toán, điều này không đúng. Thuật toán PCA là một phép tính ma trận đơn giản, trong khi k-mean là thuật toán lặp được so sánh với thuật toán EM (không đúng về mặt kỹ thuật vì không có chức năng khả năng, nhưng vẫn là một so sánh hữu ích trong một số khía cạnh IMHO).
ahfoss

1
Bạn đang đề cập đến chức năng xinenomomics :: pls.lda? Nếu không làm thế nào là gói của bạn khác nhau / cải thiện? Tôi cũng sẽ chỉ ra cho độc giả quan tâm rằng nói chung PLS-LDA vượt trội hơn so với kỹ thuật thường được sử dụng là chạy PLS đơn giản với biến kết quả được mã hóa giả. Mặc dù cách tiếp cận sau này không nhất thiết là không chính xác, nhưng nó chắc chắn là bùn, nhất là bởi vì bạn có thể có được xác suất dự đoán nhỏ hơn 0 hoặc lớn hơn một!
ahfoss

@ahfoss: Tôi không có nghĩa là các thuật toán, vì cùng một mô hình cơ bản có thể được tính toán bằng các thuật toán khác nhau. Ví dụ, đối với PCA, bạn có thể sử dụng thuật toán lặp (NIPALS, POWER) hoặc không lặp (EVD, SVD). Có lẽ một thuật ngữ tốt hơn thay vì phương tiện k sẽ là "phân tích cụm tối thiểu hóa tổng bình phương trong cụm, trong đó, ví dụ k-nghĩa là một xấp xỉ heuristic". Bây giờ tôi không có thời gian, sẽ xem qua câu trả lời sau hoặc chúng ta có thể gặp nhau trong phòng trò chuyện và tìm một mô tả tốt hơn.
cbeleites hỗ trợ Monica

1
... Một sự khác biệt kỹ thuật là tôi sử dụng pls::plsrcho xin (cho phép chọn từ các thuật toán khác nhau). Và tôi có một loạt các chức năng xử lý hậu kỳ, ví dụ như lật và xoay mô hình, đôi khi rất hữu ích cho việc giải thích.
cbeleites hỗ trợ Monica
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.