机器学习-吴恩达-笔记

机器学习

1.线性回归

线性回归是通过已知的数据集来预测未来的值,所有原数据集中有需要特征值 x x x和结果值 y y y

假设函数:

​ 单变量特征公式 h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+{\theta_1}x hθ(x)=θ0+θ1x

​ 多变量特征公式 h θ ( x ) = X θ = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n {{h}_{\theta }}\left( x \right)={X{\theta }}={{\theta }_{0}}+{{\theta }_{1}}{{x}_{1}}+{{\theta }_{2}}{{x}_{2}}+...+{{\theta }_{n}}{{x}_{n}} hθ(x)=Xθ=θ0+θ1x1+θ2x2+...+θnxn
θ \theta θ=$ ( θ 0 θ 1 ⋮ θ n ) \left(\begin{array}{c}{\theta_{0}} \\ {\theta_{1}} \\ {\vdots} \\ {\theta_{n}}\end{array}\right) θ0θ1θn X = [ 1 x 1 ( 1 ) x 2 ( 1 ) . . . . x n ( 1 ) 1 x 1 ( 2 ) x 2 ( 2 ) . . . . x n ( 2 ) ⋮ 1 x 1 ( m ) x 2 ( m ) . . . . x n ( m ) ] X= \begin{bmatrix} 1 & x^{(1)}_1 & x^{(1)}_2 & .... x^{(1)}_n \\ 1 & x^{(2)}_1 & x^{(2)}_2 & .... x^{(2)}_n \\ \vdots \\ 1 & x^{(m)}_1 & x^{(m)}_2 & .... x^{(m)}_n\end{bmatrix} X= 111x1(1)x1(2)x1(m)x2(1)x2(2)x2(m)....xn(1)....xn(2)....xn(m)

损失函数是用于衡量预测值与实际值的偏离程度,即模型预测的错误程度

则以参数θ为多特征函数的代价/损失函数
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{{{\left( {{h}_{\theta }}\left( {{x}^{(i)}} \right)-{{y}^{(i)}} \right)}^{2}}} J(θ)=2m1i=1m(hθ(x(i))y(i))2 = 1 2 m ∑ i = 1 m ( X θ − y ) 2 \frac{1}{2m}\sum\limits_{i=1}^{m}{(X\theta-y)^2} 2m1i=1m(y)2 ( y y y为通过特征值得到的结果)

代价函数求导

d J ( θ ) d θ j \frac{dJ\left( \theta \right)}{d\theta_j} dθjdJ(θ)= 1 m ∑ i = 1 m ( h θ ( x ( i ) − y ( i ) ) x j ( i ) \frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)}-y^{(i)})x^{(i)}_j m1i=1m(hθ(x(i)y(i))xj(i) j j j=0时, x 0 x_0 x0=1

接下来是梯度下降求代价函数最小值:

​ repeat until minimal:{

θ j : = θ j − α ∂ ∂ θ j J ( θ ) {{\theta }_{j}}:={{\theta }_{j}}-\alpha \frac{\partial }{\partial {{\theta }_{j}}}J\left( \theta \right) θj:=θjαθjJ(θ) for j=0 to n

​ }

根据代价函数求导,令 δ \delta δ= [ 1 m ∑ i = 1 m ( h θ ( x ( i ) − y ( i ) ) x 0 ( i ) 1 m ∑ i = 1 m ( h θ ( x ( i ) − y ( i ) ) x 1 ( i ) ⋮ 1 m ∑ i = 1 m ( h θ ( x ( i ) − y ( i ) ) x n ( i ) ] \begin{bmatrix} \frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)}-y^{(i)})x^{(i)}_0 \\ \frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)}-y^{(i)})x^{(i)}_1 \\ {\vdots} \\ \frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)}-y^{(i)})x^{(i)}_n \end{bmatrix} m1i=1m(hθ(x(i)y(i))x0(i)m1i=1m(hθ(x(i)y(i))x1(i)m1i=1m(hθ(x(i)y(i))xn(i) 则可得 δ \delta δ= 1 m \frac{1}{m} m1 [ 1 1 … 1 x 1 ( 1 ) x 1 ( 2 ) … x 1 ( m ) ⋮ x n ( 1 ) x n ( 2 ) … x n ( m ) ] \begin{bmatrix} 1&1&{\dots}&1 \\x^{(1)}_1 & x^{(2)}_1 &{\dots}& x^{(m)}_1\\{\vdots}\\ x^{(1)}_n & x^{(2)}_n & {\dots} & x^{(m)}_n\end{bmatrix} 1x1(1)xn(1)1x1(2)xn(2)1x1(m)xn(m) ⋅ ( X θ − y ) {\cdot}(X\theta-y) (y)= 1 m X T ⋅ ( X θ − y ) \frac{1}{m}X^T\cdot(X\theta-y) m1XT(y)

θ j : = θ j − α ∂ ∂ θ j J ( θ ) {{\theta }_{j}}:={{\theta }_{j}}-\alpha \frac{\partial }{\partial {{\theta }_{j}}}J\left( \theta \right) θj:=θjαθjJ(θ) 可以通过上面的推导变成 θ = θ − α 1 m X T ⋅ ( X θ − y ) \theta=\theta-\alpha\frac{1}{m}X^T\cdot(X\theta-y) θ=θαm1XT(y)
repeat until minimal:{

θ = θ − α 1 m X T ⋅ ( X θ − y ) \theta=\theta-\alpha\frac{1}{m}X^T\cdot(X\theta-y) θ=θαm1XT(y) for j=0 to n

}

维度: X X X(m,n) y y y(n,1) θ \theta θ(n,1)

1.1 正规方程

上述的梯度下降有可替换方案,则是正规方程。

θ = ( X T ⋅ X ) − 1 ⋅ X T ⋅ y \theta=(X^T{\cdot}X)^{-1}\cdot{X}^T\cdot{y} θ=(XTX)1XTy

注意:当 ( X T ⋅ X ) − 1 (X^T{\cdot}X)^{-1} (XTX)1不可逆的时候,可考虑 X X X中的 x 1 … x_1\dots x1 x n x_n xn中特征值是否有线性相关。

梯度下降正规方程
缺点:
需要选择学习率a
需要多次迭代
特征值范围相差太大,要特征缩放
优点:
当特征数n很大时,能够工作的很好
优点:
不需要选择学习率a
不需要多次迭代
不需要特征缩放(feature scaling)
缺点;
当特征数n很大时,运算的很慢。因为求解逆矩阵的时间复杂度是O(N^3)

一般情况下,当n<10000,选择正规方程,其次当一些复杂的算法最好选择梯度下降。

2.逻辑回归

逻辑回归是用来解决分类问题,将问题预测值最终回归到0或者1上面。

假设函数:

​ 单变量特征公式 h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+{\theta_1}x hθ(x)=θ0+θ1x

​ 多变量特征公式 h θ ( x ) = X θ = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n {{h}_{\theta }}\left( x \right)={X{\theta }}={{\theta }_{0}}+{{\theta }_{1}}{{x}_{1}}+{{\theta }_{2}}{{x}_{2}}+...+{{\theta }_{n}}{{x}_{n}} hθ(x)=Xθ=θ0+θ1x1+θ2x2+...+θnxn

与线性回归不同,我们需要一个sigmoid函数,作为激活函数,将 h θ ( x ) h_\theta(x) hθ(x)的预测值回归到0-1的范围中。

g 代表一个常用的逻辑函数(logistic function)为S形函数(Sigmoid function),公式为: g ( z ) = 1 1 + e − z g\left( z \right)=\frac{1}{1+{{e}^{-z}}} g(z)=1+ez1
合起来,我们得到逻辑回归模型的假设函数:
h θ ( x ) = 1 1 + e − θ X {{h}_{\theta }}\left( x \right)=\frac{1}{1+{{e}^{-{{\theta }}X}}} hθ(x)=1+eθX1 同理可以写成 g ( h θ ( x ) ) g(h_\theta(x)) g(hθ(x))

Sigmoid function 函数图像:

在这里插入图片描述

代价函数:
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) log ⁡ ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{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)]} J(θ)=m1i=1m[y(i)log(hθ(x(i)))(1y(i))log(1hθ(x(i)))] 这里的 l o g log log l n ln ln,相当于以 e e e为底。在python中numpy.log(),也是默认以 e e e为底。

