कौन सा सांख्यिकीय वर्गीकरण एल्गोरिदम इनपुट के अनुक्रम के लिए सही / गलत की भविष्यवाणी कर सकता है?


15

इनपुट के अनुक्रम को देखते हुए, मुझे यह निर्धारित करने की आवश्यकता है कि क्या इस अनुक्रम में एक निश्चित वांछित संपत्ति है। संपत्ति केवल सही या गलत हो सकती है, अर्थात्, केवल दो संभावित वर्ग हैं जो एक अनुक्रम से संबंधित हो सकते हैं।

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

उदाहरण प्रशिक्षण डेटा:

Sequence 1: (7 5 21 3 3) -> true
Sequence 2: (21 7 5 1) -> true
Sequence 3: (12 21 7 5 11 1) -> false
Sequence 4: (21 5 7 1) -> false
...

मोटे शब्दों में, संपत्ति अनुक्रम में मूल्यों के सेट द्वारा निर्धारित की जाती है (उदाहरण के लिए "11 की उपस्थिति" का अर्थ है कि संपत्ति लगभग निश्चित रूप से झूठी होगी), साथ ही मूल्यों का क्रम भी (जैसे "21 7 5) "काफी संभावना बढ़ जाती है कि संपत्ति सच है)।

प्रशिक्षण के बाद, मुझे क्लासिफायर को पहले से अनदेखा अनुक्रम देने में सक्षम होना चाहिए, जैसे (1 21 7 5 3), और यह अपने आत्मविश्वास का उत्पादन करना चाहिए कि संपत्ति सच है। क्या इस तरह के इनपुट / आउटपुट के साथ एक क्लासिफायरियर प्रशिक्षण के लिए एक प्रसिद्ध एल्गोरिथ्म है?

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


क्या आपके पास दृश्यों की एक जोड़ी के बीच की दूरी को मापने का तरीका है? न्यूनतम और / या अधिकतम अनुक्रम लंबाई ज्ञात है?
क्रेग राइट 21

@CraigWright कोई लागू दूरी उपाय नहीं है जिसके बारे में मैं सोच सकता हूं। 12 के आदेश पर अधिकतम लंबाई और न्यूनतम 4 के आसपास मान लिया जा सकता है। इसके अलावा, लगभग 30 अलग-अलग मूल्य हैं (वे अबाधित भीलों नहीं हैं; बस संभावनाओं का एक छोटा सा सेट)
रोमन स्टार्कोव

आपके एकाधिक प्रतिक्रिया चर क्या हैं? मैं आपकी समस्या पढ़ रहा था क्योंकि यह एक बाइनरी आउटपुट है और शायद आप डमी वैरिएबल Var1.1, Var1.12, ..., Var12.12
B_Miner

@B_Miner मुझे गलतफहमी हो सकती है कि एचएमएम कैसे काम करता है, लेकिन ऐसा लगता है कि यह निम्नानुसार काम करता है: मैं इसे अपना इनपुट अनुक्रम (एबस्केड) खिलाता हूं और यह एक छिपे हुए अनुक्रम को सबसे अच्छा मिलान करता है, अर्थात् ('बी' सी 'डी' ई '' )। मुझे नहीं लगता कि डमी वैरिएबल इसे हल करेंगे; मुझे पूरे अनुक्रम के लिए एक सच्चे / झूठे वर्गीकरण की आवश्यकता है।
रोमन स्टार्कोव

@romkyns, यह काफी नहीं है कि एक HMM कैसे काम करता है। एक HMM एक संभाव्य प्रक्रिया है। एक अनुक्रम और एक HMM M को देखते हुए , आप इस संभावना की गणना कर सकते हैं कि M आउटपुट s (डायनेमिक प्रोग्रामिंग, फॉरवर्ड एल्गोरिथम) का उपयोग करेगा। इसके अलावा, प्रशिक्षण अनुक्रमों का एक सेट दिया गया है, आप एचएमएम एम पा सकते हैं जिसमें उन प्रशिक्षण अनुक्रमों का उत्पादन करने की अधिकतम संभावना है (बॉम-वेल्च एल्गोरिथ्म का उपयोग करके)। तो HMMs अच्छी तरह से यहाँ कोशिश करने के लिए कुछ हो सकता है। हालांकि भरने के लिए कुछ विवरण होंगे। sMMsM
डीडब्ल्यू

