2

我正在为非常稀疏的数据实现 K 最近邻算法。我想计算一个测试实例和训练集中每个样本之间的距离,但我很困惑。

因为训练样本中的大部分特征在测试实例中都不存在,反之亦然(缺失特征)。

在这种情况下如何计算距离?

4

2 回答 2

3

为了确保我正确理解了这个问题:每个样本都形成了一个非常稀疏填充的向量。样本之间的缺失数据不同,因此很难使用任何欧几里得或其他距离度量来衡量样本的相似性。

如果是这种情况,我之前在机器学习中看到过这个问题——在 Netflix 奖竞赛中,但没有专门应用于 KNN。那里的情况非常相似:每个用户资料都有一些电影的评分,但几乎没有用户看过全部 17,000 部电影。平均用户资料非常稀少。

不同的人有不同的解决问题的方法,但我记得的方法是他们为缺失值插入虚拟值,通常是所有数据样本中特定值的平均值。然后他们照常使用欧几里得距离等。您可能仍然可以在该论坛上找到有关此缺失值问题的讨论。对于那些试图实现奇异值分解的人来说,这是一个特别常见的问题,它变得非常流行,所以如果我没记错的话,已经讨论了很多。

您不妨从这里开始:http: //www.netflixprize.com//community/viewtopic.php?id=1283

你将不得不挖掘一下。Simon Funk 对此有一些不同的方法,但它更针对 SVD。您可以在这里找到它:http: //www.netflixprize.com//community/viewtopic.php?id= 1283 如果您想跳到相关部分,他称它们为空格。

祝你好运!

于 2011-09-19T03:39:39.527 回答
1

如果您在非常高维空间中工作。最好使用 SVD、LDA、pLSV 或类似方法对所有可用数据进行空间缩减,然后在以这种方式转换的训练数据上训练算法。其中一些算法是可扩展的,因此您可以在 Mahout 项目中找到实现。特别是我更喜欢使用更通用的特性而不是这样的转换,因为它更容易调试和特性选择。为此目的,结合一些特征,使用词干分析器,思考得更笼统。

于 2011-09-19T11:52:54.860 回答