代价函数求导

d J ( θ ) d θ j \frac{dJ\left( \theta \right)}{d\theta_j} dθjdJ(θ)= 1 m ∑ i = 1 m ( h θ ( x ( i ) − y ( i ) ) x j ( i ) \frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)}-y^{(i)})x^{(i)}_j m1i=1m(hθ(x(i)y(i))xj(i) j j j=0时, x 0 x_0 x0=1

代价函数求导和线性回归的求导是一样的,虽然形式一样,但函数完全不一样。

2.1 正则化

为了解决过拟合的问题,则引入了正则化。

正则化说白了就是在损失函数后面添加一项:

λ 2 m ∑ j = 1 n θ j 2 \frac{\lambda }{2m}\sum\limits_{j=1}^{n}{\theta _{j}^{2}} 2mλj=1nθj2

则逻辑回归的损失函数变为: 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\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{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)]}+\frac{\lambda }{2m}\sum\limits_{j=1}^{n}{\theta _{j}^{2}} J(θ)=m1i=1m[y(i)log(hθ(x(i)))(1y(i))log(1hθ(x(i)))]+2mλj=1nθj2

线性回归的损失函数变为: J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{{{\left( {{h}_{\theta }}\left( {{x}^{(i)}} \right)-{{y}^{(i)}} \right)}^{2}}} J(θ)=2m1i=1m(hθ(x(i))y(i))2 = 1 2 m ∑ i = 1 m ( X θ − y ) 2 + λ 2 m ∑ j = 1 n θ j 2 \frac{1}{2m}\sum\limits_{i=1}^{m}{(X\theta-y)^2}+\frac{\lambda }{2m}\sum\limits_{j=1}^{n}{\theta _{j}^{2}} 2m1i=1m(y)2+2mλj=1nθj2

对正则化部分求导为: λ m θ j \frac{\lambda}{m}\theta_j mλθj

2.2 线性不可分

对于线性不可分的数据集,因为特征值较少,所以需要特征拟合为更高阶的,然后再进行梯度下降

这就需要特征映射:特征映射的目的是将输入的两个特征 x 1 x1 x1 x 2 x2 x2映射到一个更高维度的特征空间,以支持线性不可分数据的逻辑回归。

例如将两个特征 x 1 x1 x1 x 2 x2 x2映射到二维:

​ MapFeature = [ 1 x 1 x 2 x 1 x 2 x 1 2 x 2 2 ] \begin{bmatrix}1 \\ x_1\\x_2\\x_1x_2\\x_1^2\\x_2^2 \end{bmatrix} 1x1x2x1x2x12x22

代码如下:

def feature_mapping(x1,x2,power):
    data = {}
    for i in np.arange(power+1):
        for j in np.arange(i + 1):
            data['F{}{}'.format(i-j,j)] = np.power(x1,i-j) * np.power(x2,j)
    return pd.DataFrame(data) 
  • 35
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值