机器人--推荐系统

430的目标是完成机器人的推荐系统,提高机器人回答问题的准确率,关于过程碰到的问题以及解决方案与大家分享一下,(请轻喷!)

那么这个推荐系统到底应该怎么做呢?

最开始的第一个思路是 根据用户 进入到ERP的模块 推荐该模块下的相关问题。其实就是根据用户的轨迹来推荐问题,这是一个思路但是不太完整。因为很有可能用户就从ERP的桌面就进入了机器人,但他实际要咨询的是销售系统的相关知识,那么此时的推荐就不太满足用户的咨询需求。

因此参考一些业界其他公司的做法,可以基于内容的协同过滤(Collaborative Filtering,即CF)来设计机器人推荐系统。

那么什么是基于内容的协同过滤,一个最经典的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那么通常的做法就是问问周围的朋友,看看最近有什么好的电影推荐。在问的时候,都习惯于问跟自己口味差不多的朋友,这就是协同过滤的核心思想。

协同过滤是在海量数据中挖掘出小部分与你品味类似的用户,并让这些用户成为邻居,然后根据他

们喜欢的东西组织成一个排序的目录推荐给你。所以就有如下两个核心问题

(1)如何确定一个用户是否与你有相似的问题?

(2)如何将邻居们的喜好咨询的问题组织成一个排序目录?

协同过滤算法包括基于用户和基于物品的协同过滤算法。so 我们应该怎么做呢

1、收集用户偏好习惯

机器人经过一段时间的积累,已经积累了一些用户经常咨询的问题以及对问题的反馈,以及一些问题本身的属性,比如问题的类型、以及问题所属的模块系统

2、数据预处理

一、降燥处理,主要针对对于用户的误操作数据进行过滤,减少对整体数据的影响

二、归一化处理,不同行为数据的取值相差可能很大,通过归一化,才能使数据更加准确。

3、经过上述处理后

我们得到一张用户的user profile的二维的矩阵。如图:

  I1 I2 I3
U1 1 1 1
U2 1 0 0
U3 0 1 0

u表示用户,k表示知识库条目

1:表示机器人对用户咨询问题反馈的知识库条目有效,0:则表示无效。

同样的道理,我们可以建立知识库条目的item profile 二维矩阵,每一个知识库条目 有所属的子系统、所属模块、以及当前的问题类型等。在这里我截取了4个属性,所属子系统、所属一级模块、所属二级模块,以及问题类型。如图:

  attr1 attr2 attr3 attr4
I1 0.01 0.02 0.08 0.33
I2 0.01 0.03 0.17 0.5
I3 0.98 0.95 0.75 0.17

4、计算相似度

有了评分矩阵以后,那么开始要找到用户相似度及物品相似度了。

推荐系统中通常使用余弦相似性作为距离度量,在n维孔空间中评价被视为向量,基于这些向量之间的夹角来计算相似性。

计算用户k与用户a的相似度:

计算条目m与条目b的相似度:

经过计算以后,我们可以拿到用户和物品的相似度矩阵。

5、推荐

准备了这么多,最后最终的目的还是要进行推荐,刚刚我们提到了2个算法,基于用户的协同过滤和基于物品的协同过滤,(虽然可以百度到,但是补充说明一下)

基于用户的协同过滤,因为我们计算出了用户的相似度矩阵,如图:

  u1 u2 u3
u1 0 0.156874 0.21221
u2 0.14213 0 0.56231
u3 0.165984 0.62123 0

然后我们还可以设计一个权重,根据最近邻居的相似度以及它们对物品的偏好,预测当前用户偏好的但未涉及条目,计算得到一个排序的条目列表进行推荐

基于物品的协同过滤,类似的我们还可以拿到一个物品的相似度矩阵(不贴图了),他是从物品本身出发,比如A喜欢咨询知识库条目k,那么我们根据物品相似度矩阵,拿到与k相似的并且用户A并未咨询过的条目推荐给A。

6、评估

用于评估预测精确度的指标之一是Root Mean Squared Error(RMSE)

所以我们可以直接用sklearn中的mean_square_error(mse)函数,然后再求个平方根,就是RMSE。

结果如图:

从最终的结果来看,基于用户与基于物品的预测精确度差距不大,同时,由于基于物品计算复杂会比基于用户的计算复杂少很多,目前采用就是基于物品的协同过滤算法。

两种算法的适用场景请参考:

https://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/index.html

7、后续

推荐系统在业界一直有一个问题比较难处理,就是冷启动,由于收集到的用户信息不足,导致数据稀疏,推荐效果不是很不理想;那么解决方案是基于模型的协同过滤(MF),采用奇异值分解算法svd。他的推荐效果很不错,如图:

(ps:相对svd算法的复杂度是最高的。。。。。对于没有GPU必要设备的我们来说只能放弃了)

言归正传,后续准备分享建设机器人寒暄库,让机器人可以口吐“人言”,甚至口吐“甄嬛体”。

目前还需要童鞋帮忙建设寒暄库,各路大神有时间的,助小的一臂之力。

推荐资料:

https://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/index.html

