2012-03-21 75 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