美文网首页
推荐系统总结1(基本硬操作)

推荐系统总结1(基本硬操作)

作者: andyham | 来源:发表于2018-05-19 11:51 被阅读0次

    1.什么是推荐系统,推荐系统研究什么的问题

    推荐系统是一种信息过滤系统,用已有的连接去预测未来用户(User)和物品(Item)之间产生的连接

    1.1.评分预测:回归问题解决,但数据容易稀疏,解决推荐系统20%的问题。

    1.2.行为预测:隐式反馈比显式更靠谱,解决推荐系统80%的问题。

    -------------------------------------------------------------------------------------

    2.做推荐系统除开基本概率之外需要具备的概念

    2.1目标思维:也就是量化一切,量化目标本身。量化优化目标本身。

    2.2不确定性思维:不用因果逻辑严丝合缝地提前推演,而是用概率的眼光去看结果。比如说,出现了一个不是很合适的推荐,通常老板们会立即责问:“为什么出现这个”,这就是确定性思维在作祟,如果是不确定性思维,就会问:“出现这个的可能性有多大”。

    总之,抓住目标,不择手段地增长目标,不纠结一城一池的得失。

    -----------------------------------------------------------------------------

    3.用户画像

    越酷炫的用户画像越没什么用,用户画像应该给机器看,而不是给人看。一个推荐系统来到这个世界上,它只有一个使命,就是要在用户(User)和物品(Item)之间建立连接。一般方式就是,对用户和物品之间的匹配评分,也就是预测用户评分或者偏好。推荐系统在对匹配评分前,则首先就要将用户和物品都向量化,这样才能进行计算。用户向量化后的结果,就是 User Profile,俗称“用户画像”。所以,用户画像不是推荐系统的目的,而是在构建推荐系统的过程中产生的一个关键环节的副产品。

    3.1 用户画像方法

    用户画像构建方法分成三类:

    1. 第一类就是查户口。直接使用原始数据作为用户画像的内容,如注册资料等人口统计学信息,或者购买历史,阅读历史等,除了数据清洗等工作,数据本身并没有做任何抽象和归纳。这就跟查户口一样,没什么技术含量,但通常对于用户冷启动等场景非常有用。

    2. 第二类就是堆数据。方法就是堆积历史数据,做统计工作,这是最常见的用户画像数据,常见的兴趣标签,就是这一类,就是从历史行为数据中去挖掘出标签,然后在标签维度上做数据统计,用统计结果作为量化结果。这一类数据贡献了常见的酷炫用户画像

    3. 第三类就是黑盒子。就是用机器学习方法,学习出人类无法直观理解的稠密向量,也最不被非技术人员重视,但实际上在推荐系统中承担的作用非常大。比如使用潜语义模型构建用户阅读兴趣,或者使用矩阵分解得到的隐因子,或者使用深度学习模型学习用户的 Embedding 向量。这一类用户画像数据因为通常是不可解释,不能直接被人看懂。

    3.2 用户画像的关键因素

    维度、量化

    举个例子,我想去吃点夜宵,楼下有五家大排档,首先就是将五家大排档向量化,我暂定向量的维度有:

    价格,1~5 分,最贵的 1 分,最便宜的 5 分;

    种类,1~5 分,只烤馒头片的是 1 分,天上飞的、海里游的、地上跑的、地里种的都有就是 5 分;

    味道,1~5 分,根据以前吃的,最难吃的是 1 分,最好吃的是 5 分。

    每一个大排档都有一个向量,我自己也要有一个对应的向量,就是你有多看中这三个元素:

    价格: 1~5 分,土豪不差钱就是 1 分,囊中羞涩就是 5 分。

    种类: 1~5 分,早就想好吃什么了不在乎选择多不多 1 分,看看再说就是 5 分

    味道: 1~5 分,只是果腹就是 1 分,资深吃货就是 5 分。

    这样一来就可以对五家大排档做匹配打分了,你很容易得出哪家大排档最适合。


    假如我的向量是:价格: 3;种类: 5;味道: 5

    这就是一个大排档推荐系统的简单用户画像了,这里可以简单计算一下:每一个因素相乘后再相加,就得到每一个大排档的评分了。

    总结维度和量化的标准:

    1.每个维度的名称都是可理解的。

    2.维度数量理论上来说维度越多,画像越精细,但带来的计算代价也是很大的,需要权衡。

    3.这里的量化都是主观的,而在实际生产系统上,用户画像每个维度的量化,应该交给机器,而且以目标为导向,以推荐效果好坏来反向优化出用户画像才有意义,像这里这个简单的例子,没有去管推荐效果而先行主观量化了每一个维度,是大忌。

    -------------------------------------------------------------------------------------

    4.挖掘用户画像的算法

    4.1 从文本开始:

    用户:姓名、个人签名、发表的评论、动态、日记等。

    物品:物品的标题、描述、本身的内容(一般指新闻资讯类)。

    4.2 构建用户画像:

    4.2.1. 把所有非结构化的文本结构化,去粗取精,保留关键信息;

    我们拿到的文本,常常是自然语言描述的,用行话说,就是“非结构化”的,但是计算机在处理时,只能使用结构化的数据索引,检索,然后向量化后再计算;所以分析文本,就是为了将非结构化的数据结构化,好比是将模拟信号数字化一样,只有这样才能送入计算机,继续计算。这从物品端的文本信息,我们可以利用成熟的 NLP 算法分析得到的信息有下面几种。

    关键词提取:最基础的标签来源,也为其他文本分析提供基础数据,常用 TF-IDFTerm Frequency,是词频, Inverse Document Frequency 是逆文档频率,属于无监督学习) 和 TextRank(呈现出这样的特点:那些有共现关系的会互相支持对方成为关键词)

    实体识别:人物、位置和地点、著作、影视剧、历史事件和热点事件等,常用基于词典的方法结合 CRF 模型。

    内容分类:将文本按照分类体系分类,用分类来表达较粗粒度的结构化信息(经典的算法是 SVM ,在工具上现在最常用的是 Facebook 开源的 FastText)。

    实体识别:在无人制定分类体系的前提下,无监督地将文本划分成多个类簇也很常见,别看不是标签,类簇编号也是用户画像的常见构成。对于序列标注问题,通常的算法就是隐马尔科夫模型(HMM)或者条件随机场(CRF)(工业级别的工具上 spaCy 比 NLTK 在效率上优秀一些)。

    ***主题模型(聚类)***:从大量已有文本中学习主题向量,然后再预测新的文本在各个主题上的概率分布情况,也很实用,其实这也是一种聚类思想,主题向量也不是标签形式,也是用户画像的常用构成。(初创公司或初创产品,没有业务专家为你的应用制定分类体系,这时候如果能在文本数据上跑一个 LDA 模型,那世界就显得非常美好了。)

    嵌入:“嵌入”也叫作 Embedding,从词到篇章,无不可以学习这种嵌入表达。嵌入表达是为了挖掘出字面意思之下的语义信息,并且用有限的维度表达出来。

    拿着这些向量可以做以下的事情:1.计算词和词之间的相似度,扩充结构化标签;2.累加得到一个文本的稠密向量;3.用于聚类,会得到比使用词向量聚类更好的语义聚类效果。代表word2vec

    4.2.2. 根据用户行为数据把物品的结构化结果传递给用户,与用户自己的结构化信息合并。

    有了结构化的关键字后,接下来问题就来了,如何把物品的结构化信息给用户呢?一种简单粗暴的办法是直接把用户产生过行为的物品标签累积在一起,但这太不机器学习了。我们把用户对物品的行为,消费或者没有消费看成是一个分类问题。用户用实际行动帮我们标注了若干数据,那么挑选出他实际感兴趣的特性就变成了特征选择问题。最常用的是两个方法:卡方检验(CHI,有监督的,需要提供分类标注信息)和信息增益(IG,决策树分类算法,挑选分裂节点时就是计算各个属性的信息增益)。基本思想是:

    4.2.2.1把物品的结构化内容看成文档;

    4.2.2.2把用户对物品的行为看成是类别;

    4.2.2.3每个用户看见过的物品就是一个文本集合;

    4.2.2.4在这个文本集合上使用特征选择算法选出每个用户关心的东西。

    卡方检验和信息增益不同之处在于:前者是针对每一个行为单独筛选一套标签出来,后者是全局统一筛选。这些方法都是在离线阶段批量完成的,把用户的画像生成配置成离线任务,每天更新一遍,次日就可以使用新的用户画像

    -------------------------------------------------------------------------------------

    5 推荐系统标签

    做一个简单的推荐系统其实不难,因为其实内容数据非常易得,哪怕是在一个产品刚刚上线,用心找的话总能找到一些可以使用的内容,不需要有用户行为数据就能够做出推荐系统的第一版。所以内容数据尤其是文本,只要深入挖掘,就可以挖掘出一些很有用的信息(也就是标签)供推荐系统使用。如果不能让自己的推荐系统输在起跑线上,得富养才行。那么,如何养成一个基于内容的推荐系统?

    5.1基本功

    基于内容的推荐做好,需要做好“抓、洗、挖、算”四门功课。它们分别是对应了下面的内容。

    1 抓:大厂们从来不公开说的一件事是,他们一直在持续抓数据丰富自己的内容,所以做好一个基于内容的推荐,抓取数据补充内容源,增加分析的维度,两者必不可少。

    2 洗:抓来的数据,相当于捡别人掉地上的东西吃,我们也得注意卫生,洗洗更健康,数据也一样,冗余的内容、垃圾内容、政治色情等敏感内容等等都需要被洗出去。

    3 挖:不管是抓来的数据,还是自家的数据,如果不深入挖掘,那就和捧着金饭碗去要饭一样,浪费了大好资源。可以说,很多推荐系统提升效果并不是用了更复杂的推荐算法,而是对内容的挖掘做得更加深入。

    4 算:匹配用户的兴趣和物品的属性,计算出更合理的相关性,这是推荐系统本身的使命,不仅仅是基于内容的推荐才要做的。

    5.2 推荐系统流程说明:

    5.2.1 概述

    内容这一端:内容源经过内容分析,得到结构化的内容库和内容模型,也就是物品画像

    用户这一端:用户看过推荐列表后,会产生用户行为数据结合物品画像,经过用户分析得到用户画像

    对于那些没有给用户推荐过的新内容,经过相同的内容分析过程后,就可以经过推荐算法匹配,计算得到新的推荐列表给用户。如此周而复始,永不停息。

    5.2.2 内容源

    在互联网中,抓数据是一件可做不可说的事情,哪怕是市值几千亿的大厂,也有专门的小分队抓数据,补充推荐系统每天的内容消耗。因为,只有当内容有多样性了,一个推荐系统才有存在的合法性,所以大厂职工们抓数据也是为了保住自己的饭碗。爬虫技术本身非常复杂、非常有学问,关于这个环节的边角算法,在后面的文章来讲。注意:新的物品要被推荐出去,首选内容推荐

    5.2.3 内容分析和用户分析(重点)

    基于内容的推荐,最重要的不是推荐算法,而是内容挖掘和分析。内容挖掘越深入,哪怕早期推荐算法仅仅是非常硬的规则,也能取得不俗的效果。举个例子,如果推荐物品是短视频,我们分几种情况看:

    如果短视频本身没有任何结构化信息,如果不挖掘内容,那么除了强推或者随机小流量,没有别的合理曝光逻辑了;

    如果对视频的文本描述,比如标题等能够有内容分类,比如是娱乐类,那么对于喜欢娱乐的用户来说就很合理;

    如果能够进一步分析文本的主题,那么对于类似主题感兴趣的用户就可能得到展示;

    如果还能识别出内容中主角是吴亦凡,那就更精准锁定一部分用户了;

    如果再对内容本身做到嵌入分析,那么潜藏的语义信息也全部抓住,更能表达内容了。

    举这个例子是为了说明:随着内容分析的深入,能抓住的用户群体就越细致,推荐的转化率就越高,用户对产品的好感度也就增加了。上一篇中我列举了文本数据——这也是内容数据最常见形式的分析方法。

    内容分析的产出有两个:

    结构化内容库--最重要的用途是结合用户反馈行为去学习用户画像,具体的方法在上一篇中已经介绍了。

    内容分析模型--容易被忽略的是这个用途,在内容分析过程中得到的模型,比如说:分类器模型;主题模型;实体识别模型;嵌入模型。这些模型主要用在:当新的物品刚刚进入时,需要实时地被推荐出去,这时候对内容的实时分析,提取结构化内容,再于用户画像匹配

    5.2.4 内容推荐算法

    对于基于内容的推荐系统,最简单的推荐算法当然是计算相似性即可,用户的画像内容就表示为稀疏的向量,同时内容端也有对应的稀疏向量,两者之间计算余弦相似度,根据相似度对推荐物品排序。你别嫌糙,如果你内容分析做得深入的话,通常效果还不错,而且基于内容的推荐天然有一个优点:可解释性(判别过程是否可以转化成具备逻辑关系的规则)非常强。

    如果再进一步,要更好地利用内容中的结构化信息,因为一个直观的认识是:不同字段的重要性不同比如说,一篇新闻,正文和标题中分析出一个人物名,评论中也分析出其他用户讨论提及的一些人物名,都可以用于推荐。直观上新闻的正文和标题中更重要。那么,我们可以借鉴信息检索中的相关性计算方法来做推荐匹配计算:BM25F 算法。常用的开源搜索引擎如 Lucene 中已经实现了经典的 BM25F 算法,直接拿来使用即可。

    前面提到的两种办法虽然可以做到快速实现、快速上线,但实际上都不属于机器学习方法,因为没有考虑推荐的目标,那么,按照机器学习思路该怎么做呢?一种最典型的场景:提高某种行为的转化率,如点击、收藏、转发等。那么标准的做法是:收集这类行为的日志数据,转换成训练样本,训练预估模型

    每一条样本由两部分构成:一部分是特征,包含用户端的画像内容,物品端的结构化内容,可选的还有日志记录时一些上下文场景信息,如时间、地理位置、设备等等,另一部分就是用户行为,作为标注信息,包含“有反馈”和“无反馈”两类。用这样的样本训练一个二分类器,常用模型是逻辑回归(Logistic Regression)和梯度提升树(GBDT)或者两者的结合。在推荐匹配时,预估用户行为发生的概率,按照概率排序。这样更合理更科学,而且这一条路可以一直迭代优化下去。

    总结:

    相关文章

      网友评论

          本文标题:推荐系统总结1(基本硬操作)

          本文链接:https://www.haomeiwen.com/subject/oupodftx.html