美文网首页
数据挖掘干货总结(五)--推荐算法之CB

数据挖掘干货总结(五)--推荐算法之CB

作者: ShaunXi | 来源:发表于2022-05-07 09:31 被阅读0次

本文共计2960字,预计阅读时长十分钟


推荐算法(一)--CB算法

 

推荐的本质

推荐分为非个性化和个性化,非个性化推荐比如各类榜单,而本系列主要介绍个性化推荐,即:

在合适的场景,合适的时机,通过合适的渠道,把合适的内容,推荐给合适的用户

推荐算法的种类

1. 基于内容Content Based

2. 基于协同Collaboration Filtering

– User Based CF

– Item Based CF

、CB算法详解

1. Content的内容

① 只引入Item属性的Content Based推荐

优点:

a.提升推荐结果的相关性

b结果可解释

c.推荐结果容易被用户感知

缺点:

a.无个性化

b.依赖于对item的深入分析

② 引入Item和User属性的Content Based推荐

在上一步的item提取特征之后的基础上,加上了用户的一些行为数据。需要注意,行为数据也需要特征化后才能和之前的item特征放在一起进行分析,其中可能会涉及到一些one-hot编码的问题,这里不展开,需要了解的话,见:

怎么理解one-hot?

 

优点:

a.用户模型刻画了用户兴趣需求

b.推荐形式多样,具有个性化

c.结果可解释

缺点:

a.推荐精度低

b.马太效应

c.用户行为稀疏,导致覆盖率低

2. 需求举例(仅基于item的特征):

用户小明听了一首歌,每首歌(item)的数据属性包括编号(id)和内容(content),如:

id content

id1 王铮亮 时间都去哪了 《私人订制》插曲

... ...

根据CB,向他推荐10首歌

3. 解决步骤和核心代码:

① 对歌曲库中的每首歌content进行分词,并用tf_idf赋值

+++jieba_score_udf.py+++

# coding=utf-8

import  sys

reload(sys)

sys.setdefaultencoding('utf-8')

import jieba.analyse

import jieba

import json

import re

#正则匹配中文

pattern = re.compile(u'[一-龥]')

#切词,并用tf_idf赋值

for line in sys.stdin:

   cols = line.strip().split(' ')

   id = cols[0]

   words_list = jieba.analyse.extract_tags(cols[1],topK=10,withWeight=True)

for (word,score) in words_list:

if len(re.findall(pattern,word)) != 0:

print '%s %s %s' % (id,word,score)

大致得到(数据是随便编的) t1

id word score  

id1 时间 0.1

id1 王铮亮 0.5

id1 私人 0.5

id2 时间 0.4

id2 煮 0.4

id2 雨 0.1

id3 私人 0.3

... ... ...

② 在hive中调用这个udf,得到倒排表

hive> add 'udfpath/jieba_score_udf.py'

hive> select

hive> word,collect_list(concat_ws(':',id,score)) as id_score_list

hive> from

hive> (select transform(id,desc) using 'python jieba_score_udf.py' as(id,word,score)

hive> from badou.musics sort by score desc

hive> ) t

hive> group by word;

大致得到(数据是随便编的) t2

word id_score_list

王铮亮 [id1:0.5,...]

时间 [id2:0.4, id1:0.1...]

私人 [id1:0.5, id3:0.3,...]

... ...

③ 得到ids推荐列表

hive> select tt1.id,collect_list(concat_ws('_', tt2.id, nscore)) ids

hive> from

hive> (select tt1.id, tt2.id, sum(tt2.score) nscore

hive> from

hive>   (select tt1.id, tt2.id, tt2.score new_score

hive>     from

hive>       (select id, word from t1) tt1

hive>     join

hive>       (select word, id, score from t1) tt2

hive>     on tt1.word = tt2.word

hive>   ) tt3

hive> where tt1.id <> tt2.id

hive> group by tt1.id,tt2.id

hive> order by nscore desc) tt4;

大致得到(数据是随便编的) t3

id ids

id1 [id2:0.5,...]

id2 [id1:0.5, id3:0.1...]

id3 [id2:0.5, id1:0.3,...]

... ...

④ 推荐

i) 如果小明听的这首歌id在t3表中存在,那么直接取出对应的ids即可

ii) 如果小明听的这首歌id在t3表中不存在。

a. 需要在线对其content做分词,得到一个word列表:(word1, word2, word3,...)

b. 在t1中找出对应的id分数,求和排序,取top10即可

hive> select id, sum(score) nscore

hive> from

hive> (select id, word, score from t1

hive> where word in (word1, word2, word3,...) tt

hive> group by id

hive> order by nscore desc

hive> limit  10;

或者在t2倒排表中选取对应的ids,解析后求和排序,结果都一样,但可能会更快一点

hive> select

hive> split(id_score,':')[0] as id,

hive> sum(split(id_score,':')[1] as score) nscore

hive> from

hive>   (select word, explode(id_score_list,',') id_score

hive>   from t2

hive>   where word in (word1, word2, word3,...)

hive> ) ttt

hive> group by id

hive> order by nscore desc

hive> limit  10; 


不切实际的期望和恐惧是造成焦虑的根源

我们需要以实际情况和发生概率为依据

避免非黑即白地去看待事物

相关文章

  • 数据挖掘干货总结(五)--推荐算法之CB

    本文共计2960字,预计阅读时长十分钟 推荐算法(一)--CB算法 一、推荐的本质 推荐分为非个性化和个性化,非个...

  • 频繁项集挖掘算法——Apriori算法实现初步

    基本概念 这周数据挖掘课上老师介绍了一种基础的数据挖掘算法——频繁项集挖掘算法。这种算法用一句话来总结就是要在数据...

  • 关联规则(二)

    参考:数据挖掘入门系列教程(五)之Apriori算法Python实现Python 极简关联分析(购物篮分析) 数据...

  • 数据挖掘干货总结(四)--聚类算法

    本文共计2680字,预计阅读时长七分钟 聚类算法 一、本质 将数据划分到不同的类里,使相似的数据在同一类里,不相似...

  • 数据挖掘干货总结(七)-- LR回归算法

    本文共计1234字,预计阅读时长八分钟 回归算法 一、回归的本质 发现y和x的规律,以预测新情况下的y值 二、回归...

  • 学习笔记--(移动数据挖掘引言)

    移动数据挖掘的定义 移动数据挖掘研究的是基于移动数据的数据挖掘算法。这些数据算法需要更多地利用移动数据特性,挖掘与...

  • 协同过滤-ALS算法

    ALS算法应用场景 ALS属于数据挖掘,可以做推荐系统,比如电影推荐,商品推荐,广告推荐等. 原理就是给各个指标,...

  • 推荐算法——基于协同过滤CF

    前边我们已经介绍了推荐算法里的基于内容的推荐算法CB,今天我们来介绍一下基于协同的推荐算法Collaboratio...

  • 学习大数据

    大数据采集、分布式存储、并行计算;信息检索(搜索/推荐/广告)、数据挖掘(概念/流程/机器学习/算法/模型) 数据...

  • 雪球财经

    1. 推荐算法工程师(文本挖掘) 职位描述: 1、负责雪球社区基础数据挖掘核心技术研究和研发 2、为雪球推荐和搜索...

网友评论

      本文标题:数据挖掘干货总结(五)--推荐算法之CB

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