2012-03-21 110 views
4

我會制定一個簡單的問題,我想用機器學習(以R或類似平臺)解決:我算法需要3個參數(A,B,C),並返回一個得分 s範圍[0,1]。參數都是分類的:a有3個選項,b有4個,c有10個。 因此我的數據集有3 * 4 * 10 = 120個案例。 高分是可取的(接近1),低分不是(接近0)。 讓我們把算法看作一個黑盒子,取a,b,c並返回s。這個簡單優化的機器學習算法是什麼?

數據集是這樣的:

a, b, c, s 
------------------ 
a1, b1, c1, 0.223 
a1, b1, c2, 0.454 
... 

如果我繪製的S每個參數的密度,我得到非常廣泛的分佈,在某些情況下表現非常好(S> 0.8),其他嚴重(s < .2)。

如果我看看s很高的情況,我看不到任何清晰的圖案。 整體性能不佳的參數值可以很好地結合特定參數執行,反之亦然。

要測量的特定值進行(例如A1)有多好,我計算值:。

median(mydataset[ a == a1]$s) 

例如,中值(A1)= 5,中位數(B3)= 9,但是當我把它們結合起來,我得到一個較低的結果s(a_1,b_3)= .3。另一方面,中位數(a2)= .3,中位數(b1)= .4,但是s(a2,b1)= .7。

鑑於沒有參數值的表現總是很好,我想我應該尋找組合(2個參數),它們似乎在統計上有很好的一致性,高分數)。換句話說,我想獲得策略以作出最佳的參數選擇,例如,最好的組合是(a1,b3),(a2,b1)等。

現在,我猜這是一個可以使用機器學習解決的優化問題。

在這種情況下,你會推薦什麼標準技術?

編輯:有人建議使用glpk的線性編程解決方案,但我不明白如何將線性編程應用於此問題。

+0

由於只有120個情況,你可以根據'a','b'和'c'的值計算預期得分,並且看哪個組合表現最好。不過,您需要大量數據來防止過度配合。要粗略瞭解結果的重要性,可以爲每個條件期望計算一個p值。如果它們都足夠低,就完成了。如果沒有,那麼你可能想看看某種平滑(例如縮小到平均分數)。 – 2012-03-23 09:47:47

+0

這個問題最標準的技術是線性迴歸。您可以預測特定參數的值;在更一般的情況下 - 得到你的3個參數給你的最大值的函數 – Anton 2012-03-22 12:42:36

+0

當我運行一個迴歸時,我得到了a1,a2等的一些係數和一個R的平方。不知道他們如何告訴我最高性能值。 – Mulone 2012-03-22 16:56:24

回答

1

這個問題最標準的技術是線性迴歸。您可以預測特定參數的值;在更一般的情況下 - 爲了得到你的3個參數給你的最大值的函數

+0

當我運行一個迴歸時,我得到了a1,a2等的一些係數,以及一個R平方。不知道他們如何告訴我最高性能值。 – Mulone 2012-03-22 16:56:24

+1

如果您使用線性迴歸,您可以對參數值之間的相互作用(即唯一的相互作用是相加的)進行非常*強的假設。 – 2012-03-23 09:49:17