我将制定一个我想用机器学习(在 R 或类似平台中)解决的简单问题:我的算法采用3 个参数(a、b、c),并返回[0,1] 范围内的分数s . 参数都是分类的:a 有 3 个选项,b 有 4 个,c 有 10 个。因此我的数据集有 3 * 4 * 10 = 120 个案例。高分是可取的(接近 1),低分不是(接近 0)。让我们将算法视为一个黑匣子,取 a,b,c 并返回 a s。
数据集如下所示:
a, b, c, s
------------------
a1, b1, c1, 0.223
a1, b1, c2, 0.454
...
如果我为每个参数绘制 s 的密度,我会得到非常广泛的分布,在某些情况下表现非常好 (s > .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的线性规划解决方案,但我不明白如何将线性规划应用于这个问题。