暴走漫画是国内在年轻人中颇具影响力的文化公司,产品包括社区,日报,游戏,视频。然而,随着暴漫用户的增长,运营的工作越来越重,也越来越需要照顾不同的用户。这时候数据服务团队应运而生。来到暴漫后,主要主导了 3 个方面的数据服务:搜索,推荐。这次主要和大家分享一点实践方面的经验,包括技术架构的选择,算法策略的选择等。
暴⾛走漫画数据挖掘从0到1Michael [email protected]暴⾛走漫画(上海)
View Slide
关于我⽣生物信息学 硕⼠士《Git版本控制管理(第2版) 》 第⼆二版 译者南京 LUG 管理员代码托管服务(集盒)创始⼈人微搜索(TinySou) 创始⼈人暴⾛走漫画 技术总监(数据挖掘,上海技术部)2
内容概要搜索服务相关理论与原理核⼼心问题实践推荐服务相关理论与原理⼀一般步骤协同过滤为例未来与挑战 3
构建搜索服务搜索是寻找资源的最好⽅方式4
搜索服务的基本流程5这⾥里的Data 是数据源(即要搜的东⻄西),可以是数据库,可以是⽂文件系统,也可以是互联⺴⽹网(⾕谷歌)特别注意的是这⾥里的“索引”过程,搜索引擎并不会直接搜索数据源,⽽而要先将数据源的内容索引到搜索引擎中索引
6索引结构:倒排表(Inverted Index)
索引(过程)的核⼼心问题中⽂文分词统计语⾔言模型⼯工程实现(效果:字典,效率:算法)分词策略(重复索引,组合分词)中⽂文分词(英⽂文分词)拼⾳音分词n-gram 7
搜索的核⼼心问题索引查询倒排表查询,结果取并集(Union),作为候选结果排序TF-IDF/BM25vector space modelboost(⾃自定义因素)机器学习综合以上 8
TF-IDF/BM25IDFidf(t) = 1 + log ( numDocs / (docFreq + 1))TFtf(t in d) = √frequencyBM25bm25(t in d) = tf(t in d) * (k + 1)/(tf(t in d) + k * (1-b+b*|D|/avgdl)Field-length Normnorm(d) = 1 / √numTermsWeightweight(t in d) = tf * idf * norm (using tf-idf)weight(t in d) = bm25 * if * norm (using bm25)9
vector space model原理查询语句以及每个候选由⼀一个 vector 表⽰示, vector 中的每个值是 term 的 weight 值计算每个候选 vector 与 查询 vector 的 cosine 值,得分⾼高者排名⾼高举例:查询是: 暴⾛走|⼤大|事件 q = [0.8, 0.1, 0.6]有两个候选:doc1:暴⾛走|漫画 v1 = [0.82, 0, 0]doc2:暴⾛走|事件 v2 = [0.82, 0, 0.63]计算 cosine:cos(q, v1) < cos(q, v2)结论doc2 排名⾼高10
Boost排序的外部因素PageRank竞价排名机器学习暴漫策略:浏览量/播放量 min(2.0, log(1+0.1v)和cos(v, q) 相加11
⼯工程实现基于 Elasticsearch 做索引设计索引结构(分词,相似策略,norm 策略)排序结果⼲干预基于 Elasticsearch 做排序(⽂文本相关性 + boost)跟踪⽤用户点击⾏行为,利⽤用机器学习调整隐藏因素12
构建推荐服务推荐是移动应⽤用的重要⽤用户留存⼿手段13
主要的推荐⽅方法Content-Based你在看⾔言情⼩小说1,可能也会看⾔言情⼩小说2Item-Hierarchy你买了打印机,所以你可能也要买墨盒Collaborative Filtering - Item-based《蝙蝠侠》和《变形⾦金刚》受众很相似,你看了《蝙蝠侠》,可能也会看《变形⾦金刚》Collaborative Filtering - User-based你和XXX的观影⼜⼝口味很像,XXX最近看了“暴⾛走⼤大事件”,你可能也会看Graph based你的不少微信好友都买喜欢王尼玛,你可能也会喜欢王尼玛Model based说不清楚的机器学习,告诉我正负样本,我会越来越了解你14
⼀一般步骤定义问题,选择推荐⽅方法(组合)推荐帖⼦子,结合 content-based 和 collaborative filtering相似度计算cosine similarity相似矩阵预测给定⼀一个⽤用户,预测他对帖⼦子的兴趣找出预测出的兴趣最⾼高的帖⼦子,倒序返回15
协同过滤(item-based)16user 0 user 1 user 2 user 3 user 4article 0 1 1article 1 1 2 2article 2 1 1article 3 1 1 2article 4 2 1
对于 user0,我们该推荐什么?17
计算 article 之间的相似矩阵18
为候选article打分19
What’s NextCached(速度)异步IODistributed(速度,计算量)Machine Learning(更加智能)Julia?20
谢谢邮箱:[email protected]技术博客:http://freestorm.org微博:Michael爱开源21