推荐算法

学习视频:80240372X 数据挖掘:理论与算法(自主模式)

大致分为两类算法:基于内容推荐,基于协同过滤推荐。以买书为例,基于内容的推荐算法会根据该书的内容,作者等信息推荐其他书籍。基于协同过滤的推荐算法会推荐我“朋友”所认为好的书。

TF-IDF

t f ( t , d ) = n t , d ∑ k n k , d i d f ( t , D ) = log ⁡ ∣ D ∣ ∣ d ∈ D : t ∈ d ∣ \begin{aligned} & tf(t,d) = \frac{n_{t,d}}{\sum_k n_{k,d}}\\ & idf(t,D) = \log\frac{|D|}{|d\in D:t\in d|} \end{aligned} ​tf(t,d)=∑k​nk,d​nt,d​​idf(t,D)=log∣d∈D:t∈d∣∣D∣​​

d为单个文档,D为所有文档,t为目标词汇,k为文档中词汇,idf的分母为包含特定搜索词的文档的个数。

t f − i d f ( t , d , D ) = t f ( t , d ) × i d f ( t , D ) \begin{aligned} tf-idf(t,d,D) = tf(t,d)\times idf(t,D) \end{aligned} tf−idf(t,d,D)=tf(t,d)×idf(t,D)​

实际操作过程中会将所有文档整合成一个文档矩阵,行代表某个词汇,列代表某个文档,矩阵中的元素表示某个词汇在某个文档中出现的次数。

Vector Space Model

文档用向量表示后,即可用向量间的计算来查看文档的相似度。

s i m ( p , q ) = c o s ( θ ) = p ⋅ q ∣ p ∣ ⋅ ∣ q ∣ \begin{aligned} sim(p,q) = cos(\theta) = \frac{p\cdot q}{|p|\cdot|q|} \end{aligned} sim(p,q)=cos(θ)=∣p∣⋅∣q∣p⋅q​​

但是,由于近义词与多义词的问题,导致难以操作。

Collaborative Filtering

协同过滤算法在最开始时,会有一个打分矩阵,每一行为一个用户,每一列为某件商品,矩阵元素为该用户对商品的评分。

I1 I2 I3
U1 0 2
U2 3 45

计算两个用户之间的相关性:

W u , v = ∑ i ∈ I ( r u , i − r ˉ u ) ( r v , i − r ˉ v ) ∑ i ∈ I ( r u , i − r ˉ u ) 2 ∑ i ∈ I ( r v , i − r ˉ v ) 2 \begin{aligned} W_{u,v} = \frac{\sum_{i\in I}(r_{u,i}-\bar{r}_u)(r_{v,i}-\bar{r}_v)}{\sqrt{\sum_{i\in I}(r_{u,i}-\bar{r}_u)^2}\sqrt{\sum_{i\in I}(r_{v,i}-\bar{r}_v)^2}} \end{aligned} Wu,v​=∑i∈I​(ru,i​−rˉu​)2 ​∑i∈I​(rv,i​−rˉv​)2 ​∑i∈I​(ru,i​−rˉu​)(rv,i​−rˉv​)​​

通过相关性预测用户a对商品i的打分:

P a , i = r ˉ a + ∑ u ∈ U ( r u , i − r ˉ u ) ⋅ W a , u ∑ u ∈ U ∣ W a , u ∣ \begin{aligned} P_{a,i} = \bar{r}_a + \frac{\sum_{u\in U}(r_{u,i}-\bar{r}_u)\cdot W_{a,u}}{\sum_{u\in U}|W_{a,u}|} \end{aligned} Pa,i​=rˉa​+∑u∈U​∣Wa,u​∣∑u∈U​(ru,i​−rˉu​)⋅Wa,u​​​

r ˉ \bar{r} rˉ为某个用户对所有商品打分的平均值(只计算打了分数的商品)。该方式为User-Based CF,计算的是行与行之间的相关性。同样可以计算列于列之间的相关性,对应的方式为Item-Based CF。

W i , j = ∑ u ∈ U ( r u , i − r ˉ i ) ( r u , j − r ˉ j ) ∑ u ∈ U ( r u , i − r ˉ i ) 2 ∑ u ∈ U ( r u , j − r ˉ j ) 2 P a , i = ∑ j ∈ I W i , j ⋅ r a , j ∑ j ∈ I ∣ W i , j ∣ \begin{aligned} & W_{i,j} = \frac{\sum_{u\in U}(r_{u,i}-\bar{r}_i)(r_{u,j}-\bar{r}_j)}{\sqrt{\sum_{u\in U}(r_{u,i}-\bar{r}_i)^2}\sqrt{\sum_{u\in U}(r_{u,j}-\bar{r}_j)^2}}\\ & P_{a,i} = \frac{\sum_{j\in I}W_{i,j}\cdot r_{a,j}}{\sum_{j\in I}|W_{i,j}|} \end{aligned} ​Wi,j​=∑u∈U​(ru,i​−rˉi​)2 ​∑u∈U​(ru,j​−rˉj​)2 ​∑u∈U​(ru,i​−rˉi​)(ru,j​−rˉj​)​Pa,i​=∑j∈I​∣Wi,j​∣∑j∈I​Wi,j​⋅ra,j​​​

