准备数据,选择算法

数据挖掘 算法 scikit-学习 数据清理 决策树
2022-03-01 12:37:57

首先,我是机器学习的新手,所以这些问题可能是微不足道的。

基本上我正在尝试使用数字旋钮和数字输出来调整对象。通过进行蛮力调整(排列),有一种解决方案可以找到输出的理想值,但这需要时间。我正在尝试使用 ML 来至少缩短调优过程。

调整对象

我有一个数据集,其中包含大量成功调整的好单元,尽管尝试次数不同。

例如:通过要求:X = 接近 10,Y = 接近 5,Z = 接近 4

对象 1:

Try 1 => A = 1, B = 2, C = 3 ; X = 1, Y = 0, Z = 1  => not good
Try 2 => A = 1, B = 1, C = 1 ; X = 10, Y = 5, Z = 4 => good enough

对象 2:

Try 1 => A = 1.4, B = 2.6, C = 3.8 ; X = 10, Y = 5, Z = 3.9 => lucky!!!

对象 3:

...
Try 10 => A = 1.4, B = 2.6, C = 3.8 ; X = 10, Y = 5, Z = 3.9 => took a while!!!

我想知道如何为此类问题的训练和测试准备数据,因为每个对象在成功调整之前都有可变数量的尝试。我是否应该为每个对象取最后一个成功的组合,并保持相同的列(A、B、C、X、Y、Z)。还是全部拿走(每个对象多行)?

或者,对于每个对象记录,附加另一组列,这样每个对象我只有一行。例如 (A1,B1,C1,X1,Y1,Z1, A2,B2,C2,X2,Y2,Z2,... An,Bn,Cn,Xn,Yn,Zn )

至于算法选择,我只能说这不是分类问题(或二元结果)。如果有这样的事情,像回归、决策树或爬山之类的东西?

1个回答

我不知道我会称其为机器学习问题本身……尽管其他人可能不同意,但这听起来像是一个优化问题。

您的描述含糊不清,但让我们假设它是您要调音的吉他,并且您有 6 根弦。诀窍是定义一个目标函数,用一个数字量化调整的“好”程度。(程序可以独立操纵每根弦的张力)。也许这是理想 FFT 的一些功率偏差,并且您将每个字符串的偏差相加。

优化例程,如单纯形、子 plex、Nelder-Mead、GA 等,是以“智能”方式操纵张力的方法,无需蛮力(或“网格搜索”)解决方案。只要您可以定义一个目标函数,您就可以开始尝试它,尽管需要处理局部最大/最小问题。

我会研究一些关于最小化算法的教程