逻辑回归寻找最佳θ向量

来源:互联网 发布:出货单打单软件 编辑:程序博客网 时间:2024/05/16 06:56

3 寻找θ向量

前面介绍了如何在实际场景中使用预测函数计算概率,但是关键在于如何找到合适的 θ

向量。本节重点讨论这方面的数学原理。

3.1 最大似然公式

不过一般情况下,我们是没有办法轻易获得θ的。所以需要一些方法来推导出θ。如果训练集 T 为 {(x1,y1)(x2,y2)(x3,y3)(x4,y4)(x5,y5)...}

,其中: xi 为自变量, yi

为自变量对应的分类(1 或者 0), 可以应用对数似然估计法估计参数θ

3.1.1 先建立概率公式

P(y|x;θ)=(hθ(x))y(1hθ(x))1y(2)

这里 y=0 或者 1,这是一个常用的技巧,通过 y=0 或者 1 将两个概率公式组合在一起。

3.1.2 建立似然公式

L(θ|x1,x2,,xn)=i=1nP(yi|xi;θ)=i=1n(hθ(x))yi(1hθ(x))1yi(3)

这个公式这样理解

  • 1 批样本中每个样本的特征向量 x1,x2,,xn
的和权重 θ

  • 向量作为输入参数后面用 x 表示特征向量
  • 对每一个样本的预测值的效果评分
    分数这么表示:概率>0.5 的判定为预测为 1, 分数就取 hθ(x)y
  • , 概率<=0.5 的判定为预测为 0, 分数就取 1hθ(x)1y

  • 获得这批样本的总评分
    把每个样本的评分相乘就得到这批样本在取 θ
  • 向量值时的总评分这里,连乘公式用到的 i=1..n, i 是样本编号,不是特征编号。
  • 需要用数学方式找到一个 θ
    • 向量,使得总评分最高这需要用到最大似然公式

    3.1.3 建立最大对数似然公式

    最大似然公式通常用对似然公式取对数来简化计算,因为

    1. 对数函数是单调递增的,可以用它来找似然公式的最大值
    2. 对数可以将乘法转换成加法,参考对数运算法则,从而简化计算

    对上式采用最大对数似然公式

    l(θ)=lnL(θ|x1,x2,,xn)=lni=1n(hθ(x))yi(1hθ(x))1yi=i=1n[yilnhθ(xi)+(1yi)ln(1hθ(xi))](4)

    需要找到使得这个 l 函数为最大值时的 θ

    3.2 损失函数

    引入 J 函数把上面的求最大值问题被转换成了求 J 函数的最小值问题,J 函数也就是损失函数,损失自然越小越好.

    J(θ)=1nl(θ)(5)

    3.3 梯度下降公式

    3.3.1 推导

    这里可以使用梯度下降法找到 θ

    的值。推导过程用到了偏导

    J(θ)=1nl(θ)=1ni=1n[yilog(hθ(x))+(1yi)log(1hθ(x))](6)

    现在需要通过多轮迭代,找到 θ

    向量,使得 J 函数最小。迭代的梯度下降公式为:(这里 x 有偏导计算)

    θj:=θjαθjJ(θ)(7)
    • 说明
      • θj
    是新一轮计算得到的 θ 向量的第 j 个分量, 所以每轮迭代都会要计算 θ
  • 向量的每个分量
  • α
  • 是下降步长
  • θjJ(θ)
  • 是对 J(θ)θj
      • 求偏导

    J(θ)

    求偏导的推演为

    θjJ(θ)=θj(1ni=1n[yilog(hθ(x))+(1yi)log(1hθ(x))])(8)
    =1nθj(i=1n[yilog(hθ(x))+(1yi)log(1hθ(x))])(9)
    =1ni=1n[θjyilog(hθ(x))+θj(1yi)log(1hθ(x))](10)
    =1ni=1n[yi1hθ(x)θjhθ(x)+(1yi)11hθ(x)θj(1hθ(x))](11)
    =1ni=1n[yi1hθ(x)θjhθ(x)(1yi)11hθ(x)θjhθ(x)](12)
    • 注意
      • 这里的 log 就是 ln
      • 最后两步推导用到了复合函数求导法则

    继续推导

    θjJ(θ)=1ni=1n[yi1hθ(x)θjhθ(x)(1yi)11hθ(x)θjhθ(x)]=1ni=1n[yi1hθ(x)(1yi)11hθ(x))]θjhθ(x)(13)

    最后,将逻辑回归公式代入,进行推导

    θjJ(θ)=1ni=1n[yi1hθ(x)(1yi)11hθ(x))]θjhθ(x)=1ni=1n[yi1g(θTx)(1yi)11g(θTx))]θjg(θTx)=1ni=1n[yi1g(θTx)(1yi)11g(θTx))]g(θTx)(1g(θTx))θjθTx(14)
    • 注意
      • θjg(θTx)
  • 是复合函数求导,先对外层函数求导,再对内层函数求导,最后相乘
  • 外层函数是 sigmoid 函数,sigmoid 函数求导后就是 g(θTx)(1g(θTx))

    θjJ(θ)=1ni=1n[yi1g(θTx)(1yi)11g(θTx))]g(θTx)(1g(θTx))θjθTx=1ni=1n[yi(1g(θTx))(1yi)g(θTx)]θjθTx=1ni=1n[yig(θTx)]θjθTx=1ni=1n[yig(θTx)]xj=1ni=1n[hθ(xi)yi)]xji(15)

    最终求 θ

    的梯度迭代公式为:

    θj:=θjα1ni=1n[hθ(xi)yi)]xji(16)
    • 说明
      • 一般通过观察的大小来判断是否已经收敛到了极小点附近
      • 那迭代多少次停止呢,spark ML 可以指定迭代次数和比较两次梯度变化或者 cost 变化小于一定值时停止
      • 几何意义
        此时 θ
    向量就是多维线性函数的多个自变量, 几何上也是 n 维坐标系,每一轮迭代就是找到最新的下降点的 n 维坐标系的坐标,也就是 θ
      • 向量

    3.3.2 计算优化

    1. 向量化 Vectorization

      Vectorization 是使用矩阵计算来代替 for 循环,以简化计算过程,提高效率

    2. 参考

      logistic 回归详解(三):梯度下降训练方法机器学习入门:线性回归及梯度下降

    3.4 正则化

    3.4.1 用途

    在样本数量小,特征数量多的情况下,容易出现过拟合。可以通过正则化来减轻过拟合的现象。正则化的方法,就是给代价函数后面加个“惩罚项”……来降低它对数据的拟合能力。

    3.4.2 正则项

    其实就是在损失函数里加上一个正则项,

    J(θ)=1nl(θ)=1ni=1n[yilog(hθ(x))+(1yi)log(1hθ(x))]+λ2mj=1nθ2j(17)

    现在的梯度下降公式是:

    θj:=θjα[1ni=1n[hθ(xi)yi)]xji+1nλθj](18)

    3.4.3 使用

    正则化参数 λ

    变大,就是惩罚多点,可以减轻过拟合问题,但是要小心造成欠拟合正则化参数 λ 变大,就是惩罚小点,可以减轻欠拟合问题,但是无法解决过拟合
    0 0
    原创粉丝点击