【问题标题】:How to use machine learning to ask users dynamically and recommend a result如何使用机器学习动态询问用户并推荐结果
【发布时间】:2015-05-06 21:20:42
【问题描述】:

我想开发一个系统,在向用户提出多个问题后推荐一项运动。系统应动态决定提出哪些问题及其最合适的排序,以便为每个用户找到最佳答案。

我有一个三重数据结构:运动与不同的属性相关联,问题可以引用多个属性。两种关系都是加权的。

在 0-1 的范围内,足球与“室内”相关联为 0.6,但与“户外”相关联为 0.8,因为足球更经常在户外进行,而 1.0 与“球”在任何情况下都是必要的足球。问题 2 与“球拍”(0.7)和“弓”(0.6)相关联,因为这两个项目都可以用手使用,但是“球拍”的权重更高,因为更有可能有人想到“球拍”来回答这个问题。

# table1: sports (result set)
1 | badminton
2 | soccer
3 | fishing

# table2: attributes (describes different results)
1 | indoors
2 | outdoors
3 | ball
4 | racket
5 | bow

# table3: questions (checks for needed attributes)
1 | Do you like doing sports outdoors?
2 | Do you want to hold a gadget while performing the sport?

我可以尝试基于关系数据库和我在 python/pandas 中实现的一些排名系统来构建它。但是,我觉得我忽略了机器学习的最新发展,显然不应该自己为较小的项目构建推荐引擎:

http://www.datacommunitydc.org/blog/2013/05/recommendation-engines-why-you-shouldnt-build-one

据我了解,这可能部分是决策树问题,对吗?

http://scikit-learn.org/stable/modules/tree.html

我的问题在机器学习方面的简明问题陈述是什么?哪些库可以在我的 python-pandas 环境中支持我?

我真的很抱歉这么幼稚,如果有人能引导我走向正确的方向(关于应用的理论和技术),我保证会尽可能多地学习。

【问题讨论】:

标签: python pandas machine-learning classification recommendation-engine


【解决方案1】:

所讨论的机器学习任务不是在给定问题和运动之间的权重的情况下找到最佳运动的任务,而是在给定已经回答的问题和最喜欢的运动的情况下找到权重。

即:您有一群人(训练集)回答了您的问题,然后使用某种尺度(您选择)对他们最喜欢的运动进行排名。然后,您训练一些算法以概率性地选择运动,以尽可能接近地预测训练集的结果。

如果属性已经作为问题存在(您的室内与室外示例),则这些属性并不是真正有用,即使如此,它们的价值也值得怀疑。

例如,您填写问卷:室内与室外?哦,小工具?是的 然后你说你有多喜欢各种运动:足球? 5、网球? 8、球? 2

据此,您的算法应该确定回答 o,y 的人喜欢网球、对足球漠不关心、讨厌篮球。当然,更多的数据会产生更准确的结果。

用于对离散输入进行建模的模型可能是贝叶斯网络。您*可以*将属性作为中间隐藏层包含在贝叶斯网络中,但我将从一个简单的贝叶斯网络开始,然后查看中间层是否增加了价值。如果您确信“使用球”之类的事情在某种意义上确实是人们喜欢一项运动而不是另一项运动的根本原因,那么,是的,在你的网络中使用一个隐藏层,否则,它不会有用。

http://en.wikipedia.org/wiki/Bayesian_network

【讨论】:

  • 感谢您帮助我解决这个广泛的问题。
猜你喜欢
  • 2014-05-14
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2022-12-11
相关资源
最近更新 更多