我是人工智能领域的新手。我理解 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 个最近邻居并做出一些决定的方法了。
有关此的更高级信息,请查找“协同过滤”(但我会警告你,它变得非常数学化)。