पीसीए घटकों का चयन करना जो समूहों को अलग करता है


13

मैं अक्सर पीसीए (सैकड़ों सैकड़ों चर और दर्जनों या सैकड़ों नमूनों के साथ ओमिक्स डेटा) का उपयोग करके अपने बहुभिन्नरूपी डेटा का निदान करता था। डेटा अक्सर कई समूहों को परिभाषित करने वाले कई स्पष्ट स्वतंत्र चर के साथ प्रयोगों से आते हैं, और मुझे अक्सर कुछ घटकों से गुजरना पड़ता है इससे पहले कि मैं उन लोगों को ढूंढ पाऊं जो ब्याज के समूहों के बीच अलगाव दिखाते हैं। मैं इस तरह के विभेदकारी घटकों को खोजने के बजाय एक प्राथमिक तरीका के साथ आया हूं, और मुझे आश्चर्य है

  1. यह किस हद तक उचित / न्यायसंगत है, और
  2. चाहे वही प्राप्त करने के बेहतर तरीके हों।

ध्यान दें कि यह खोजपूर्ण है। इससे पहले कि मैं किसी और को मना लूं, मैं खुद को समझाना चाहता हूं। अगर मुझे लगता है कि ऐसे घटक हैं जो स्पष्ट रूप से ब्याज के समूहों को अलग करते हैं (जैसे नियंत्रण बनाम उपचार), भले ही वे प्रतिक्रियाओं के विचरण के एक मामूली हिस्से के लिए ज़िम्मेदार हों, मुझे इसके परिणामस्वरूप, पर्यवेक्षण मशीन से अधिक विश्वास है सीख रहा हूँ।

यहाँ मेरा दृष्टिकोण है। मैं आर में pca3d से सेट "मेटाबो" उदाहरण डेटा का उपयोग करूंगा।

यह विचार करना है कि स्वतंत्र चर द्वारा घटक के प्रत्येक संस्करण को कितना समझाया जा सकता है। इसके लिए, मैं प्रत्येक घटक के लिए एक सरल मॉडल की गणना करता हूं और "सबसे दिलचस्प" से "दिलचस्प दिलचस्प" घटकों को ऑर्डर करने के लिए एक मीट्रिक के रूप में उपयोग करता हूं 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 )

यहाँ परिणाम है। भूखंड स्वतंत्र चर द्वारा समझाया प्रत्येक घटक के विचरण में प्रतिशत को दर्शाता है metabo[,1]

यहाँ छवि विवरण दर्ज करें

r2order( lm.r2, decreasing= TRUE )

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

यहाँ साजिश है:

यहाँ छवि विवरण दर्ज करें

(लाल और हरे रंग की श्रेणियां उन विषयों के दो समूह हैं जो रोगी नहीं हैं, और यह उम्मीद की जानी चाहिए कि उन्हें प्रतिष्ठित नहीं किया जा सकता है।)

मेरे प्रश्नों का सुधार करने के लिए,

  1. क्या यह दृष्टिकोण आपके लिए मायने रखता है? मेरी समस्या यह है कि यह डेटा ड्रेजिंग की तरह बहुत अधिक लगता है। इसके अलावा, सहज रूप से मुझे लगता है कि शायद मुझे तालिका को चालू करना चाहिए और पूछना चाहिए कि प्रत्येक चर द्वारा स्वतंत्र चर में विचरण के किस हिस्से को समझाया गया है? अंत में, मुझे (लगभग) यकीन है कि मैं पहिया को फिर से मजबूत कर रहा हूं, खराब तरीके से, इसलिए मेरा दूसरा सवाल है
  2. क्या इससे बेहतर कुछ है?

ध्यान दें कि मैं इस स्तर पर आंशिक रूप से कम से कम वर्ग या कुछ भी स्विच नहीं करना चाहता हूं; मैं सिर्फ अपने वर्गीकरण के संदर्भ में पीसीए का निदान करना चाहता हूं।


2
मैं आपके दिलचस्प सवाल के बारे में सिर्फ दो टिप्पणियां करना चाहता हूं। 1) अपने कोड को दिखाने के अलावा अपने दृष्टिकोण का वर्णन करें (याद रखें कि यहां लोग विभिन्न सॉफ़्टवेयर का उपयोग करते हैं, जरूरी नहीं कि आर)। 2) स्कैल्प्लॉट स्पाइक्स के बिना अपनी मंजिल तक बहुत अधिक आश्वस्त नहीं है। इसके अलावा, यदि आपको अपने दृष्टिकोण के बारे में कोई विशेष संदेह है, तो कृपया प्रश्न को अधिक केंद्रित बनाने के लिए उन्हें बोलें।
11

