哪种机器学习算法用于高维匹配?

时间:2017-07-29 12:44:36

标签: machine-learning

比方说,我可以用1000种不同的方式定义一个人,所以我有一个特定人的1000个特征。

问题:如果有1,000个功能,我如何运行机器学习算法来确定最佳匹配,或最近/最相似的人?

我尝试了 Kmeans ,但这似乎更多是2个功能,而不是高维度。

2 个答案:

答案 0 :(得分:3)

你基本上是在某种K Nearest Neighbors Algorithm之后 由于您的数据具有较高的维度,因此您应该浏览以下内容:

  1. 维度降低 - 您可能拥有1000个功能,但可能其中一些功能优于其他功能。因此,应用某种Dimensionality Reduction是明智之举。最简单和第一点开始将是Principal Component Analysis (PCA),其保留~90%的数据(即使用足够的本征向量,其匹配能量的90%及其匹配的本征值)。我认为你会看到明显的减少。
  2. 加速K最近邻 - 有很多方法可以加速在高维情况下搜索K-NN。 K D Tree Algorithm将是一个良好的开端。

答案 1 :(得分:1)

距离指标

您可以尝试直接应用距离指标(例如cosine similarity)。

受监督的

如果你知道这些人有多相似,你可以尝试以下方法:

神经网络,方法#1

  • 输入:2倍人物特征向量(因此有2000个特征)
  • 输出:1浮动(两个人的相似性)
  • 可扩展性:与人数呈线性关系

请参阅neuralnetworksanddeeplearning.com以获取精彩的介绍,并Keras查看简单的框架

神经网络,方法#2

更高级的方法称为度量学习。

  • 输入:人物特征向量(因此有2000个特征)
  • 输出:k浮动(你选择k,但它应该低于1000)

对于培训,您必须首先在网络上提供网络,存储结果,然后存储第二个人,存储结果,应用您选择的距离度量(例如欧几里德距离),然后反向传播错误