2014-08-29 70 views
0

鑑於構建在scikit-learn之上的機器學習模型,我如何分類新實例,然後只選擇那些信心最高的實例?我們如何定義機器學習的信心以及如何生成它(如果不是由scikit-learn自動生成的話)?如果我有更多2個潛在的課程,我應該如何改變這種方法?返回置信度的分類算法?

這是我迄今所做的:

# load libraries 
from sklearn import neighbors 
# initialize NearestNeighbor classifier 
knn = neighbors.KNeighborsClassifier(n_neighbors=3) 
# train model 
knn.fit([[1],[2],[3],[4],[5],[6]], [0,0,0,1,1,1]) 
# predict ::: get class probabilities 
print(knn.predict_proba(1.5)) 
print(knn.predict_proba(37)) 
print(knn.predict_proba(3.5)) 

例子:

假設我們已經創建使用XYZ機器學習算法模型。我們還假設我們正在嘗試使用位置,興趣愛好和收入等信息根據他們的性別對用戶進行分類。然後,我們有10個說我們想要分類的新實例。正常情況下,應用模型後,我們得到10個輸出,M(男性)或F(女性)。到現在爲止還挺好。但是,我想以某種方式測量這些結果的精確度,然後通過使用硬編碼的閾值來排除那些精度低的問題。我的問題是如何衡量歲差。概率(由predict_proba()函數給出)是一個很好的衡量標準嗎?例如,我可以說,如果可能在0.9和1之間,那麼「保持」(否則「省略」)?或者我應該使用更復雜的方法來做到這一點?正如你所看到的,我缺乏理論背景,所以任何幫助將不勝感激。

+1

這真是一個統計問題。看看CrossValidated。 – shadowtalker 2014-08-29 11:49:31

+0

我已經做到了,但沒有人回覆... – user706838 2014-08-29 15:17:33

+0

你能鏈接到你那邊的問題嗎?回答率通常較低,因爲答案通常比較複雜,並且合格的回答者相對較少。很多好問題都被忽視或未被回答。此外,你可能有更多的運氣*搜索*簡歷;我們得到了很多關於多類分類的問題。 – shadowtalker 2014-08-29 15:22:58

回答

2

雖然這是更多的統計問題,我可以給出相對於scikit學習的答案。

對機器學習的信心取決於模型使用的方法。以3-NN(你用什麼)爲例,predict_proba(x)會給你n/3,其中x是來自x的3個最近鄰居中的「1類」的數目。你可以很容易地說,如果n/3小於0.5,意味着最近的鄰居中有2個「1類」,並且有2個「0類」以上。這意味着你的x更可能來自「0級」。 (我假設你已經知道了)

對於另一種類似SVM的方法,置信度可以是從考慮的點到超範圍或合奏模型的距離,它可以是朝某個類別聚合的投票數量。 Scikit-learn的predict_proba()使用模型中可用的內容。

對於多類問題(想象Y可以等於A,B或C)ypu有兩種主要方法,有時直接考慮scikit學習。

第一種方法是OneVsOne。它基本上將每個新樣本計算爲AvsB AvsC和BvsC模型,並採用最可能的方式(想象一下,如果A贏得了對B和C的勝利,那麼正確的類很可能是A,那麼令人討厭的情況可以通過將類在比賽中最高的信心,例如,如果A勝B,B勝C,C勝C,如果A勝B的信心高於其餘,那麼最有可能是A)。

第二種方法是OneVsAll,您可以計算A vs B和C,B對A和C,C對A和B,並通過查看置信度得分來選擇最有可能的類。

使用scikit-learn的predict()將總是根據predict_proba將給出的置信度得出最可能的類。

我建議你仔細閱讀這個http://scikit-learn.org/stable/modules/multiclass.html

編輯:

啊我看到你正在嘗試做的。predict_proba()有一個很大的缺陷:假設你使用例如k-NN和你的異常值,假設你在新實例中有很大的異常值(例如,女性有視頻遊戲和槍支作爲業餘愛好,軟件開發工作等)在其他類的雲點pred_proba()中可以給1作爲男性的信心評分,而實例是女性。然而,對於undecisive案件(例如男性或女性,視頻遊戲和槍支作爲業餘愛好,並在苗圃工作)預測_proba()將提供約0.5左右。

我不知道是否可以使用更好的東西。如果你有足夠的訓練樣本進行交叉驗證,我建議你可以看看ROC和PR曲線以優化門限。

+0

感謝您的詳盡解答。但是,請注意,就我而言,我只對獲得「最有可能」最有可能的課程感興趣。我的意思是說,我只對我的分類對他的決定有90%肯定的新實例感興趣 - 或以上。我如何通過scikit-learn來實現這一目標? – user706838 2014-08-29 15:25:01

+0

您能否提供一個真實的示例或應用程序,以便我可以更準確地看到您想要實現的目標? – AdrienNK 2014-08-29 16:17:17

+0

謝謝!剛剛添加了一個「示例」部分。我期待您的意見。 – user706838 2014-08-29 17:01:50