इंटरेक्शन मॉडल में सबसे अच्छी विशेषताएं ढूँढना


13

मेरे पास उनके फीचर वैल्यू के साथ प्रोटीन की सूची है। एक नमूना तालिका इस तरह दिखती है:

...............Feature1...Feature2...Feature3...Feature4  
Protein1  
Protein2  
Protein3  
Protein4  

पंक्तियाँ प्रोटीन हैं और कॉलम विशेषताएं हैं।

मेरे पास प्रोटीनों की एक सूची भी है जो आपस में बातचीत करते हैं; उदाहरण के लिए

Protein3, Protein4  
Protein1, Protein2  
Protein4, Protein1  

समस्या : एक प्रारंभिक विश्लेषण के लिए, मैं जानना चाहता हूं कि कौन सी विशेषताएं प्रोटीन इंटरैक्शन के लिए सबसे अधिक योगदान देती हैं।

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


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

जवाबों:


25

प्रस्तुत समस्या को हल करने का वास्तविक नुस्खा (एक संभावित समाधान)

यह मेरे पसंदीदा मशीन-लर्निंग टूल का उपयोग करके इस समस्या को हल करने के लिए सीधा-सीधा है, vowpal wabbit जो अपने -q विकल्प के माध्यम से द्विघात (क्रॉस) सुविधाओं का समर्थन करता है।

vowpal wabbit पृष्ठभूमि

उपयोग विवरण में कूदने से पहले। vowpal wabbit वर्गीकरण और प्रतिगमन दोनों के लिए एक तेज़ और स्केलेबल ऑनलाइन मशीन-लर्निंग सॉफ़्टवेयर है। मुझे अपने डेस्कटॉप पर प्रति सेकंड लगभग 5 मिलियन सुविधाओं के सीखने (प्रशिक्षण) की दर मिलती है, क्योंकि ऑनलाइन लर्निंग टूल के रूप में इसकी कोई सीमा नहीं है क्योंकि ऑनलाइन लर्निंग टूल के रूप में इसे पूरे डेटा को मेमोरी में लोड करने की आवश्यकता नहीं है। इसकी कई अन्य आकर्षक विशेषताएं हैं: विभिन्न शिक्षण एल्गोरिदम, कई नुकसान कार्यों, विरल सुविधाओं, मिश्रित सुविधा प्रकार, और अधिक के लिए समर्थन, जो इस प्रश्न के दायरे से परे हैं।

टिप्पणी के साथ समस्या को हल करने के लिए यहां 3 चरण दिए गए हैं:

चरण ०: गितुब से स्वर चौपाई डाउनलोड करें और बनाएँ (समर्थित वातावरण पर नीचे ध्यान दें)

चरण 1: एक प्रशिक्षण-सेट तैयार करें जहाँ प्रत्येक पंक्ति इस तरह दिखती है:

1.0 protein1/protein2|A p1_feature1 p1_feature2 ... |B p2_feature1 ...
...

प्रशिक्षण-सेट प्रारूप की व्याख्या:

सबसे बाईं ओर, 1.0 , लेबल है (इंटरैक्शन स्ट्रेंथ, जो किसी भी संख्यात्मक मान हो सकता है), दूसरी स्ट्रिंग ' प्रोटीन 1 / प्रोटीन 2 ' लाइन को पहचान देने के लिए एक टैग है, आईओडब्ल्यू: "यह लाइन प्रोटीन 1 और के बीच बातचीत का प्रतिनिधित्व करती है। protein2 "; यह वैकल्पिक है, और आप इसे टिप्पणी के रूप में सोच सकते हैं। यह टैग-स्ट्रिंग मॉडल से भविष्यवाणियों में भी प्रतिध्वनित होता है कि कौन सी भविष्यवाणी किस उदाहरण से संबंधित है, यह पहचानने के लिए, लेकिन हम यहां भविष्यवाणी नहीं कर रहे हैं, हम सिर्फ मॉडलिंग कर रहे हैं और हमारे मॉडल का अध्ययन कर रहे हैं। इसके बाद प्रोटीन 1 के लिए इनपुट फीचर नाम का स्थान आता है |A(हमें एक नाम-स्थान को परिभाषित करने की आवश्यकता है ताकि हम विभिन्न नाम-स्थानों के बीच पार कर सकें, यह नहीं हैA, वास्तव में कोई भी शब्द हो सकता है, लेकिन पहले अक्षर में नाम रिक्त स्थान के बीच अंतर होना चाहिए ताकि हम उन्हें कमांड कॉल में पार कर सकें) प्रोटीन 1 के लिए इनपुट सुविधाओं की सूची के बाद p1_...। अंतिम में प्रोटीन 2 के लिए नाम-स्थान आता है: प्रोटीन 2 |Bके फीचर-नामों के बाद p2_...

