背景
博主主要考虑的推荐算法用于信息流,瀑布式的展示,能不断地下拉刷新。
推荐算法的基础就是基于用户的操作行为,记录下用户的点击,评论,点赞等的行为,表明用户对某个文章所属于的话题(即标签)的热爱。另一方面,大量用户的操作也会对该篇文章进行加分。所以推荐的构成一方面会考虑个人用户行为的千人千面,另一方面会考虑大量用户行为的全网最热。后面可能还有要加上一些运营所需的强制推荐。
现有评价方法
参考网址:https://www.jianshu.com/p/47007f84e0c7
- 正确率 = 提取出的正确信息条数 / 提取出的信息条数
- 召回率 = 提取出的正确信息条数 / 样本中的信息条数
- F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率)
不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:
正确率 = 700 / (700 + 200 + 100) = 70%
召回率 = 700 / 1400 = 50%
F值 = 70% * 50% * 2 / (70% + 50%) = 58.3%
不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:
正确率 = 1400 / (1400 + 300 + 300) = 70%
召回率 = 1400 / 1400 = 100%
F值 = 70% * 100% * 2 / (70% + 100%) = 82.35%
由此可见,正确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。
自我思考
现有的F值啊,还有Precision-Recall曲线等等,的确是一个很好的衡量推荐算法的指标,在学术界深受各学者的喜爱。但是,在工业界,我觉得这样的评价很不靠谱。对于信息类推荐APP而言,你怎么知道推荐的是用户喜欢的。没有一个很明确的0/1反馈,喜爱的衡量很多时候是一种中间状态,没有热别喜爱,也没有特别的不喜爱。
召回率还可以说得过去,可以理解为推荐给某用户的所有文章中,用户实际喜爱多少其中的篇(换句话说,针对其中的多少篇做了有效操作),这样以体现算法的好坏。
但这样子考虑有几个缺点:
- 用户滑动浏览,可能是有喜欢,但是没有进入二级页面,没有发生一些交互的行为,你无法得知。
- 推荐算法是基于用户行为进行推荐的,可能都是同类的东西。用户要想拓展兴趣,会去看其它的,或许其它的他更加的喜欢。
- 即便用户点击了,可能他也不一定喜欢,并不能是真实的有效数据。
那么不妨我们拓宽一下我们的视野,从另外一个角度去思考,变相一下召回率。
首先我们总是会尽可能地记录下用户的行为,其次我们会推荐一些相关的文章给用户。
那么我们只要每次读取用户操作记录并进行个性化更新的时候,就可以统计下这段时间里面用户有效操作了的文章,有多少篇跟我们推荐的结果是一致的。在此种情况下只要能有一半与我们推荐算法所推的文章重叠,就可以算是比较好的推荐了。这意味着用户大部分获取到的信息源都是从推荐这边进入的,同时这边进入的信息源也很好的满足了用户想要看的欲望。
网友评论