本周内容较多,故分为上下两篇文章。
本文为下篇。
一、内容概要
1. Anomaly Detection
- Density Estimation
- Problem Motivation
- Gaussian Distribution
- Algorithm
- Building an Anomaly Detection System(创建异常检测系统)
- Developing and Evaluating an Anomaly Detection System
- Anomaly Detection vs. Supervised Learning
- Choosing What Features to Use
- Multivariate Gaussion Distribution(多元高斯分布)
- Multivariate Gaussion Distribution
-
Anomaly Detection using the Multivariate Gaussion Distribution
2. Recommender System
- Predicting Movie
- Problem Formulation
- Content Based Recommendations
- Collaborative Filtering(协同过滤)
- Collaborative Filtering
- Collaborative Filtering Algorithm
- Low Rank Matrix Factorization(低秩矩阵分解)
- Vectorization(向量化): Low Rank Matrix Factorization
- Implementational Detail:Mean Normalization
二、重点&难点
Recommender System(推荐系统)
1.Predicting Movie
1)Problem Formulation
下面将以推荐电影为例来介绍推荐系统的实现。
movie | Alice | Bob | Carol | Dave |
---|---|---|---|---|
Love at last | 5 | 5 | 0 | 0 |
Romance forever | 5 | ? | ? | 0 |
Cute Puppies of love | ? | 4 | 0 | ? |
nonstop car chases | 0 | 0 | 5 | 4 |
swords & karate | 0 | 0 | 5 | ? |
上面的分数表示用户对该电影的评分(0~5分,?表示未获得评分数据)
为方便下面叙述,对如下符号进行说明:
- nu:表示用户数量
- nm:表示电影数量
- r(i,j):如果等于1则表示用户j对电影i进行了评分
- y(i,j):表示用户j对电影i的评分
上面例子中可以知道 nu=4nm=5y(1,1)=5
2)Content Based Recommendations(基于内容的推荐)
- 1.获取特征向量
为了实现推荐,我们为每部电影提取出了两个特征值,即x1(浪漫指数)和x2(动作指数)
movie | Alice | Bob | Carol | Dave | x1 | x2 |
---|---|---|---|---|---|---|
Love at last | 5 | 5 | 0 | 0 | 0.9 | 0.1 |
Romance forever | 5 | ? | ? | 0 | 1.0 | 0 |
Cute Puppies of love | ? | 4 | 0 | ? | 0.99 | 0.01 |
nonstop car chases | 0 | 0 | 5 | 4 | 0.1 | 0.9 |
swords & karate | 0 | 0 | 5 | ? | 0 | 1.0 |
由上表可知每部电影都可以用一组特征向量表示:
- 每一步电影都加上一个额外的特征,即 x0=1
- 每部电影都有一个(3,1)的特征向量,例如第一部电影(Love at last):x(1)=[1,0.9,0.1]T
对于所有数据我们有数据特征向量组为{x(1),x(2),x(3),x(4),x(5)}
2.特征权重θ
用户j对电影i的评分预测可以表示为(θj)Txi=stars3. 线性回归预测
和线性回归一样,可以得到如下优化目标函数:
- 对单个用户而言
minθ(j)12∑i;r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2n∑k=1(θ(j)k)2
- 对所有用户而言
minθ(1),...,θ(nu)12nu∑j=1∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2nu∑j=1n∑k=1(θ(j)k)2
应用梯度下降:
当k=0,θ(j)k:=θ(j)k−α∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))x(i)k
当k≠0,θ(j)k:=θ(j)k−α∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))x(i)k+λθ(j)k
2.Collaborative Filtering(协同过滤)
1)Collaborative Filtering
在之前的基于内容的推荐系统中,对于每一部电影,我们都掌握了可用的特征,使用这些特征训练出了每一个用户的参数。相反地,如果我们拥有用户的参数,我们可以学习得出电影的特征。即由θ求出x。
minθ(1),...,θ(nm)12nu∑j=1∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2nm∑j=1n∑k=1(θ(j)k)2
注意累计符号的上限由nu变成了nm
但是如果我们既没有用户的参数也没有电影的特征该怎么办?这时协同过滤就可以起作用了,只需要对优化目标函数进行改进,如下:
J(x(1),...,x(nm),θ(1),...,θ(nu))=12∑(i,j):r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2nu∑j=1n∑k=1(θ(j)k)2+λ2nm∑i=1n∑k=1(x(i)k)2
对代价函数求偏导结果如下:
x(i)k:=x(i)k−α(∑j:r(i,j)=1((θ(j))Tx(i)−y(i,j))θ(j)k+λx(i)k)
θ(j)k:=θ(j)k−α(∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))x(i)k+λθ(j)k)
协同过滤算法使用步骤如下:
- 初始 x (1) ,x (2) ,...,x (nm) ,θ (1) ,θ (2) ,...,θ (nu) 为一些随机小值
- 使用梯度下降算法最小化代价函数
- 在训练完算法后,我们预测(θ(j))Tx(i) 为用户 j 给电影 i 的评分
3. Low Rank Matrix Factorization(低秩矩阵分解)
1)Vectorization(向量化): Low Rank Matrix Factorizationv
movie | Alice | Bob | Carol | Dave |
---|---|---|---|---|
Love at last | 5 | 5 | 0 | 0 |
Romance forever | 5 | ? | ? | 0 |
Cute Puppies of love | ? | 4 | 0 | ? |
nonstop car chases | 0 | 0 | 5 | 4 |
swords & karate | 0 | 0 | 5 | ? |
(同样的例子)很显然我们可以得到评分矩阵Y
Y=[55005??0?40?00540050]
推出评分
((θ(1))T(x(1))(θ(2))T(x(1))⋯(θ(nu))T(x(1))(θ(1))T(x(2))(θ(2))T(x(2))⋯(θ(nu))T(x(2))⋮⋮⋱⋮(θ(1))T(x(nm))(θ(2))T(x(nm))⋯(θ(nu))T(x(nm)))
如何寻找与电影i相关的电影j呢?满足||x(i)−x(j)||较小的前几部影片即可。
2)Implementational Detail:Mean Normalization
假如增加了一个用户marsggbo,他很单纯,这5部电影都还没看过,所以没有评分数据,这是可以通过均值正则化来初始化数据,具体实现如下:
movie | Alice | Bob | Carol | Dave | Marsggbo |
---|---|---|---|---|---|
Love at last | 5 | 5 | 0 | 0 | ? |
Romance forever | 5 | ? | ? | 0 | ? |
Cute Puppies of love | ? | 4 | 0 | ? | ? |
nonstop car chases | 0 | 0 | 5 | 4 | ? |
swords & karate | 0 | 0 | 5 | ? | ? |
此时的评分矩阵为
Y=[5500?5??0??40??0054?0050?]
首先求出每行的均值(未评分不用计算)
μ=[.52.522.251.25]→Y=[2.52.5−2.5−2.5?2.5??−2.5??2−2??−2.25−2.252.751.75?−1.25−1.253.75−1.25?]
预测值为(θ(j))T(x(i))+μi,因为优没有评分。所以化目的函数只需要minλ2∑nuj=1∑nk=1(θ(j)k)2,很显然θ=→0,所以新增用户评分数据可初始化为均值,即
Y=[55002.55??02.5?40?200542.2500501.25]
MARSGGBO原创
2017-8-14