जवाबों:


10

आप भोले बेयस क्लासिफायर के समान संभावनावादी दृष्टिकोण की कोशिश कर सकते हैं लेकिन कमजोर धारणाओं के साथ। उदाहरण के लिए, मजबूत स्वतंत्रता धारणा बनाने के बजाय, एक मार्कोव धारणा बनाएं:

p(xc)=p(x0c)tp(xtxt1,c)

आपकी कक्षा का लेबल है, x आपका अनुक्रम है। आपको दो सशर्त वितरण का अनुमान लगाने की आवश्यकता है, एक c = 1 के लिए और एक c = 0 के लिएcxc=1c=0

बायस नियम द्वारा:

p(c=1x)=p(xc=1)p(c=1)p(xc=1)p(c=1)+p(xc=0)p(c=0).

लेने के लिए कौन सा वितरण इस बात पर निर्भर करता है कि आप अनुक्रमों के बारे में और किन आंकड़ों को उपलब्ध करा सकते हैं।p(xtxt1,c)

उदाहरण के लिए, आप उपयोग कर सकते हैं:

p(xtxt1,c)=π(xt,xt1,c)iπ(xi,xt1,c)

इस तरह के वितरण के साथ, अगर वहाँ 21 विभिन्न अपने दृश्यों में होने वाली नंबर दिए गए हैं, तो आप अनुमान लगाने के लिए करना होगा मानकों π ( x टी , एक्स टी , ) के साथ साथ 21 2 = 42 के लिए मानकों पी ( एक्स 0 | ) प्लस 2 के लिए मानकों पी ( सी )21212=882π(xt,xt,c)212=42p(x0c)2p(c)

यदि आपके मॉडल की मान्यताओं को पूरा नहीं किया गया है, तो यह वर्गीकरण के प्रदर्शन के संबंध में मापदंडों को ठीक से ट्यून करने में मदद कर सकता है, उदाहरण के लिए औसत लॉग-लॉस को कम करके

1#D(x,c)Dlogp(cx)

ढाल-वंश का उपयोग करना।


(+1) I like this one. However, one might need awful amounts of data to get reliable estimates for all p(xt|xt1,c)
steffen

यदि आप शामिल वितरण के बारे में अधिक धारणा बना सकते हैं, तो आप बहुत कम मापदंडों के साथ दूर हो सकते हैं। हैं, उदाहरण के लिए, आपको लगता है कि पता था कि द्विपद और था [ एक्स टी | एक्स टी - 1 , ] = एक्स टी - 1 , आप केवल दो मापदंडों का अनुमान लगाने के लिए होता है, सी के प्रत्येक मूल्य के लिए एक । बेशक, अगर आप कोई धारणा नहीं बना सकते हैं और आपके पास पर्याप्त डेटा नहीं है, तो बहुत कुछ ऐसा नहीं है जो आप कर सकते हैं। कोई मुफ्त भोजन नहीं है।p(xtxt1,c)E[xtxt1,c]=xt1c
लुकास

6

I would suggest that you define some features, and then pick a machine learning algorithm to apply to those features.