[学习笔记]数据挖掘-week8相关推荐

  1. 学习笔记|数据挖掘中的数据

    这篇笔记是<数据挖掘:概念与技术>第2章的小结. 数据对象和属性 一个数据对象代表一个实体,如医疗数据库中,对象可以是患者,在大学数据库中,对象可以是学生.老师.课程.数据对象又称为样本. ...

  2. SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制...

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...

  3. 《SAS编程与数据挖掘商业案例》学习笔记之十九

    继续<SAS编程与数据挖掘商业案例>学习笔记,本文侧重数据处理实践,包括:HASH对象.自定义format.以及功能强大的正则表达式 一:HASH对象 Hash对象又称散列表,是根据关键码 ...

  4. 《SAS编程与数据挖掘商业案例》学习笔记之十六

    <SAS编程与数据挖掘商业案例>学习笔记,本次重点:sas宏变量 内容包括:宏变量.宏函数.宏参数.通配函数.字符函数.计算函数.引用函数.宏语句.宏应用 1.宏触发器: %name-to ...

  5. 《SAS编程与数据挖掘商业案例》学习笔记之十四

    继续<SAS编程与数据挖掘商业案例>学习笔记系列,本次重点:常用全程语句 所谓全程语句,是指可以用在任何地方的sas语句,既可以用在data数据步语句里面,也可以用在proc过程步里面,甚 ...

  6. python数据挖掘学习笔记】十九.鸢尾花数据集可视化、线性回归、决策树花样分析

    #2018-04-05 16:57:26 April Thursday the 14 week, the 095 day SZ SSMR python数据挖掘学习笔记]十九.鸢尾花数据集可视化.线性回 ...

  7. python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  8. python数据挖掘学习笔记】十四.Scipy调用curve_fit实现曲线拟合

    #2018-03-28 10:02:08 March Wednesday the 13 week, the 087 day SZ SSMR python数据挖掘学习笔记]十四.Scipy调用curve ...

  9. python数据挖掘学习笔记】十三.WordCloud词云配置过程及词频分析

    #2018-03-28 09:59:40 March Wednesday the 13 week, the 087 day SZ SSMR 11,12因为涉及到数据库被我暂时放弃了 python数据挖 ...

最新文章

  1. 如何用最强模型BERT做NLP迁移学习?
  2. tomcat 域名的配置
  3. PHP调用扩展的三种方式:dl() .so ZendEngine
  4. SQL总结(快速参考)
  5. linux任务处理函数,Linux信号掩码和信号处理函数
  6. leetcode题库:2.两数相加
  7. Java编程:多路查找树
  8. 移动端 短信发送,一键拨号功能
  9. 前端例程20211213:网页去色(以灰度形式显示)
  10. Java 实战项目坦克大战,一小时学会制作
  11. JavaScript 3D 散点图
  12. IT技能图谱(图谱+干货)
  13. 规划计算机网络的成本估算,传统的项目管理软件包括进度计划、成本控制、资源调度和( )等功能模块。...
  14. 音乐彩灯控制器C语言程序,基于单片机的LED彩灯控制器
  15. 猿创征文|我的后端成长之路(985科班两年,我发现了大学正确打开方式)
  16. 坎坎坷坷的深度学习之路(三)-Hello world(2)-------MNIST数据集1-MNIST格式
  17. Pr入门系列之十一:基本图形(下)
  18. 基础知识补充——白噪声、高斯白噪声
  19. C++ 请以pass-by-reference-to-const替换pass-by-value
  20. 通过Ip查询对应地址,Ip2location全球IP地址网段

热门文章

  1. 服务器配置虚拟主机方法,服务器配置虚拟主机方法
  2. [4.3]-AutoSAR零基础学习-Bsw-NvM学习 <上>
  3. stm32 hal 模拟键盘
  4. 微信小程序开发(三)表单提交、PHP后台数据交互
  5. tensorflow学习笔记(2)------北京大学 曹健
  6. 在虚幻引擎中使用蓝图实现简单的对话
  7. 即将买房的一定要关注这个问题-认筹
  8. 监控Oracle数据库的常用shell脚本 ORACLE教程 教程作者:佚名 教程来源:不详 教程栏目:ORACLE教程
  9. windos怎么查看oracle进程,在windows下查看oracle的后台进程
  10. 陶晶驰串口屏与香橙派linux开发板踩坑记录