1
संपादित: स्पष्ट करने के लिए, आप पहले पीसीए का संचालन कर रहे हैं और फिर कुछ विशेष चर के द्वारा स्पष्ट किए गए प्रमुख घटकों को अलग करने की कोशिश कर रहे हैं? क्या आप एक डरावनी साजिश के साथ इनको पार कर रहे हैं? यह मामला हो सकता है कि कुछ x जिसे आप अपने डेटा सेट से बाहर निकालते हैं, एक प्रमुख घटक में बहुत से विचरण की व्याख्या करने के लिए होता है, लेकिन मुझे यकीन नहीं है कि यदि उस प्रमुख घटक के साथ विचरण बहुत कम है तो इसका कोई मतलब नहीं है।
छायाकार

1
R2

2
to find out what share of the overall variance in the data matrix is explained by a given classificationयदि आप यह जानना चाहते हैं तो आपको पीसीए की आवश्यकता नहीं है। बस कुल-सम-वर्गों के बीच-समूह सम-वर्गों के अनुपात की गणना करें: (SStotal-SSwithin)/SStotalजहाँ SSwithin समूह-योग सम-वर्गों में जमा है।
ttnphns

1
जिस तरह से आप पीसीए का शोषण करते हैं, उससे मुझे कोई समस्या नहीं दिखती है, लेकिन मुझे समझ नहीं आता कि आपको वास्तव में इसकी आवश्यकता क्यों है। (सिर्फ इसलिए कि आप इसे शायद पसंद करते हैं?) क्योंकि मैं आपका सटीक उद्देश्य नहीं देख सकता, मैं आपके लिए कुछ भी नहीं बता सकता Is there anything better?
ttnphns

जवाबों:


8

आपके प्रश्न # 1 का उत्तर हां, आपके समाधान में डेटा ड्रेजिंग है। आपके प्रश्न # 2 का उत्तर है हां, साहित्य में बेहतर तरीके हैं।

n<<p

आप एक विश्लेषण चला रहे हैं जो मुख्य घटक प्रतिगमन जैसा दिखता है, सिवाय इसके कि आपने अपने स्वतंत्र और आश्रित चर को स्वैप किया है, जिसके परिणामस्वरूप एक बड़ी बहुभिन्नरूपी ( एकाधिक के विपरीत ) प्रतिगमन विश्लेषण है। बहुभिन्नरूपी प्रतिगमन के लिए आवश्यक है कि आपका नमूना आकार निर्भर चर की संख्या से बड़ा हो, एक आवश्यकता जिसे आप अपने उदाहरण में पूरी तरह से उल्लंघन कर रहे हैं।

यदि आप वास्तव में अपने डेटा पर पीसीए चलाने के लिए प्रतिबद्ध हैं और फिर बहुभिन्नरूपी प्रतिगमन का उपयोग कर रहे हैं, तो आपको एक उपयुक्त विधि का उपयोग करना चाहिए। उदाहरण के लिए, एमआरसीई और संबंधित तरीकों में देखें [1]।

हालाँकि, आपके द्वारा की गई कुछ अजीब टिप्पणियों के बावजूद, आपके विश्लेषण में वर्तमान में प्रस्तुत सब कुछ बताता है कि आपका अंतिम लक्ष्य निरंतर चर (मेटाबो [, - 1]) के एक बड़े समूह और एकल श्रेणीगत चर (मेटियो) के बीच संबंधों की पहचान करना है। , 1])। पीसीए इसे पूरा करने का एक खराब तरीका है। हाई-डायमेंशनल मामले में इस समस्या के समाधान के दो सामान्य वर्ग हैं: पहला, समाधान जो स्पार्सिटी ग्रहण करते हैं, और एक फैक्टर संरचना मानने वाले समाधान।

स्पार्सिटी-आधारित समाधान आम तौर पर यह मानते हैं कि केवल बहुत कम अनुपात वाले चर वास्तव में ब्याज के स्पष्ट वैरिएबल से संबंधित हैं, और इस छोटे सबसेट को खोजने का प्रयास करते हैं; उदाहरण के लिए DALASS [2] देखें। फैक्टर-संरचना-आधारित विधियां मानती हैं कि आपके विभेदक चरों की श्रेणी में अव्यक्त चर की अभिव्यक्तियाँ हैं, जो स्पष्ट चर के साथ एक सच्चे संबंध हैं। विधियों के इस वर्ग का एक उदाहरण DLDA [3] है।

