K最近邻算法怀疑

时间:2009-03-29 17:09:26

标签: algorithm artificial-intelligence knn

我是人工智能的新手。我理解K最近邻算法以及如何实现它。但是,你如何计算不规模的东西的距离或重量?

例如,可以很容易地计算年龄距离,但是如何计算红色到蓝色的距离?也许颜色是一个不好的例子,因为你仍然可以说使用频率。比如汉堡比萨饼到炸薯条怎么样?

我觉得有一种聪明的方法可以做到这一点。

提前感谢您的关注。

编辑:谢谢大家非常好的答案。它真的有帮助,我很感激。但我认为必须有出路。

我可以这样做吗?假设我正在使用我的KNN算法对一个人进行预测,看他/她是否会在我的餐厅吃饭,该餐厅供应上述三种食物。当然,还有其他因素,但为了保持简单,对于喜爱的食物领域,300人,150喜欢汉堡,100喜欢披萨,50喜欢薯条。常识告诉我,最喜欢的食物影响人们决定是否进食。

所以现在一个人输入他/她最喜欢的食物作为汉堡,我将预测他/她是否会去我的餐厅吃饭。忽略其他因素,并根据我的(训练)以前的知识库,常识告诉我,与他进入披萨或薯条相比,这个特定领域最喜欢的食物的k个最近邻居距离更近的可能性更大。

唯一的问题是我使用了概率,而我可能错了,因为我不知道并且可能无法计算实际距离。我也担心这个领域对我的预测投入太多/太少的重量,因为距离可能不是与其他因素(价格,一天中的时间,餐厅是否已满,我可以轻易量化等)的比例。但我猜测我可以通过一些参数调整来解决这个问题。

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

7 个答案:

答案 0 :(得分:11)

将您收集数据的所有食物表示为“维度”(或表格中的列)。

为每个可以收集数据的人录制“喜欢”,并将结果放在表格中:

          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 Correlation CoefficientCosine Similarity等。

现在你有办法找到K最近邻居并作出决定..

有关此问题的更多高级信息,请查看“协作过滤”(但我会警告您,它会得到数学)。

答案 1 :(得分:7)

嗯,'最接近'意味着你有一些衡量标准可以或多或少地“遥远”。 “汉堡”,“披萨”和“薯条”的量化并不是一个KNN问题,而是基本系统建模。如果您有一个系统,您正在进行分析,其中'汉堡','披萨'和'薯条'是术语,系统存在的原因将决定它们如何量化 - 如果你是试图找出如何获得最佳品味和最少的卡路里,然后ta-da,你知道你的指标是什么。 (当然,“最佳品味”是主观的,但这是另一组问题。)

这些术语不具备固有的可量化性,从而告诉您如何设计分析系统;由你来决定你要完成什么,并从那里设计指标。

答案 2 :(得分:5)

这是AI中知识表示的问题之一。主观上扮演着重要角色。例如,您和我是否同意汉堡,比萨饼和薯条的“亲密度”?

您可能需要一个包含要比较的项目的查找矩阵。如果你可以假设传递性,你可以减少这个矩阵,但我认为即使你的例子中也不确定。

关键可能是尝试确定您要比较的功能。例如,如果您正在比较您的健康食品,您可能会得到更客观的东西。

答案 3 :(得分:2)

如果查看"Collective Intelligence",您会看到他们分配了比例和值。这就是Netflix比较电影排名等的方式。

您必须通过提出该比例并为每个比例分配值来定义“接近度”。

答案 4 :(得分:1)

我实际上会向用户展示这些属性的对,并要求他们定义它们的邻近度。你会给它们提供一个从[同义词..非常外国]或类似的规模。有很多人这样做,你会得到一个广泛接受的非线性属性值的接近函数。

答案 5 :(得分:0)

没有“最好”的方法来做到这一点。最终,你需要提出任意比例。

答案 6 :(得分:0)

好的答案。你可以只是制定一个指标,或者像马拉奇建议的那样,问一些人。要真正做到正确,听起来你需要bayesian analysis