K 近邻算法的疑问

我是人工智能领域的新手。我理解 K 近邻算法以及如何实现它。但是,对于那些不在同一个尺度上的事物,该如何计算它们的距离或权重呢?

例如,年龄的距离很容易计算,但是如何计算红色与蓝色的接近程度呢?也许颜色不是一个好例子,因为你仍然可以使用频率来表示。那么,如果是汉堡、披萨和薯条呢?

我感觉一定有一种巧妙的方法可以做到这一点。

提前感谢您的关注。

编辑:感谢大家的精彩回答。它真的很有帮助,我很感激。但我认为肯定有出路。

我可以这样做吗?假设我使用我的 KNN 算法来预测一个人是否会在我的餐厅用餐,我的餐厅提供以上三种食物。当然,还有其他因素,但为了简单起见,对于“最喜欢的食物”这个字段,在 300 个人中,150 人喜欢汉堡,100 人喜欢披萨,50 人喜欢薯条。常识告诉我,最喜欢的食物会影响人们是否用餐的决定。

所以现在一个人输入了他/她最喜欢的食物是汉堡,我将预测他/她是否会在我的餐厅用餐。忽略其他因素,并基于我的(训练)先前的知识库,常识告诉我,对于这个特定的“最喜欢的食物”字段,与他/她输入披萨或薯条相比,k 个最近邻居的距离更近的可能性更高。

唯一的问题是我使用了概率,我可能会出错,因为我不知道,也可能无法计算实际距离。我还担心这个字段在我的预测中占据太多/太少的权重,因为这个距离可能与其他因素(价格、一天中的时间、餐厅是否已满等,这些我都可以轻松量化)不成比例,但我认为我可以通过一些参数调整来解决这个问题。

哦,每个人都提出了很棒的答案,但我只能接受一个。在这种情况下,我明天会接受票数最高的那个。再次感谢大家。


回答:

将您收集数据的每种食物表示为一个“维度”(或表中的一列)。

记录您可以收集数据的每个人的“喜好”,并将结果放入表中:

          Burger  |    Pizza  |   Fries   | Burritos |  Likes my food
person1     1     |        0  |       1   |     1    |      1
person2     0     |        0  |       1   |     0    |      0
person3     1     |        1  |       0   |     1    |      1
person4     0     |        1  |       1   |     1    |      0

现在,给定一个新人,拥有关于他喜欢的一些食物的信息,您可以使用简单的度量(如 Pearson 相关系数,或 余弦相似度等)来衡量与其他人的相似性。

现在您有了一种找到 K 个最近邻居并做出一些决定的方法了。

有关此的更高级信息,请查找“协同过滤”(但我会警告你,它变得非常数学化)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注