如何使用机器学习动态询问用户并推荐结果

How to use machine learning to ask users dynamically and recommend a result

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

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

在 0-1 的范围内,足球与 'indoors' 相关联,得分为 0.6,但与 'outdoors' 相关联,得分为 0.8,因为足球更经常在户外进行,1.0 到 'ball' 这在任何情况下都是足球所必需的。问题 2 与 'racket'(0.7) 和 'bow' (0.6) 相关联,因为这两个项目都可以用手使用,但是 'racket' 的权重更高,因为有人更可能想到 'racket' 回答这个问题。

# 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 环境中支持我?

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

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

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

如果这些属性已经作为问题存在(您的室内与室外示例),那么它们就没有真正的用处,即使这样它们的价值也值得怀疑。

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

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

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

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