Features: Basically, each feature should be something that can be computed from a particular sequence, and that you think may be relevant to whether the sequence has the property or not. Based upon your description, you might consider features such as the following:

  • "Bag of numbers". You might count how many times each possible number appears in the sequence. For instance, suppose each sequence is made out of the numbers 1-30 only. Then you can generate 30 features; the ith feature counts how many times the number iअनुक्रम में दिखाई देता है। उदाहरण के लिए, अनुक्रम (7 5 21 3 3)फीचर वेक्टर (0,0,2,0,1,0,1,0, ..., 0,1,0, ..., 0) उत्पन्न करता है।

  • "खुदाई का थैला।" एक डिग्रम लगातार संख्याओं की एक जोड़ी है। एक अनुक्रम को देखते हुए, आप इसके सभी डाइग्राम निकाल सकते हैं। तब आप गिन सकते हैं कि प्रत्येक संभव डिग्रम कितनी बार दिखाई देता है। उदाहरण के लिए, अनुक्रम (7 5 21 3 3)अपने digrams के रूप में निम्नलिखित हैं: 7 5, 5 21, 21 3, और 3 3। यह मानते हुए कि अनुक्रम 1-30 की संख्या से बना है, वहाँ हैं302 संभव डाइग्राम, इसलिए आप प्राप्त करते हैं 302विशेषताएं। एक अनुक्रम को देखते हुए, आप इस सुविधा वेक्टर को उत्पन्न कर सकते हैं।

  • "ट्रिगर्स का बैग।" आप त्रिकोणों पर भी विचार कर सकते हैं, जो मूल अनुक्रम से लगातार तीन संख्याओं का अनुवर्ती है। आप ऊपर के जैसा कर सकते हैं।

If you use the above features, you can then extract d=30+302+303 features from each sequence. In other words, to each sequence, you associate a d-dimensional feature vector, which is the collection of features. Once you have this, you can throw away the original sequences. For instance, your training set becomes a bunch of input/output-pairs, where the input is the feature vector (corresponding to some sequence from your training set) and the output is a boolean (indicating whether that sequence had the property or not).

Another variation on the above idea is to use "set of X" instead of "bag of X". For instance, instead of counting how many times each number i appears, you could simply generate a boolean that indicates whether the number i has appeared at least once or not. This may or may not give better results. In general, you can experiment with the set of features you use, to figure out which ones give the best results (for instance, maybe you drop the "bag of trigrams"; or maybe you can come up with some other ideas to try).

Machine learning algorithm: I'm not qualified to give you advice about how to select a machine learning algorithm; there are many possibilities. But in general you are going to apply the learning algorithm to your training set (the input/output pairs of features/booleans), and try to use it to predict which of the values in the test set have the property. Your selection of machine learning algorithm may depend upon several factors, including how the size of the training set compares relative to d (the number of features). Your best bet may be to try several machine learning algorithms and see which works the best. You might want to include Support Vector Machines (SVMs) as one of the algorithms you try.


The first attempt that I actually implemented was a "bag of trigrams" with naive bayesian classification. The results are encouraging but not great. I thought this could be related to the fact that trigrams are not at all independent: if I have "1 2 3" then I'm also very likely to have a "2 3 *" trigram. Perhaps I should experiment with the exact features some more.
Roman Starkov

Experimenting more, both with different feature sets and with different learning algorithms, is a good idea. Also, based on your problem description, you may want to add features for appearance of each individual number (bag of words, not just bag of trigrams): if you use only trigrams, you are making it harder for the machine learning algorithm to learn facts like "sequences that contain 11 almost certainly do not have the property".
D.W.

2

What you're effectively doing is hypothesis testing on time series. HMMs would work for you, though you would have to adapt them to your particular case.

Honestly, if you can't write down some kind of mathematical description of what you're trying to detect, you're not going to get very far. Perhaps you can tell us about what kind of feature you're expecting to see?


1
Machine learning has shown us that we can get very far without having any idea about what to look for.
bayerj

1

Given a max length of 12 on the sequence, then a neural network with 12 inputs and one output may work, but you would have to pad the end of each sequence with zeroes or some inert value.


1

Have you tried using Bayesian networks? That's the first thing I think of when I need to fuse multiple pieces of data (coming in one at a time) to arrive at the probabilities of a random variable.

Bayesian networks don't rely on the independence assumption that naive Bayes does.

BTW, hidden Markov models are a special case of Bayesian networks.

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