वॉवेल वॉबिट की सुंदरियों में से एक यह है कि आप फीचर नामों के लिए मनमाने तार का उपयोग कर सकते हैं (यह उन्हें आंतरिक रूप से हैश नहीं करेगा, लेकिन आप परवाह नहीं करते हैं)। प्रशिक्षण सेट में केवल विशेष वर्ण हैं:

  • रिक्त स्थान (स्पष्ट रूप से)
  • |, इनपुट सुविधाओं और नाम-स्थानों को उपसर्ग करने के लिए, और
  • : सुविधा-नामों को उनके मूल्यों से अलग करने के लिए

यहां :इसका उपयोग नहीं किया गया है, क्योंकि हम मानते हैं कि प्रत्येक प्रोटीन सुविधा नाम एक बूलियन (अस्तित्व) का प्रतिनिधित्व करता है, इसलिए उनके मान डिफ़ॉल्ट होते हैं 1और उन्हें स्पष्ट मूल्यों की आवश्यकता नहीं होती है।

अब आप vowpal_wabbit (निष्पादन योग्य नाम है चला सकते हैं vw) के साथ -q ABसभी के बीच क्रॉस-सुविधाओं (बातचीत शर्तों उर्फ) जहां एक सुविधा से चयन किया जाता है सुविधाओं में से संभव जोड़े ऑटो बनाने के लिए protein1 (नाम अंतरिक्ष के साथ शुरू A) और से अन्य protein2 ( नाम-स्थान के साथ शुरू B)। vowpal_wabbit डेटा को पढ़ेगा, सीखेगा और प्रत्येक फीचर संयोजन के लिए वजन के साथ एक मॉडल तैयार करेगा, जिसके परिणामस्वरूप प्रोटीन की जोड़ी के बीच कुछ इंटरैक्शन होता है। यहां, vwसीधे चलने के बजाय , हम इसे vw-varinfoरैपर उपयोगिता के माध्यम से चलाएंगे , जो कि हमारे अंतिम चरण के रूप में, वॉवपाल वैबिट के साथ आता है। मॉडल बनाने के लिए vw-varinfoचलाता vwहै, और मानव-पठनीय रूप में मॉडल को डंप करता है।

चरण 3: कॉल vw-varinfo इस तरह:

vw-varinfo -q AB -c --passes 20 your_data_set_file

vw-varinfo सभी विकल्पों ( -q ... -c --passes ...) को पास करना है vw। केवल -q ABदो फीचर नाम-रिक्त स्थान को पार करने के लिए आवश्यक है। मैंने ऊपर एक और विकल्प जोड़ा (एकाधिक पास चलाएं), जो मुझे लगता है कि बेहतर परिणाम देगा।

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

उदाहरण इनपुट और आउटपुट

मान लीजिए कि आपके इनपुट में, prot.dat3 प्रोटीनों के बीच 3-तरफ़ा बातचीत शामिल है:

1.0 protein1/protein2|A a b |B k m
0.6 protein2/protein3|A k m |B b c d
2.2 protein1/protein3|A a b |B b c d

यह जानबूझकर बहुत ही न्यूनतर उदाहरण है। vwबहुत बड़े डेटा-सेट्स (जैसे लाखों पंक्तियों, सैकड़ों विशेषताओं) के साथ कोई समस्या नहीं होनी चाहिए, साथ ही, मैं उदाहरणों में इंटरैक्शन-ताकत लेबल को विविध करता हूं। यदि आपके मामले में इंटरैक्शन एक बूलियन "हां" या "नहीं" है, तो बस प्रत्येक पंक्ति में 1 फ़ील्ड के रूप में उपयोग करें 0(कोई इंटरैक्शन नहीं) या 1(इंटरैक्शन मौजूद है)।