ध्यान दें कि जरूरी नहीं कि मैं आपके डेटा के लिए बताए गए किसी भी तरीके की सिफारिश कर रहा हूं; आपको अपने लक्ष्यों पर ध्यान देना चाहिए और एक उपयुक्त विधि का चयन करने में समस्या का प्राथमिक ज्ञान होना चाहिए।

[१] रोथमैन, लेविना, झू (२०१०)। कोवरियनस अनुमान के साथ विरल बहुभिन्नरूपी प्रतिगमन। कम्प्यूटेशनल और ग्राफिकल स्टेटिस्टिक्स जर्नल, वॉल्यूम 19, नंबर 4, पेज 947–962।

]

[३] यू, यांग (२००१)। मान्यता प्राप्त करने के लिए आवेदन के साथ उच्च-आयामी डेटा के लिए एक सीधा एलडीए एल्गोरिथ्म। पैटर्न मान्यता 34, 2067-2070।


2
मैंने इस जवाब को देने के लिए एक नया इनाम शुरू किया है।
जनवरी

1
@ जेनुअरी: यह एक अच्छा जवाब है, लेकिन मैं यह बताना चाहूंगा कि "डायरेक्ट एलडीए" एक बहुत ही अजीब एल्गोरिथ्म है , गाओ और डेविस को देखें , 2005, एलडीए को एलडीए के बराबर क्यों प्रत्यक्ष नहीं है : "हम यह प्रदर्शित करते हैं। .. डी-एलडीए सामान्य अनुप्रयोगों में एक महत्वपूर्ण प्रदर्शन सीमा लागू कर सकता है ", इसलिए इसके साथ सावधान रहें।
अमीबा का कहना है कि मोनिका

@amoeba उस प्रशस्ति पत्र के लिए धन्यवाद। मुझे कुछ समय के लिए DLDA के बारे में चिंता है, क्योंकि उस विशेष तरीके से घटकों के चयन का कोई औचित्य नहीं है। मैं इसे एक बहुत ही समस्या-विशिष्ट समाधान के रूप में देखता हूं जो जरूरी नहीं कि चेहरे की भेदभाव की समस्याओं से परे सामान्य हो, हालांकि इसे आसानी से किसी भी समस्या के साथ अनुकूलित किया जा सकता है जिसमें कुछ घटक भेदभाव के लिए सबसे उपयोगी होते हैं। हर कारक एक ग्रहणित कारक संरचना के साथ उच्च-आयामी भेदभाव को लागू करने से समस्याओं का सामना करना पड़ता है ... क्या आपने कोई बेहतर दृष्टिकोण पाया है? मुझे आपकी राय में यहाँ दिलचस्पी है।
13

nk

4

@ पहले से ही आपने एलडीए को पीसीए के वर्गीकरण एनालॉग के रूप में इंगित किया। दरअसल, ये दोनों विधियां एक-दूसरे से और PLS से भी संबंधित हैं:

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

II

np

PLS को LASSO की तरह एक नियमितीकरण के रूप में देखा जा सकता है, और विरल PLS भी उपलब्ध है (हालाँकि मैंने इसका उपयोग नहीं किया है: मेरा डेटा सामान्य PLS के लिए अधिक उपयुक्त है, जो स्पार्सिटी ग्रहण नहीं करता है)। विभिन्न नियमितीकरण विधियों की अच्छी चर्चा के लिए, उदाहरण के लिए सांख्यिकीय लर्निंग के तत्व देखें ।

np

T=X×W
L=X×B


L(n×k1)=T(n×m)B(m×k1)
L(n×k1)=X(n×p)W(p×m)B(m×k1)
L(n×k1)=X(n×p)B(p×k1)
LBBB

व्यावहारिक नोट: यदि आप आर में काम करते हैं, तो मेरे पास विकास के तहत एक पैकेज है जो पीएलएस-एलडीए और पीसीए-एलडीए मॉडल प्रदान करता है। अगर आप इसे आज़माना चाहते हैं तो मुझे बताएं।


डेटा ड्रेजिंग से बचने के लिए, आपको स्वतंत्र डेटा के साथ अपने अंतिम मॉडल (= इसके प्रदर्शन को मापने) को मान्य करने की आवश्यकता है।

