1.Supervised Learning 监督学习
给定一个数据集,并且知道其一些正确输出,能够明确知道是不是正确或者错误
2.Unsupervised Learning 无监督学习
只给出一个数据集,并没有给出其关系,需要我们自行寻找其结构
Model represention
m = number of examples
x = input
y = output
h = hypotheis h(x) = y 是一个预测,猜测的结构
Cost Function
代价函数(平方误差函数): J ( θ ) = 1 2 m ⋅ ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) J(\theta)=\frac{1}{2m}\cdot\sum^{m}_{i=1}(h(x^{(i)})-y^{(i)}) J(θ)=2m1⋅∑i=1m(h(x(i))−y(i))
目标:选择合适的h并且调整参数 θ \theta θ使得 J ( θ ) J(\theta) J(θ)最小
1.Multiple features
含有多特征量的线性回归,通过矩阵乘法进行表示,通过向量的内积构造代价函数。n个特征量往往通过n+1维向量进行优化,第零维度表示初始值。回归方程如下所示
h θ ( x ) = [ θ 0 θ 1 … θ n ] [ x 0 x 1 ⋮ x n ] = θ T x h_{\theta}(x)=\left[\begin{array}{llll} \theta_{0} & \theta_{1} & \ldots & \theta_{n} \end{array}\right]\left[\begin{array}{c} x_{0} \\ x_{1} \\ \vdots \\ x_{n} \end{array}\right]=\theta^{T} x hθ(x)=[θ0θ1…θn]⎣⎢⎢⎢⎡x0x1⋮xn⎦⎥⎥⎥⎤=θTx
2.Gridient descent for Multiple Variables
代价函数的定义仍为:
J ( θ ) = 1 2 m ⋅ ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) J(\theta)=\frac{1}{2m}\cdot\sum^{m}_{i=1}(h(x^{(i)})-y^{(i)}) J(θ)=2m1⋅∑i=1m(h(x(i))−y(i))
同样梯度递减算法,也没有发生变化,区别仅在于需要在更多维度上执行该算法。
为了更快找到最优点,可以通过调整特征值的统计特性,
J ( θ ) J(\theta) J(θ)应该随着迭代更新次数增加,逐渐下降。但是 α \alpha α的大小会影响其效果,过小更新过慢,过大则可能导致,不稳定的结果。
3.Features and Polynomial Regression
通过多项式的预测函数,可以拟合更为复杂的特征,构造的二次函数或者三次函数,也可以看作不同的变量,用线性回归方法,构造函数。
一个预测函数示例 h ( θ ) = θ 0 + θ 1 x + θ 2 x 2 h(\theta)= \theta_0 + \theta_1 x + \theta_2 x^2 h(θ)=θ0+θ1x+θ2x2
另外 特征缩放的方法在多项式回归中,要注意不同幂次函数的极差不同。
1.Normal equation
目标:给出一种利用解析式一次性求出最优解的方法
主要时间耗费在计算矩阵上,如果特征过多,会导致计算较慢
定义: θ = ( X T X ) − 1 X y \theta=(X^TX)^{-1}Xy θ=(XTX)−1Xy
其中x为特征矩阵m*(N+1)维,在原矩阵的基础上增加一个列全为
2.noninvertibilty
如果 X T X X^TX XTX不可逆,有两种可能,
- 存在两个不同的特征高度相关
- 特征值过多
1.Classification
有若干个类和阈值,相互离散,根据阈值判断归属
2.Hypothesis Representation
1.Cost Function
逻辑回归代价函数定义
J ( θ ) = 1 m ∑ i = 1 m Cost ( h θ ( x ( i ) ) , y ( i ) ) Cost ( h θ ( x ) , y ) = − log ( h θ ( x ) ) if y = 1 Cost ( h θ ( x ) , y ) = − log ( 1 − h θ ( x ) ) if y = 0 \begin{array}{ll} J(\theta)=\frac{1}{m} \sum_{i=1}^{m} \operatorname{Cost}\left(h_{\theta}\left(x^{(i)}\right), y^{(i)}\right) & \\ \operatorname{Cost}\left(h_{\theta}(x), y\right)=-\log \left(h_{\theta}(x)\right) & \text { if } \mathrm{y}=1 \\ \operatorname{Cost}\left(h_{\theta}(x), y\right)=-\log \left(1-h_{\theta}(x)\right) & \text { if } \mathrm{y}=0 \end{array} J(θ)=m1∑i=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)=−log(hθ(x))Cost(hθ(x),y)=−log(1−hθ(x)) if y=1 if y=0
根据定义易得
Cost ( h θ ( x ) , y ) = 0 if h θ ( x ) = y Cost ( h θ ( x ) , y ) → ∞ if y = 0 and h θ ( x ) → 1 Cost ( h θ ( x ) , y ) → ∞ if y = 1 and h θ ( x ) → 0 \begin{aligned} \operatorname{Cost}\left(h_{\theta}(x), y\right) &=0 \text { if } h_{\theta}(x)=y \\ \operatorname{Cost}\left(h_{\theta}(x), y\right) & \rightarrow \infty \text { if } y=0 \text { and } h_{\theta}(x) \rightarrow 1 \\ \operatorname{Cost}\left(h_{\theta}(x), y\right) & \rightarrow \infty \text { if } y=1 \text { and } h_{\theta}(x) \rightarrow 0 \end{aligned} Cost(hθ(x),y)Cost(hθ(x),y)Cost(hθ(x),y)=0 if hθ(x)=y→∞ if y=0 and hθ(x)→1→∞ if y=1 and hθ(x)→0
简化后端的代价函数
Cost ( h θ ( x ) , y ) = − y log ( h θ ( x ) ) − ( 1 − y ) log ( 1 − h θ ( x ) ) \operatorname{Cost}\left(h_{\theta}(x), y\right)=-y \log \left(h_{\theta}(x)\right)-(1-y) \log \left(1-h_{\theta}(x)\right) Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))
所以代价函数为
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \log \left(h_{\theta}\left(x^{(i)}\right)\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right] J(θ)=−m1∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
统一代价函数后,就可以设置合数的梯度递降算法
Repeat { θ j : = θ j − α ∂ ∂ θ j J ( θ ) } \begin{array}{l} \text { Repeat }\{\\ \theta_{j}:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J(\theta)\\ \} \end{array} Repeat {θj:=θj−α∂θj∂J(θ)}
向量化之后得到
θ : = θ − α m X T ( g ( X θ ) − y ⃗ ) \theta:=\theta-\frac{\alpha}{m} X^{T}(g(X \theta)-\vec{y}) θ:=θ−mαXT(g(Xθ)−y)
3. Advanced Optimization
function [jVal, gradient] = costFunction(theta)
jVal = [...code to compute J(theta)...];
gradient = [...code to compute derivative of J(theta)...];
end
通过调用库函数,应用更为高级的优化算法。
构造分类器,每次从所有数据中分离一类,最后就可以完成整体的分类过程。
y ∈ { 0 , 1 … n } h θ ( 0 ) ( x ) = P ( y = 0 ∣ x ; θ ) h θ ( 1 ) ( x ) = P ( y = 1 ∣ x ; θ ) … h θ ( n ) ( x ) = P ( y = n ∣ x ; θ ) prediction = max i ( h θ ( i ) ( x ) ) \begin{array}{l} y \in\{0,1 \ldots n\} \\ h_{\theta}^{(0)}(x)=P(y=0 \mid x ; \theta) \\ h_{\theta}^{(1)}(x)=P(y=1 \mid x ; \theta) \\ \ldots \\ h_{\theta}^{(n)}(x)=P(y=n \mid x ; \theta) \\ \text { prediction }=\max _{i}\left(h_{\theta}^{(i)}(x)\right) \end{array} y∈{0,1…n}hθ(0)(x)=P(y=0∣x;θ)hθ(1)(x)=P(y=1∣x;θ)…hθ(n)(x)=P(y=n∣x;θ) prediction =maxi(hθ(i)(x))
原因:完美拟合所有数据点,但是却得到了一条过于曲折的曲线,不能很好的进行预测。
与欠拟合相对应,后者为因为拟合的数据点过少而导致曲线无法进行预测。
解决方法:
3.Regularized Logistic Regression
正则化的代价函数如下。
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \log \left(h_{\theta}\left(x^{(i)}\right)\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]+\frac{\lambda}{2 m} \sum_{j=1}^{n} \theta_{j}^{2} J(θ)=−m1i=1∑m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2
1.non-liner hypotheses
常规的多项式方法建立的假设函数,随着特征值的增加,面临项数过多,以及过拟合的问题,
2.Neorons ans the Brain
类似大脑,利用不同的层将不同的特征值组合起来,形成一张网络,就是神经网络。
简化的表示为 [ x 0 x 1 x 2 ] → [ ] → h θ ( x ) [x_0x_1x_2] \to [\ ] \to h_\theta(x) [x0x1x2]→[ ]→hθ(x)
包括输入层输出层和隐藏层
第一层也被称为输入层
最后一层为输出层
其余的为隐藏层
举个栗子
当一个神经网络只有一个隐藏层时,其可以表示为
[ x 0 x 1 x 2 ] → [ a 1 ( 2 ) a 2 ( 2 ) a 3 ( 2 ) ] → h θ ( x ) [x_0x_1x_2] \to [ a_1^{(2)}a_2^{(2)}a_3^{(2)}] \to h_\theta(x) [x0x1x2]→[a1(2)a2(2)a3(2)]→hθ(x)
每一个动作的描述为
a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) h Θ ( x ) = a 1 ( 3 ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) \begin{array}{r} a_{1}^{(2)}=g\left(\Theta_{10}^{(1)} x_{0}+\Theta_{11}^{(1)} x_{1}+\Theta_{12}^{(1)} x_{2}+\Theta_{13}^{(1)} x_{3}\right) \\ a_{2}^{(2)}=g\left(\Theta_{20}^{(1)} x_{0}+\Theta_{21}^{(1)} x_{1}+\Theta_{22}^{(1)} x_{2}+\Theta_{23}^{(1)} x_{3}\right) \\ a_{3}^{(2)}=g\left(\Theta_{30}^{(1)} x_{0}+\Theta_{31}^{(1)} x_{1}+\Theta_{32}^{(1)} x_{2}+\Theta_{33}^{(1)} x_{3}\right) \\ h_{\Theta}(x)=a_{1}^{(3)}=g\left(\Theta_{10}^{(2)} a_{0}^{(2)}+\Theta_{11}^{(2)} a_{1}^{(2)}+\Theta_{12}^{(2)} a_{2}^{(2)}+\Theta_{13}^{(2)} a_{3}^{(2)}\right) \end{array} a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))
定义变量z使得
a 1 ( 2 ) = g ( z 1 ( 2 ) ) a 2 ( 2 ) = g ( z 2 ( 2 ) ) a 3 ( 2 ) = g ( z 3 ( 2 ) ) \begin{array}{l} a_{1}^{(2)}=g\left(z_{1}^{(2)}\right) \\ a_{2}^{(2)}=g\left(z_{2}^{(2)}\right) \\ a_{3}^{(2)}=g\left(z_{3}^{(2)}\right) \end{array} a1(2)=g(z1(2))a2(2)=g(z2(2))a3(2)=g(z3(2))
所以有
z k ( 2 ) = Θ k , 0 ( 1 ) x 0 + Θ k , 1 ( 1 ) x 1 + ⋯ + Θ k , n ( 1 ) x n z_{k}^{(2)}=\Theta_{k, 0}^{(1)} x_{0}+\Theta_{k, 1}^{(1)} x_{1}+\cdots+\Theta_{k, n}^{(1)} x_{n} zk(2)=Θk,0(1)x0+Θk,1(1)x1+⋯+Θk,n(1)xn
向量化为
x = [ x 0 x 1 ⋯ x n ] z ( j ) = [ z 1 ( j ) z 2 ( j ) ⋯ z n ( j ) ] x=\left[\begin{array}{c} x_{0} \\ x_{1} \\ \cdots \\ x_{n} \end{array}\right] z^{(j)}=\left[\begin{array}{c} z_{1}^{(j)} \\ z_{2}^{(j)} \\ \cdots \\ z_{n}^{(j)} \end{array}\right] x=⎣⎢⎢⎡x0x1⋯xn⎦⎥⎥⎤z(j)=⎣⎢⎢⎢⎡z1(j)z2(j)⋯zn(j)⎦⎥⎥⎥⎤
进而有
z ( j + 1 ) = Θ ( j ) a ( j ) z^{(j+1)}=\Theta^{(j)} a^{(j)} z(j+1)=Θ(j)a(j)
可以转化为
h Θ ( x ) = a ( j + 1 ) = g ( z ( j + 1 ) ) h_{\Theta}(x)=a^{(j+1)}=g\left(z^{(j+1)}\right) hΘ(x)=a(j+1)=g(z(j+1))
1.与运算、或运算
通过取值模拟与和或运算
假设函数如下
A N D : h Θ = g ( − 30 + 20 x 1 + 20 x 2 ) O R : h Θ = g ( − 10 + 20 x 1 + 20 x 2 ) AND:h_{\Theta}=g(-30+20x_1+20x_2) \\ OR\ :h_{\Theta}=g(-10+20x_1+20x_2) AND:hΘ=g(−30+20x1+20x2)OR :hΘ=g(−10+20x1+20x2)
2.异或函数
无法用一层神经网络模拟,所以引入了第二层神经网络。
利用真值表就可以算出简单计算得到如果设计神经网络
3.Multiclass Classification
算法步骤:
1.给定数据集 { ( x ( 1 ) , y ( 1 ) ) ⋯ ( x ( m ) , y ( m ) ) } \left\{\left(x^{(1)}, y^{(1)}\right) \cdots\left(x^{(m)}, y^{(m)}\right)\right\} {(x(1),y(1))⋯(x(m),y(m))},
2.对于所有的 ( i , j , l ) (i,j,l) (i,j,l),设 Δ i , j ( l ) : = 0 \Delta_{i, j}^{(l)}:=0 Δi,j(l):=0
3.对于每一个数据 ( s ( t ) , y ( t ) ) , 1 ≤ t ≤ m (s^{(t)},y^{(t)})\ ,1\leq t \leq m (s(t),y(t)) ,1≤t≤m,我们令 a ( 1 ) = x ( t ) a^{(1)}=x^{(t)} a(1)=x(t),使用前向反馈算法计算所有的 a ( i ) , 2 ≤ i ≤ l a^{(i)},2\leq i \leq l a(i),2≤i≤l
4.用 y ( t ) y^{(t)} y(t),计算 δ ( L ) = a ( L ) − y ( t ) \delta^{(L)}=a^{(L)}-y^{(t)} δ(L)=a(L)−y(t),其中L为神经网络层数
5. 利用 δ ( l ) = ( ( Θ ( l ) ) T δ ( l + 1 ) ) ⋅ ∗ a ( l ) ⋅ ∗ ( 1 − a ( l ) ) \delta^{(l)}=\left(\left(\Theta^{(l)}\right)^{T} \delta^{(l+1)}\right) \cdot * a^{(l)} \cdot *\left(1-a^{(l)}\right) δ(l)=((Θ(l))Tδ(l+1))⋅∗a(l)⋅∗(1−a(l))依次计算$\delta^{(L-1)}, \delta^{(L-2)}, \ldots, \delta^{(2)} $
定义: g ′ ( z ( l ) ) = a ( l ) ⋅ ∗ ( 1 − a ( l ) ) g^{\prime}\left(z^{(l)}\right)=a^{(l)} \cdot *\left(1-a^{(l)}\right) g′(z(l))=a(l)⋅∗(1−a(l))
6.计算$\Delta_{i, j}^{(l)}:=\Delta_{i, j}{(l)}+a_{j}{(l)} \delta_{i}^{(l+1)} $
向量化并行表示为 Δ ( l ) : = Δ ( l ) + δ ( l + 1 ) ( a ( l ) ) T \Delta^{(l)}:=\Delta^{(l)}+\delta^{(l+1)}\left(a^{(l)}\right)^{T} Δ(l):=Δ(l)+δ(l+1)(a(l))T
更新 Δ \Delta Δ矩阵, D i , j ( l ) : = 1 m ( Δ i , j ( l ) + λ Θ i , j ( l ) ) , if j ≠ 0. D i , j ( l ) : = 1 m Δ i , j ( l ) If j = 0 \begin{array}{l} D_{i, j}^{(l)}:=\frac{1}{m}\left(\Delta_{i, j}^{(l)}+\lambda \Theta_{i, j}^{(l)}\right), \text { if } j \neq 0 . \\ D_{i, j}^{(l)}:=\frac{1}{m} \Delta_{i, j}^{(l)} \text { If } j=0 \end{array} Di,j(l):=m1(Δi,j(l)+λΘi,j(l)), if j=0.Di,j(l):=m1Δi,j(l) If j=0
7.得到了最后的偏导数值 ∂ ∂ Θ i j ( l ) J ( Θ ) = D i j ( l ) \frac{\partial}{\partial \Theta_{i j}^{(l)}} J(\Theta)=D_{i j}^{(l)} ∂Θij(l)∂J(Θ)=Dij(l)
每一个 δ \delta δ可以通过下一层所有的的 δ \delta δ反向计算得到,
例如:当第三层只有两个单元时,就可以得到 δ 2 ( 2 ) = Θ 12 ( 2 ) δ 1 ( 3 ) + Θ 22 ( 2 ) δ 2 ( 3 ) \delta_{2}^{(2)}=\Theta_{12}^{(2)} \delta_{1}^{(3)}+\Theta_{22}^{(2)} \delta_{2}^{(3)} δ2(2)=Θ12(2)δ1(3)+Θ22(2)δ2(3)
1.gradient checking
检查算法错误,所带来的结果的误差
方法:利用导数的定义,近似计算某个点的导数值,观察两者是否相等,判断计算是否正确。
epsilon = 1e-4;
for i = 1:n,
thetaPlus = theta;
thetaPlus(i) += epsilon;
thetaMinus = theta;
thetaMinus(i) -= epsilon;
gradApprox(i) = (J(thetaPlus) - J(thetaMinus))/(2*epsilon)
end;
Random Initialization
多重神经网络如果呈现对称特性,则退化为了逻辑回归,所以需要随机设置初始值,同时需要注意,避免参数的对称性。
conclusion
进行依次神经网络学习,首先需要知道其结构,包括输入输出单元数量,隐藏层的数量和和隐藏单元数量
然后执行如下步骤
设计一个复杂的机器学习算法需要
A=1 | A=0 | |
---|---|---|
P=1 | True Possitive | Flase Possitive |
P=0 | Flase Negative | True Negative |
召回率(Recall)=(P=1,A=1)/(P=1,A=1)+(P=0,A=1)
查准率(Prediction)=(P=1,A=1)/(P=1,A=1)+(P=1,A=0)
综合评价方法 Fscore= 2 P R P + R 2\frac{PR}{P+R} 2P+RPR
当对非线性的类进行区分时,需要引入不同的区预测方程。
h θ = θ T f ( x ) h_{\theta}=\theta^Tf(x) hθ=θTf(x)
则不同的 f ( x ) f(x) f(x)成为核函数,利用不同的核函数可以区分不同的类。
其中高斯核函数为
f ( x ) = e x p ( − ∣ ∣ x − l ( i ) ∣ ∣ 2 σ 2 ) f(x)=exp(-\frac{||x-l^{(i)}||}{2\sigma^2}) f(x)=exp(−2σ2∣∣x−l(i)∣∣)
其中, l ( i ) l^{(i)} l(i)为已知的点
利用支持向量机构造的回归函数
min θ C ∑ i = 1 m y ( i ) cost 1 ( θ T f ( i ) ) + ( 1 − y ( i ) ) cos t 0 ( θ T f ( i ) ) + 1 2 ∑ j = 1 n = m θ j 2 \min _{\theta} C \sum_{i=1}^{m} y^{(i)} \operatorname{cost}_{1}\left(\theta^{T} f^{(i)}\right)+\left(1-y^{(i)}\right) \cos t_{0}(\theta^{T} f^{(i)})+\frac{1}{2} \sum_{j=1}^{n=m} \theta_{j}^{2} θminCi=1∑my(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i))+21j=1∑n=mθj2
其中, C = 1 λ C=\frac{1}{\lambda} C=λ1,C越大方差越小,偏差越大,C越小方差越大,偏差越小
对于高斯核函数, σ 2 \sigma^2 σ2越大,曲线越平滑,方差越大,偏差越小, σ 2 \sigma^2 σ2越小,曲线越陡峭,方差越小,偏差越大
数据集$\left { {x{(1)},x{(2)},…x^{(m)}} \right } $ x的取值范围为 x ∈ R n x \in \mathbb{R}^{n} x∈Rn
对于每个x的出现的概率 p ( x ) = ∏ j = 1 n p ( x j ; μ j , σ j 2 ) p(x)=\prod_{j=1}^{n} p(x_j ; \mu_j,\sigma _j^2 ) p(x)=∏j=1np(xj;μj,σj2)
异常检测算法步骤:
假设:无标签训练集均为正常数据,交叉验证集,测试集出现异常样本
注意:在异常检测系统中,一部分异常数据可能同时出现在交叉验证集和测试集中
如果直接使用异常检测算法,可能会存在正确率与召回率均高的情况,所以应该求出所有偏斜集合的比率。
同时, ε \varepsilon ε的选择,也需要进行常识。
异常检测:
监督学习:
对于人工智能算法,特征值的选择是重要的,很多人工智能算法可以自动化的计算好的特征值。
对于 θ ( j ) \theta^{(j)} θ(j)的代价函数为
min θ ( j ) 1 2 ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ k = 1 n ( θ k ( j ) ) 2 \min _{\theta^{(j)}} \frac{1}{2} \sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2} minθ(j)21∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))2+2λ∑k=1n(θk(j))2
对于所有用户的向量的代价函数为
min θ ( 1 ) , … , θ ( n u ) 1 2 ∑ j = 1 n u ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 \min _{\theta(1), \ldots, \theta^{\left(n_{u}\right)}} \frac{1}{2} \sum_{j=1}^{n_{u}} \sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{j=1}^{n_{u}} \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2} θ(1),…,θ(nu)min21j=1∑nui:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λj=1∑nuk=1∑n(θk(j))2
梯度递降算法公式为
KaTeX parse error: Got function '\sum' with no arguments as argument to '\stackrel' at position 72: …ackrel{\alpha} \̲s̲u̲m̲_{i: r(i, j)=1}…
通过不同用户的 θ \theta θ 预测电影的属性值。
通过 θ ( 1 ) , θ ( 2 ) , . . . , θ n u \theta^{(1)},\theta^{(2)},...,\theta^{n_u} θ(1),θ(2),...,θnu 学习 x ( i ) x^{(i)} x(i)
min x ( i ) 1 2 ∑ j : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ k = 1 n ( x k ( i ) ) 2 \min _{x^{(i)}} \frac{1}{2} \sum_{j: r(i, j)=1}(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)})^{2}+\frac{\lambda}{2} \sum_{k=1}^{n}\left(x_{k}^{(i)}\right)^{2} x(i)min21j:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λk=1∑n(xk(i))2
如果要一次学习所有x的值
min x ( 1 ) , … , x ( n m ) 1 2 ∑ i = 1 n m ∑ j : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 \min _{\left.x^{(1)}, \ldots, x^{\left(n_{m}\right.}\right)} \frac{1}{2} \sum_{i=1}^{n_{m}} \sum_{j: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{i=1}^{n_{m}} \sum_{k=1}^{n}\left(x_{k}^{(i)}\right)^{2} x(1),…,x(nm)min21i=1∑nmj:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑nmk=1∑n(xk(i))2
将基于x学习 θ \theta θ的代价函数,和基于 θ \theta θ学习 x x x的代价函数结合,就可以得到能够自动选择特征值的代价函数,协同过滤
J ( x ( 1 ) , … , x ( n m ) , θ ( 1 ) , … , θ ( n u ) ) = 1 2 ∑ ( i , j ) : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 J\left(x^{(1)}, \ldots, x^{\left(n_{m}\right)}\right., \theta^{(1)}, \ldots, \theta^{(n_{u})})\\=\frac{1}{2} \sum_{(i, j): r(i, j)=1}(\left(\theta^{(j)})^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{i=1}^{n_{m}} \sum_{k=1}^{n}\left(x_{k}^{(i)}\right)^{2}+\frac{\lambda}{2} \sum_{j=1}^{n_{u}} \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2} J(x(1),…,x(nm),θ(1),…,θ(nu))=21(i,j):r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑nmk=1∑n(xk(i))2+2λj=1∑nuk=1∑n(θk(j))2
算法执行的流程如下
大数据往往能够减小学习算法的偏差值,提高算法的准取程度。
小批量梯度递降实际上是随机递降与批量梯度递降的折衷算法
参数选择
梯度递降算法需要选择合适的学习速率 α \alpha α,但是数据集过大和随机算法,不能确定 α \alpha α的具体值。
因此需要通过绘制学习曲线,调节 α \alpha α和分组数量的取值,得到最优的学习结果。
通过不断的增加学习样本数量,持续的对机器学习算法进行优化
将整个数据集分为多个小数据集,然后分别计算各小数据集的梯度,然后集中汇总