चल रहा है:

vw-varinfo -q AB -c --passes 20 prot.dat

सभी संभावित इंटरैक्शन (नाम-स्थान Aऔर Bआउटपुट को अनदेखा करें ) और उनके वजन को प्राप्त करेंगे:

FeatureName        HashVal   MinVal   MaxVal    Weight   RelScore
A^k                 220268     0.00     1.00   +0.3804    100.00%
A^k^B^k             254241     0.00     0.00   +0.3804    100.00%
A^k^B^m              93047     0.00     0.00   +0.3804    100.00%
B^k                 178789     0.00     1.00   +0.1011     26.58%
B^m                  17595     0.00     1.00   +0.1011     26.58%
[... trimmed for brevity ...]
A^m^B^m             141879     0.00     0.00   +0.0000      0.00%
Constant            116060     0.00     0.00   +0.1515      0.00%
A^b                 139167     0.00     1.00   -0.0641    -16.86%
A^b^B^k             204424     0.00     0.00   -0.1233    -32.43%
A^b^B^m              43230     0.00     0.00   -0.1233    -32.43%

यह दिखाते हुए कि इस डेटा में सामान्य रूप से किसी भी इंटरैक्शन का सबसे मजबूत योगदानकर्ता हैं 1) सुविधा की मात्र उपस्थिति k, 2) kफीचर खुद के साथ इंटरैक्ट कर रहा है (यह मानते हुए कि दोनों प्रोटीन हैं), और 3) kके साथ इंटरैक्ट कर रहा है m। जबकि सबसे कमजोर (प्रोटीन बातचीत में नकारात्मक योगदान) bसुविधा के साथ जोड़ा जाता mहै।

यहाँ vw-varinfo पर एक HOWTO पेज है

vowpal wabbit स्रोत से बनाता है (ऊपर लिंक देखें) और लिनक्स (और संभवतः अन्य यूनिक्स), मैक ओएस-एक्स और विंडोज पर चलता है।

HTH


क्या इसका सीधा मतलब यह होगा कि कमजोर इंटरैक्शन को दूर करने से मॉडल सटीकता में सुधार होगा?
मैट

जरुरी नहीं। जब सीखने के लिए अधिक सुविधाएँ होती हैं, तो सटीकता अक्सर ऊपर जाती है। हालाँकि, यदि सुविधाएँ व्यवहार शोर में हैं, या सामान्य से दुर्लभ हैं, तो वे हो सकते हैं। अधिकांश वास्तविक जीवन के मॉडल में कुछ त्रुटि घटक होते हैं। अधिक डेटा मॉडल की सटीकता में उच्च विश्वास पैदा कर सकता है।
arielf

1

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


ग्राफ बाइनरी नहीं हो सकता है .. क्योंकि एक प्रोटीन एक से अधिक प्रोटीन के साथ बातचीत कर सकता है। क्या कई किनारों का विस्तार है?
अनीश

बाइनरी द्वारा मेरा मतलब यह नहीं है। सवाल यह है कि क्या आप बातचीत की तीव्रता को पकड़ना चाहते हैं , या क्या यह अपनी उपस्थिति को मॉडल करना चाहता है । ज़रूर, ग्राफ मॉडल प्रोटीन की किसी भी जोड़ी के बीच बातचीत के लिए जिम्मेदार हो सकता है।
एम्रे

हम्म .. मैं मान रहा हूं कि जब आप मुझसे प्रोटीन इंटरैक्शन के लिए एक चौकोर मैट्रिक्स बनाने के लिए कहते हैं, तो मैट्रिक्स के मूल्य प्रोटीन के बीच परस्पर क्रियाओं की संख्या का प्रतिनिधित्व करते हैं। लेकिन, मैं यह नहीं देखता कि हम यहाँ सुविधाओं का उपयोग कहाँ कर रहे हैं। क्या आप इसे विस्तार में बताने में सक्षम हैं?
अनीश

Eigenvectors फ़ीचर स्पेस में प्रोटीन का एक रैखिक संयोजन है।
एमरे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.