2012-01-07 103 views
1

试图编写一些处理此任务的代码:此任务的机器学习算法?

•作为一个起点,我有大约20个“配置文件”(想象一个风景配置文件),即1000个实际值的一维数组。 •每个配置文件都有一个实际期望的结果,即“有效高度”。 •有效高度是某种平均值,但高度,宽度和峰值位置起着特殊作用。 •我的目标是根据输入数据进行概括,以便计算更多轮廓的有效高度。

有机器学习算法或原理可以帮助吗?

+0

要澄清,你说有一个未知的函数'f'需要一个长度为1000的数组(一个“profile”),并产生一个标量输出(一个“高度”),而你正在寻找对于可以学习近似'f'的算法?我对机器学习知之甚少,但我的直觉告诉我,20个训练项目可能不足(除非你严格限制'f'可以的功能类型)。 – 2012-01-07 16:48:39

+0

是的,这是场景。我可能会将输入数组的长度从1000缩减到200,但这仍然太多了?这是否意味着我应该首先提取一些我怀疑扮演一个角色的特征值(多少?),然后将它们放入机器学习算法中,以弄清楚如何组合它们? – Tim 2012-01-07 17:37:28

+0

我想你还是需要限制'f'。只要想想有多少可能的功能可以给你20个输出。 – 2012-01-07 17:43:36

回答

0

也许多元线性回归满足?

+0

如果已知'f'是输入的线性组合,那么可能会出现这种情况。 – 2012-01-07 16:56:26

+0

但是,如果只有20个测试用例,它肯定无济于事。 – 2012-01-07 17:16:26

+0

不,它根本不是线性组合。从我看到的情况来看,高峰似乎扮演着最重要的角色,而“山谷”应该被忽略。我玩过像正方形,或者(nominal_height - x)的和谐平均值,或者忽略了一些最小值。所有这些都让我非常接近,但这还不够好,所以我认为机器学习可以提供帮助。 – Tim 2012-01-07 17:48:45

0

我可能会结合您所说的哪些功能扮演最重要的角色,然后对此进行回归训练。基本上,您需要至少一个对应于每个要素的系数,并且您需要比系数多得多的数据点。所以,我会选择像两座最大山峰的高度和宽度。您现在已将每个配置文件缩减为仅4个数字。现在做这个技巧:将数据分成5组4.选择前4组。将所有这些配置文件缩减为4个数字,然后使用所需的结果进行回归。一旦你已经训练了回归,在最后4点试试你的技巧,看看它有多好。重复此过程5次,每次都遗漏一组不同的数据。这被称为交叉验证,并且非常方便。

显然获得更多的数据会有所帮助。

2

原则1:提取最导入功能,而不是喂养它的一切

正如你所说的,“有效高度是某种形式的平均水平,但高度,宽度和峰的位置发挥特殊作用“所以你有一个强先验假设这些措施是最重要的学习。如果我是你,我会首先计算这些度量,并将它们用作学习的输入,而不是原始数据。

原则2:在选择学习算法,首先要关心的将是线性可分

假设高度是这些措施的功能,那么你必须考虑一下函数的线性程度如何。例如,如果函数几乎是线性的,那么一个非常简单的Perceptron将是完美的。否则,如果它不是线性的,你可能想要选择一个多层神经网络。如果距离线性很远......请转到原则1,并检查是否提取了正确的特征。

原则3:更多的数据帮助

正如你所说,你有大约20 “配置文件”进行培训。总的来说,这还不够。几乎所有的机器学习算法都是为了某种大数据而设计的。即使他们声称他们的算法擅长学习小样本,但通常不会小到20. 获取更多数据!