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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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