http://blog.163.com/[email protected]/blog/static/2414832520123269713813/

时间: 2024-11-02 15:51:02

机器人--推荐系统的相关文章

机器人--推荐系统(1)

430的目标是完成机器人的推荐系统,提高机器人回答问题的准确率,关于过程碰到的问题以及解决方案与大家分享一下,(请轻喷!) 那么这个推荐系统到底应该怎么做呢? 最开始的第一个思路是 根据用户 进入到ERP的模块 推荐该模块下的相关问题.其实就是根据用户的轨迹来推荐问题,这是一个思路但是不太完整.因为很有可能用户就从ERP的桌面就进入了机器人,但他实际要咨询的是销售系统的相关知识,那么此时的推荐就不太满足用户的咨询需求. 因此参考一些业界其他公司的做法,可以基于内容的协同过滤(Collaborat

京东个性化推荐系统持续优化的奥秘(转)

订单贡献率10%,京东个性化推荐系统持续优化的奥秘 作者:周建丁 在信息过剩的互联网时代,个性化推荐技术对于互联网公司运营的重要性自不待言.本文要谈的是京东商城最新的推荐系统.京东已经在新版首页上线了“今日推荐”和“猜你喜欢”两项功能,基于大数据和个性化推荐算法,实现了向不同用户展示不同的内容的效果(俗称“千人千面”),该系统目前在PC端和移动端都已经为京东贡献了10%的订单. 京东推荐系统三部曲 总体而言,京东推荐算法的步骤并不神秘,无非是建立召回模型——召回模型效率分析——排序模型三步.但这

数据挖掘项目之---通过对web日志的挖掘来实现内容推荐系统

先说一说问题,不知道大家有没有这样的经验,反正我是经常碰到. 举例1,某些网站每隔几天就发邮件给我,每次发的邮件内容都是一些我根本不感兴趣的东西,我不甚其扰,对其深恶痛绝.         举例2,添加具有某功能的一个msn机器人,每天都有几次突然蹦出一个窗口,推荐一堆我根本不想知道的内容,烦不烦啊, 我只好将你阻止掉. 每一个观众只想看他感兴趣的东西,而不是一下与之无关的事物,那么如何才能知道观众的兴趣所在呢,还是数据挖掘,经过一番思考,终于有点思路,即根据用户以往的浏览历史来预测用户将来的行

基于Spark MLlib平台的协同过滤算法---电影推荐系统

基于Spark MLlib平台的协同过滤算法---电影推荐系统 又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实现一个向用户推荐电影的简单应用.其中,主要包括三部分内容: 协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,

这是一款借助chrome 插件的微信机器人

1.chrome kit微信机器人简介(github:https://github.com/LinuxForYQH/chrome_kit) 借助chrome 插件 js注入来实现消息的发送 chrome devtool api的调用来监听https请求 打开微信登录界面,在扫码登录前必须先打开toolbar(F12 或者 鼠标右键检查),如上所说因为借助了chrome devtool api所以需要打开toolbar才能执行相关dev域的js. 2.相关开发原理介绍 https://develo

ROS turtlebot_follower :让机器人跟随我们移动

ROS turtlebot_follower 学习 首先在catkin_ws/src目录下载源码,地址:https://github.com/turtlebot/turtlebot_apps.git 了解代码见注释(其中有些地方我也不是很明白) follower.cpp #include <ros/ros.h> #include <pluginlib/class_list_macros.h> #include <nodelet/nodelet.h> #include &

CSU 1112: 机器人的指令【模拟题】

1112: 机器人的指令 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 1858  Solved: 682 [Submit][Status][Web Board] Description 数轴原点有一个机器人.该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置. ·LEFT:往左移动一个单位 ·RIGHT: 往右移动一个单位 ·SAME AS i: 和第i 条执行相同的动作.输入保证i 是一个正整数,且不超过之前执行指令数 In

推荐系统中常用算法 以及优点缺点对比

推荐系统中常用算法 以及优点缺点对比 在 推荐系统简介中,我们给出了推荐系统的一般框架.很明显,推荐方法是整个推荐系统中最核心.最关键的部分,很大程度上决定了推荐系统性能的优劣.目前,主要的推荐方法包括:基于内容推荐.协同过滤推荐.基于关联规则推荐.基于效用推荐.基于知识推荐和组合推荐. 一.基于内容推荐 基于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机 器

中国机器人,请慢些走

前不久,中国最高领导人说:我们不仅要把机器人水平提高上去,而且要尽可能多地占领市场.这句话的方向准确无误,同时,也代表着大大对产业的殷切希望,于是,机器人产业在中国迅速升温,批地.拨款.建工业园区,相关部门好像吃了一粒巨大的伟哥,激情四射,满世界地去咨询,美国佛罗里达大学先进电机中心对这个现象感受颇深,负责人告诉记者:最近几个月他接到的中国企业技术咨询量,是之前的好几倍.中国创业者向来癫狂,之所以容易失去理性通常有两个原因,一是看到别人赚钱了,另一个则是领导说话了,本质上也是钱的问题,毕竟,领导