一个基本的机器学习练习是针对一些数据进行回归分析。例如,根据鱼的重量和年龄来估计鱼的长度。
这通常是通过拥有一个大型的训练数据集(重量、年龄、长度)来实现的,然后应用一些回归分析。这样就可以根据新鱼的重量和年龄来估计它的长度。
然而,假设我想要解决这个问题:“我有一条已知重量为W、年龄为A、长度为L的鱼。假设我想将长度改为M而不是L,我应该如何调整W和A?”
这似乎是一个常见的问题,但我不知道它叫什么。能有人帮我指引正确的方向吗?如果是线性的问题,你如何处理它?如果是非线性的呢?
回答:
你在寻找一个功能依赖关系
f: IR -> IR^2, f(Weight) = (Age, Length)^T
你可以使用与你现在使用的方法基本相同的方法来实现这一点。只是目标是二维的,因此你需要调整你的损失函数。
在二维空间中使用简单的欧几里得距离在这里不再适用,因为你有不同量级和不同单位的预测变量。所以你需要在这里发挥创意——例如,你可以将两个预测变量归一化到[0,1]范围内,然后将归一化后的值输入到欧几里得或L1距离损失函数中。
一旦你找到合适的损失函数,就照常进行:选择一个机器学习方法,拟合数据,做出你的预测。
关于选择方法:这可以从简单且不相关的——例如两个不相关的线性回归,或者更一般的将两个一维输出方法堆叠在一起——到相关且更复杂的:例如一个具有两个输出节点的人工神经网络,其中ANN参数是关联的。
最后,这里有一个线性回归的例子。在那里你做这样的假设
(Age, Length)^T = (a1 + b1* Weight, a2 + b2*Weight)^T
并通过最小化你的损失函数L
来找到参数a1, b1, a2, b2
,在最简单的情况下,它只是
L(a1,b1,a2,b2) = || Age - a1 + b1 * Weight ||^2 + || Length - a2 + b2 * Weight ||^2
这种选择相当于两个分开的一维线性回归。很好。
然而,通常你还希望目标参数之间有一致性——直观地:你更喜欢(Age, Length)
中的两个小偏差,而不是一个大的偏差和一个零偏差。这就是相关方法和损失函数的用武之地。