部分未知矢量的最近邻

时间:2017-09-23 07:25:56

标签: algorithm machine-learning similarity data-science nearest-neighbor

我们说我们有人员列表,并希望找到像人X这样的人。

特征向量有3个项目[weight, height, age],我们的列表中有3个人。请注意,我们不知道C的高度

A: [70kg, 170cm, 60y]
B: [60kg, 169cm, 50y]
C: [60kg, ?,     50y]

找到最接近A的人的最佳方法是什么?

我的猜测

让我们计算高度的平均值,并使用它代替未知值。

因此,我们假设我们计算出170cm是身高的平均值,并将人C重新定义为[60kg, ~170cm, 50y]

现在我们可以找到最接近A的人,它将是A, C, B

问题

现在问题是我们将C放在~170cm之前,而B放在已知169cm之前。

有点不对劲。我们人类比机器更聪明,并且知道C完全170cm的可能性很小。因此,最好将B 169cm置于C之前。

但是我们如何计算这种惩罚?(最好是简单的经验算法)我们应该以某种方式惩罚具有未知值的向量?多少(也许计算每组两个人身高之间的平均差异?)

如果特征向量的维度为N并且已知K个已知项且U未知(K + U = N),那么惩罚在一般情况下会如何?

3 个答案:

答案 0 :(得分:1)

在这个特定的例子中,使用线性回归填充缺失值而不是取平均值会更好吗?通过这种方式,您可能对猜测值更有信心,可能不需要惩罚。

但是如果你想要惩罚,我有一个想法,即采用非缺失特征的比例。在该示例中,总共有3个功能。 C具有2个特征中的值。因此C的非缺失特征的比率是2/3。通过将相似性得分与非缺失要素的比率相乘来调整相似度得分。例如,如果A和C之间的相似度是0.9,则调整后的相似度是0.9 * 2/3 = 0.6。而A和B之间的相似性不会受到影响,因为B具有所有特征的值,并且比率将为1.

您还可以在计算比率时对功能进行加权。例如,(重量,高度,年龄)分别得到重量(0.3,0.4,0.3)。然后缺少高度特征将具有(0.3 + 0.3)= 0.6的加权比率。你可以看到C受到更多的惩罚,因为我们认为身高比体重和年龄更重要。

答案 1 :(得分:1)

我建议,使用数据点我们已知属性,使用学习模型,线性回归或多层感知器来学习未知属性,然后使用此模型填充未知属性。平均情况是线性模型的特例

答案 2 :(得分:1)

您对数据Imputation的问题很感兴趣。

有几种方法可以解决这个问题,我只想列举一些:

  • 平均值/模式/中位数估算:估算是一种用估计值填充缺失值的方法。目标是采用可以在数据集的有效值中识别的已知关系,以帮助估计缺失值。均值/模式/中值插补是最常用的方法之一。它包括通过该变量的所有已知值的均值或中值(定量属性)或模式(定性属性)替换给定属性的缺失数据。这可以进一步归类为广义和类似的案例归集。

  • 预测模型:预测模型是处理缺失数据的复杂方法之一。在这里,我们创建一个预测模型来估计将替代缺失数据的值。在这种情况下,我们将数据集分为两组:一组没有变量的缺失值,另一组缺少值。第一个数据集成为模型的训练数据集,而第二个具有缺失值的数据集是测试数据集,具有缺失值的变量被视为目标变量。接下来,我们创建一个模型,根据训练数据集的其他属性预测目标变量,并填充测试数据集的缺失值。

  • KNN(k-最近邻居)插补:在这种插补方法中,使用与其属性最相似的给定数量的属性来估算属性的缺失值价值观缺失。使用距离函数确定两个属性的相似性。

  • 线性回归:一种线性方法,用于建模标量因变量y与表示为X的一个或多个解释变量(或自变量)之间的关系。在预测中,线性回归可以是用于将预测模型拟合到y和X值的观察数据集。在开发这样的模型之后,如果在没有其伴随的y值的情况下给出X的附加值,则可以使用拟合模型来预测y的值。如果需要,请查看此example