【问题标题】:Which machine learning algorithm to use for high dimensional matching?使用哪种机器学习算法进行高维匹配?
【发布时间】:2017-07-31 23:43:14
【问题描述】:

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

问题:在给定 1000 个特征的情况下,我如何运行机器学习算法来确定最佳匹配或最接近/最相似的人?

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

【问题讨论】:

  • 最简单的方法是计算两个人之间的相似度,即计算两个人的特征向量之间的距离。假设所有数据都是数字的,您可能希望首先对整个特征数据集进行归一化以避免任何偏差,然后计算每对人之间的余弦相似度系数。相似度越高,它们就越相似。您还可以尝试其他相似性指标,例如 L1 norm。
  • HI @Rohit 所以你的想法是:对于每个特征,使数据数字化(将单词转换为数字并存储它们的映射),然后对于每个人,比较特征之间的距离。收集每个特征的距离后,对每个特征运行余弦相似度以确定最相关的特征。一旦运行这些,我假设会计算总余弦相似度并确定哪些余弦相似度最相似,不仅要得到哪些特征最相似,还要得到哪些人?
  • 你对两个人相似度的定义是什么?
  • 我想最大化两个人共享的功能数量。 2 个匹配特征将少于 5 个匹配特征,依此类推。如果在优化相似性算法时有可能有帮助的替代方案,我对此非常开放。

标签: machine-learning


【解决方案1】:

你基本上是在追求某种K Nearest Neighbors Algorithm
由于您的数据具有高维度,您应该探索以下内容:

  1. 降维 - 您可能有 1000 个特征,但其中一些可能比其他特征更好。因此,应用某种Dimensionality Reduction 将是明智之举。最简单的第一点是Principal Component Analysis (PCA),它保留了大约 90% 的数据(即使用足够的特征向量来匹配 90% 的能量及其匹配的特征值)。我想你会看到这显着减少。
  2. Accelerated K Nearest Neighbors - 有许多方法可以在高维情况下加速 K-NN 的搜索。 K D Tree Algorithm 将是一个好的开始。

【讨论】:

  • PCA 在 OPs 案例中通常是一个很好的建议。但仅作记录:它并没有像您所说的那样“保留约 90% 的数据”。数据 PCA 可以保留多少原始变化/维度很大程度上取决于设置(您让 PCA 减少多少维度的数据)和您的数据本身。
  • @petezurich,我说过以保留 90% 数据的方式应用 PCA。在处理 PCA 时,这意味着采用传播 90% 能量的向量。
  • 感谢您的澄清。那讲得通。我误读了你的建议。
【解决方案2】:

距离指标

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

监督

如果您知道这些人的相似程度,您可以尝试以下方法:

神经网络,方法 #1

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

请参阅neuralnetworksanddeeplearning.com 以获得很好的介绍,Keras 以获得简单的框架

神经网络,方法 #2

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

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

对于训练,你必须先给网络一个人,存储结果,然后是第二个人,存储结果,应用你选择的两个结果的距离度量(例如欧几里得距离),然后反向传播错误.

【讨论】:

    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 2020-04-19
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2018-09-22
    • 2018-03-05
    相关资源
    最近更新 更多