【问题标题】:Using a Decision Tree to build a Recommendations Application使用决策树构建推荐应用程序
【发布时间】:2020-06-14 08:01:25
【问题描述】:

首先,如果我没有遵循本网站的一些最佳实践,我深表歉意,正如您将看到的,我的家主要是 MSE(数学堆栈交换)。

我目前正在开展一个项目,我在该项目中构建了一个假期推荐系统。最初的想法有点类似于 20 个问题:我们问用户某些问题,例如“你喜欢博物馆吗?”、“你喜欢建筑”、“你喜欢夜生活吗”等,然后根据这些答案决定为用户提供他们最好的度假目的地。我们根据从网站上抓取的关键字来回答这些问题,我们将实施的决策树将使我们能够有效地确定下一个要问用户的问题。但是,我们在实施过程中遇到了一些困难。我们的一些困难示例如下:

问题的粒度存在问题。例如,说一个城市适合“自然爱好者”很好,但这并不意味着什么。对于一些人来说,大自然可能包括炎热、阳光明媚和潮湿的假期,而对于另一些人来说,大自然可能包括在凉爽的树林中快速徒步旅行。幸运的是,我们目前使用的 API 为我们提供了一个城市中的景点列表,细化到相当精细的水平(例如,它区分不同的水上运动活动,如水上摩托艇或激流漂流)。我的问题是:我们是否需要创建某种层次结构,例如:

  • 自然->(海洋、山地、平原)(山地->徒步旅行、滑雪……)

或者最好简单地包括底层结果(活动本身)并就这些问题提出问题?我只是问,因为我不熟悉分类是如何完成的以及最终输出是如何产生的。是否应该使用更好的结构?

非常感谢您的帮助。

【问题讨论】:

    标签: python machine-learning decision-tree


    【解决方案1】:

    我认为使用决策树是解决这个问题的好主意。将您的细化活动分组可能是个好主意,对于“自然爱好者”类别,请列出许多不同的气候类型:干燥和阳光充足、沿海、森林等,并在其中包含子类别。

    对于活动,您可以创建一个名为水上运动、观光等的类别。听起来您的数据集比您希望的决策树更细化,但您可以继续将该粒度细分为更多类别树,直到你达到你满意的水平。也可以包含每个地方和活动的图像。甚至可能没有描述性文字。

    【讨论】:

    • 知道了,谢谢。我唯一的问题是需要大量的“硬编码”,但我会看看我能做什么。
    • 所以我听从了你的建议,把事情分开了。现在我有大垃圾箱(例如自然)和像 Ocean_Nature 这样的小子垃圾箱(指的是其中有海洋的自然景点。完成此操作后,我想为每个位置分配一个分数。我是认为对于每个地方,我们计算前 30 个景点(如tripadvisor 之类的网站所说),然后将每个景点分类为OceanNature、Nature 等。然后,对于每个地方,给定bin 的得分是它拥有的地方数在某个箱子里。
    • 这种冗余(包括类别和子类别)是不是很糟糕?还是这棵树能处理它?
    【解决方案2】:

    bins 和 sub bins 是个好主意,就像自然、ocean_nature 一样。

    昨晚我在考虑您的问题,TripAdvisor 是个好主意。我要做的是,在旅行顾问中获取前 10 项并按类型对其进行分类。

    或者,也许您的树将范围缩小到 10 个城市。您将根据受欢迎程度或与用户的距离对这些城市进行排名。

    我不确定如何决定哪个城市最适合水上运动等。你甚至可以让城市付费成为榜首。

    【讨论】:

    • 谢谢。目前,我们选取​​每个城市的前 30 个景点,并根据类型对其进行分类。我们计算每个城市中每种类型的项目数量(例如,我们计算所有巴黎博物馆),然后根据此计数给巴黎一个博物馆分数。我们为一长串城市这样做。然后每个城市是一个带有城市名称的向量,然后为每个类别评分,并带有一些重复(子类别和类别)。计算完所有地方的分数后,我们会将其放入 sklearn
    猜你喜欢
    • 2014-05-17
    • 2016-04-09
    • 2016-07-27
    • 2021-03-02
    • 2021-04-22
    • 2018-06-27
    • 2018-09-05
    • 2021-05-16
    • 1970-01-01
    相关资源
    最近更新 更多