机器学习入门-线性模型(二)

本文介绍了机器学习中的线性模型,重点关注梯度下降法,包括其在大规模数据集中的优势及特征缩放的重要性。同时,讨论了最小化代价函数的不同算法,如Gradient Descent、Normal Equation等,并对极大似然法与梯度下降的公式推导进行了详细解释,解答了西瓜书习题3.3的相关问题。
摘要由CSDN通过智能技术生成

首先稍微再补充一点理论性的知识。

关于最小化代价函数的几种算法。

  • Gradient Descent
  • Normal equation
  • Conjugate gradient
  • BFGS
  • L-BFGS

由于难度原因本篇只关注gradient descent梯度下降法,这个方法应用比较广泛,在无法使用正规方程法的许多条件下依然可以奏效,其对比正规方程法的优点是在数据量较大的时候仍然能取得较好的结果因为其复杂度 n2 n 2 数量级,而正规方程法则达到了 n3 n 3 的数量级。其缺点则是需要选取 α α ,以及需要一定数量的迭代。
另外在应用中需要注意的就是Feature scaling,梯度下降法是需要对特征值进行处理的,确保大致在统一尺度上,而正规方程法则不需要考虑这个方面。
其算法的主要逻辑就是根据微积分学上的梯度进行值的迭代变化(因为梯度方向是函数值变化最快的方向)
Repeat{
      θj=θjα1mmi=1(hθ(x(i))y(i))X(i)j θ j = θ j − α ∗ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∗ X j ( i )

Notes:simultaneously updata θj θ j for j=0,1….n
其次是对于上一篇博客中一些公式的推导

极大似然法与梯度下降

在上一章的实战环节中其中一段梯度下降的核心代码如下所示:

def gradAscent(dataMatIn,classLabels):
    # 将普通矩阵转化为numpy矩阵数据类型
    dataMatrix=mat(dataMatIn)
    # 矩阵的转置,转化为列矩阵
    labelMat=mat(classLabels).transpose()
    m,n=shape(dataMatrix)
    alepha=0.001
    maxCycles=500
    weights=ones((n,1))
    for k in range(maxCycles):
        h=sigmoid(dataMatrix*weights)
        error=(labelMat-h)
        weights=weights+alepha*dataMatrix.transpose()*error
    return weights

当时第一次接触到这个代码的时候就产生了困惑,这一部分代码明明在梯度下降这个模块,可是梯度在哪呢?下面将从一开始进行一步步的推导。
声明:

p(y=1|x;θ)=hθ(x) p ( y = 1 | x ; θ ) = h θ ( x )
p(y=0|x;θ)=1hθ(x) p ( y = 0 | x ; θ ) = 1 − h θ ( x )

根据极大似然法的思想可以得到极大似然函数:
L(θ)=(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值