【问题标题】:K Nearest Neighbour Algorithm doubtK 最近邻算法疑问
【发布时间】:2010-10-16 06:00:16
【问题描述】:

我是人工智能的新手。我了解 K 最近邻算法以及如何实现它。但是,您如何计算不在秤上的物体的距离或重量?

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

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

提前感谢您的关注。

编辑:谢谢大家非常好的答案。它真的很有帮助,我很感激。但我想一定有一条出路。

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

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

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

哦,每个人都提出了一个很好的答案,但我只能接受一个。那样的话,我明天就接受得票最高的那个。再次感谢大家。

【问题讨论】:

    标签: algorithm artificial-intelligence knn


    【解决方案1】:

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

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

    汉堡 |披萨 |薯条 |墨西哥卷饼 |喜欢我的食物 人1 1 | 0 | 1 | 1 | 1 人2 0 | 0 | 1 | 0 | 0 人3 1 | 1 | 0 | 1 | 1 人4 0 | 1 | 1 | 1 | 0

    现在,给定一个新人,了解他喜欢的一些食物的信息,您可以使用简单的度量来衡量与其他人的相似度,例如 Pearson Correlation CoefficientCosine Similarity 等。

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

    有关这方面的更多高级信息,请查看“协作过滤”(但我会警告您,它会数学化)。

    【讨论】:

    • 这就是我想要的!非常感谢。 =)
    【解决方案2】:

    嗯,“最近”意味着您有一些衡量标准,可以衡量事物或多或少“距离”。 “burger”、“pizza”和“fries”的量化与其说是 KNN 问题,不如说是关于基本系统建模的问题。如果你有一个系统,你正在做分析,其中“汉堡”、“披萨”和“薯条”是术语,那么系统存在的原因将确定它们是如何量化的——就像你是试图弄清楚如何以给定的金额获得最好的味道和最少的卡路里,然后ta-da,你知道你的指标是什么。 (当然,“最佳品味”是主观的,但这是另一组问题。)

    这些术语不具备内在的可量化性,从而告诉您如何设计分析系统;由您决定要完成的工作并从那里设计指标。

    【讨论】:

      【解决方案3】:

      这是人工智能中知识表示的问题之一。主观上起着很大的作用。例如,你和我会同意汉堡、披萨和薯条的“亲密性”吗?

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                猜你喜欢
                • 2012-07-19
                • 2018-05-09
                • 2011-06-20
                • 2014-02-23
                • 2014-05-14
                • 2012-11-10
                • 1970-01-01
                • 1970-01-01
                • 2014-04-12
                相关资源
                最近更新 更多