【发布时间】:2012-03-22 20:42:36
【问题描述】:
我将制定一个我想用机器学习解决的简单问题(在 R 或类似平台中):我的算法采用 3 个参数(a, b,c),并返回 [0,1] 范围内的 score 。参数都是分类的: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 > .8 ),而在其他情况下表现不佳 (s
如果我查看 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个参数),以统计学上显着的方式(即排除碰巧具有非常高的异常值分数)。 换句话说,我想获得一个 policy 来做出最优的参数选择,例如表现最好的组合是 (a1,b3)、(a2,b1) 等。
现在,我猜这是一个可以使用机器学习解决的优化问题。
在这种情况下,您会推荐哪些标准技术?
编辑:有人建议使用glpk 提供线性规划解决方案,但我不明白如何将线性规划应用于此问题。
【问题讨论】:
-
这个问题最标准的技术是线性回归。您可以预测特定参数的值;更一般地说 - 获得在你的 3 个参数上为你提供最大值的函数
-
当我运行回归时,我得到了 a1、a2 等的一些系数和一个 R 平方。不知道他们如何告诉我表现最好的价值。
-
由于只有 120 个案例,您可以根据
a、b和c的值计算预期分数,并查看哪个组合表现最佳。不过,您需要大量数据来防止过度拟合。要大致了解结果的重要性,您可以计算每个条件期望的 p 值。如果它们都足够低,那么你就完成了。如果没有,那么您可能需要查看某种平滑(例如,缩小到平均分数)。 -
如果您使用线性回归,您对参数值之间的相互作用做出了非常强烈的假设(即唯一的相互作用是相加的)。
标签: optimization machine-learning linear-programming