推荐算法
n
u
:
n_u:
nu:用户数量
n
m
:
n_m:
nm:电影数量
n
:
n:
n:电影特征数量
x
i
=
(
x
1
i
,
x
2
i
,
.
.
.
,
x
n
i
)
T
x^i=(x^i_1,x^i_2,...,x^i_n)^T
xi=(x1i,x2i,...,xni)T:电影i的特征矩阵
y
(
i
,
j
)
:
y^{(i,j)}:
y(i,j):用户j对电影i的评分
r
(
i
,
j
)
:
r(i,j):
r(i,j):用户j是否对电影i进行打分,打分了为1,未打分为0
预测用户j对电影i的评分:
w
j
⋅
x
i
+
b
j
w^j·x^i+b^j
wj⋅xi+bj
学习
w
j
,
b
j
w^j,b^j
wj,bj:
成本函数:
J
(
w
j
,
b
j
)
=
1
2
m
j
∑
i
,
r
(
i
,
j
)
=
1
(
w
j
⋅
x
i
+
b
j
−
y
(
i
,
j
)
)
2
+
λ
2
m
j
∑
k
=
1
n
(
w
j
)
2
J(w^j,b^j)=\frac{1}{2m^j}\sum_{i,r(i,j)=1}(w^j·x^i+b^j-y^{(i,j)})^2+\frac{λ}{2m^j}\sum_{k=1}^{n}(w^j)^2
J(wj,bj)=2mj1∑i,r(i,j)=1(wj⋅xi+bj−y(i,j))2+2mjλ∑k=1n(wj)2
J
(
w
j
,
b
j
)
=
1
2
∑
i
,
r
(
i
,
j
)
=
1
(
w
j
⋅
x
i
+
b
j
−
y
(
i
,
j
)
)
2
+
λ
2
∑
k
=
1
n
(
w
j
)
2
J(w^j,b^j)=\frac{1}{2}\sum_{i,r(i,j)=1}(w^j·x^i+b^j-y^{(i,j)})^2+\frac{λ}{2}\sum_{k=1}^{n}(w^j)^2
J(wj,bj)=21∑i,r(i,j)=1(wj⋅xi+bj−y(i,j))2+2λ∑k=1n(wj)2
w
:
m
i
n
1
2
∑
j
=
1
n
u
∑
i
,
r
(
i
,
j
)
=
1
(
w
j
⋅
x
i
+
b
j
−
y
(
i
,
j
)
)
2
+
λ
2
∑
j
=
1
n
u
∑
k
=
1
n
(
w
j
)
2
w:min\frac{1}{2}\sum_{j=1}^{n_u}\sum_{i,r(i,j)=1}(w^j·x^i+b^j-y^{(i,j)})^2+\frac{λ}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(w^j)^2
w:min21∑j=1nu∑i,r(i,j)=1(wj⋅xi+bj−y(i,j))2+2λ∑j=1nu∑k=1n(wj)2
学习
x
j
x^j
xj:
成本函数:
x
:
m
i
n
1
2
∑
i
=
1
n
m
∑
i
,
r
(
i
,
j
)
=
1
(
w
j
⋅
x
i
+
b
j
−
y
(
i
,
j
)
)
2
+
λ
2
∑
i
=
1
n
m
∑
k
=
1
n
(
x
i
)
2
x:min \frac{1}{2}\sum_{i=1}^{n_m}\sum_{i,r(i,j)=1}(w^j·x^i+b^j-y^{(i,j)})^2+\frac{λ}{2}\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x^i)^2
x:min21∑i=1nm∑i,r(i,j)=1(wj⋅xi+bj−y(i,j))2+2λ∑i=1nm∑k=1n(xi)2
协同过滤算法
相加得到成本函数:
J
(
w
,
b
,
x
)
=
1
2
∑
(
i
,
j
)
,
r
(
i
,
j
)
=
1
(
w
j
⋅
x
i
+
b
j
−
y
(
i
,
j
)
)
2
+
λ
2
∑
j
=
1
n
u
∑
k
=
1
n
(
w
j
)
2
+
λ
2
∑
i
=
1
n
m
∑
k
=
1
n
(
x
i
)
2
J(w,b,x)=\frac{1}{2}\sum_{(i,j),r(i,j)=1}(w^j·x^i+b^j-y^{(i,j)})^2+\frac{λ}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(w^j)^2+\frac{λ}{2}\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x^i)^2
J(w,b,x)=21∑(i,j),r(i,j)=1(wj⋅xi+bj−y(i,j))2+2λ∑j=1nu∑k=1n(wj)2+2λ∑i=1nm∑k=1n(xi)2
梯度下求最优解:
w
i
j
=
w
i
j
−
α
ə
ə
w
i
j
J
(
w
,
b
,
x
)
w_i^j=w_i^j-α\frac{ə}{əw_i^j}J(w,b,x)
wij=wij−αəwijəJ(w,b,x)
b
j
=
b
j
−
α
ə
ə
b
j
J
(
w
,
b
,
x
)
b^j=b^j-α\frac{ə}{əb^j}J(w,b,x)
bj=bj−αəbjəJ(w,b,x)
x
k
i
=
x
k
i
−
α
ə
ə
x
k
i
J
(
w
,
b
,
x
)
x_k^i=x_k^i-α\frac{ə}{əx_k^i}J(w,b,x)
xki=xki−αəxkiəJ(w,b,x)
推荐标签:1:喜欢/肯定 ,0:不喜欢/否定 ?:还未接触
将推荐算法的线性回归看作逻辑回归,求预测的
w
j
⋅
x
i
+
b
j
w^j·x^i+b^j
wj⋅xi+bj为1的概率
将成本函数中的平方误差替换为逻辑回归的误差
L
(
f
(
w
,
b
,
x
)
(
x
)
,
y
(
i
,
j
)
)
=
−
y
(
i
,
j
)
l
o
g
(
f
(
w
,
b
,
x
)
(
x
)
)
−
(
1
−
y
(
i
,
j
)
)
l
o
g
(
1
−
f
(
w
,
b
,
x
)
(
x
)
)
L(f_{(w,b,x)}(x),y^{(i,j)})=-y^{(i,j)}log(f_{(w,b,x)}(x))-(1-y^{(i,j)})log(1-f_{(w,b,x)}(x))
L(f(w,b,x)(x),y(i,j))=−y(i,j)log(f(w,b,x)(x))−(1−y(i,j))log(1−f(w,b,x)(x))
J ( w , b , x ) = 1 2 ∑ ( i , j ) , r ( i , j ) = 1 L ( f ( w , b , x ) ( x ) , y ( i , j ) ) + λ 2 ∑ j = 1 n u ∑ k = 1 n ( w j ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x i ) 2 J(w,b,x)=\frac{1}{2}\sum_{(i,j),r(i,j)=1}L(f_{(w,b,x)}(x),y^{(i,j)})+\frac{λ}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(w^j)^2+\frac{λ}{2}\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x^i)^2 J(w,b,x)=21∑(i,j),r(i,j)=1L(f(w,b,x)(x),y(i,j))+2λ∑j=1nu∑k=1n(wj)2+2λ∑i=1nm∑k=1n(xi)2
均值归一化:
将特征矩阵每一项减去其均值:
x
=
x
−
μ
x=x-μ
x=x−μ
则预测的电影评分为
w
j
⋅
x
i
+
b
j
+
μ
i
w^j·x^i+b^j+μ_i
wj⋅xi+bj+μi
避免当用户的w,b均为0时出现预测值均为0的情况
“电影”的特征 x 1 l , x 2 l x_1^l,x_2^l x1l,x2l…可能没有具体含义,但可以根据 ∣ ∣ x k − x l ∣ ∣ 2 ||x^k-x^l||^2 ∣∣xk−xl∣∣2判断相似的“电影”
基于内容的过滤
x
u
j
x_u^j
xuj user j的特征 —计算出—>
v
u
j
v_u^j
vuj 代表user j有多喜欢电影的某特征
x
m
i
x_m^i
xmi movie i的特征 —计算出—>
v
m
i
v_m^i
vmi 代表movie i的含有多少某特征
则用
v
u
j
⋅
v
m
i
v_u^j·v_m^i
vuj⋅vmi来预测评分
分别构造两个神经网络计算
v
u
j
和
v
m
i
v_u^j和v_m^i
vuj和vmi
cost function:
J
=
1
2
∑
(
i
,
j
)
,
r
(
i
,
j
)
=
1
(
v
u
j
⋅
v
m
i
−
y
(
i
,
j
)
)
2
J=\frac{1}{2}\sum_{(i,j),r(i,j)=1}(v_u^j·v_m^i-y^{(i,j)})^2
J=21∑(i,j),r(i,j)=1(vuj⋅vmi−y(i,j))2+正则化参数
同样利用
∣
∣
x
k
−
x
l
∣
∣
2
||x^k-x^l||^2
∣∣xk−xl∣∣2查找相似的“电影”