यहां स्वतंत्र का मतलब है कि इस मामले (रोगी?) ने किसी भी तरह से मॉडल फिटिंग में योगदान नहीं दिया । विशेष रूप से,

  • किसी भी तरह के प्रीप्रोसेसिंग में प्रवेश नहीं किया, जिसमें कई मामले शामिल हैं, जैसे कि केंद्र या मानकीकरण
  • पीसीए / पीएलएस / ... गणना में प्रवेश नहीं किया।
  • हाइपरपरमेटर अनुमान के लिए उपयोग नहीं किया गया था।

जैसा कि आपके पास कुछ ही मामले हैं, फिर से शुरू करने की रणनीति उचित होगी। इस स्थिति में, हाइपरपरमेटर के अनुकूलन के लिए अपने प्रशिक्षण डेटा के एक दूसरे, आंतरिक विभाजन से बचने के लिए बाह्य ज्ञान द्वारा किसी भी हाइपरपरामेटर्स (जैसे पीसी या पीएलएस अव्यक्त चर, या एलएएसओ बाउंड की संख्या) को ठीक करना सबसे अच्छा है।


क्रॉस-मान्य मॉडल के लिए +1। अत्यंत महत्वपूर्ण। हालांकि, मैं ओपी @ जैनचेन से सुनना चाहूंगा, जिन्होंने कहा है कि उन्हें भेदभाव में कोई दिलचस्पी नहीं है, हालांकि उनकी / उनकी समस्या भेदभाव / वर्गीकरण विश्लेषण के अनुकूल है।
अहफॉस oss

मैं आपके इस कथन से असहमत हूं कि k- साधन / PCA / etc एक ही परिवार के हैं। इसका मतलब यह है कि वे एक ही मॉडल या एल्गोरिथ्म के विशेष मामले हैं, जो सच नहीं है। पीसीए एल्गोरिथ्म एक सरल मैट्रिक्स गणना है, जबकि के-साधन एक पुनरावृत्ति एल्गोरिथ्म है, जिसकी तुलना ईएम एल्गोरिथ्म से की गई है (तकनीकी रूप से सही नहीं है क्योंकि कोई संभावना फ़ंक्शन नहीं है, लेकिन फिर भी कुछ मामलों में एक उपयोगी तुलना आईएमएचओ है)।
अहफॉस oss

1
क्या आप plsgenomics :: pls.lda फ़ंक्शन की बात कर रहे हैं? यदि नहीं तो आपका पैकेज अलग / बेहतर कैसे है? मैं इच्छुक पाठकों को यह भी बताऊंगा कि पीएलएस-एलडीए सामान्य तौर पर एक डमी-कोडेड परिणाम चर के साथ पीएलएस चलाने की आमतौर पर इस्तेमाल की जाने वाली तकनीक से बेहतर है। हालांकि यह बाद का दृष्टिकोण आवश्यक रूप से गलत नहीं है, यह निश्चित रूप से मज़ेदार है, कम से कम नहीं क्योंकि आप शून्य से कम या एक से अधिक होने की अनुमानित संभावनाएं प्राप्त कर सकते हैं!
अहमफोस ah ’

@ahfoss: मेरा मतलब एल्गोरिदम नहीं था, क्योंकि एक ही अंतर्निहित मॉडल की गणना अलग-अलग एल्गोरिदम द्वारा की जा सकती थी। उदाहरण के लिए पीसीए के लिए आप पुनरावृत्त (NIPALS, POWER) या गैर-पुनरावृत्त (EVD, SVD) एल्गोरिदम का उपयोग कर सकते हैं। हो सकता है कि k- साधनों के बजाय एक बेहतर शब्द "क्लस्टर विश्लेषण को वर्गों के क्लस्टर योग के भीतर न्यूनतम किया गया हो, जिसके लिए उदाहरण के लिए k- साधन एक अनुमानी अनुमान है"। मेरे पास अभी समय नहीं है, बाद में जवाब देखूंगा या हम चैट रूम में मिल सकते हैं और बेहतर विवरण पा सकते हैं।
SX

1
... एक तकनीकी अंतर यह है कि मैं pls::plsrpls के लिए उपयोग करता हूं (जो विभिन्न एल्गोरिदम से चुनने की अनुमति देता है)। और मेरे पास मॉडल को फ़्लिप करने और घुमाने के लिए पोस्ट-प्रोसेसिंग फ़ंक्शन का एक गुच्छा है, जो कभी-कभी व्याख्या के लिए उपयोगी होता है।
SX
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.