IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]逻辑回归寻找最佳θ向量

    sheismylife发表于 2017-01-02 15:22:36
    love 0

    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(1−hθ(x))1−y(2)

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

    3.1.2 建立似然公式

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

    这个公式这样理解

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

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

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

    3.1.3 建立最大对数似然公式

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

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

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

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

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

    3.2 损失函数

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

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

    3.3 梯度下降公式

    3.3.1 推导

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

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

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

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

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

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

    对 J(θ)

    求偏导的推演为

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

    继续推导

    ∂∂θjJ(θ)=−1n∑i=1n[yi1hθ(x)∂∂θjhθ(x)−(1−yi)11−hθ(x)∂∂θjhθ(x)]=−1n∑i=1n[yi1hθ(x)−(1−yi)11−hθ(x))]∂∂θjhθ(x)(13)

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

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

    ∂∂θjJ(θ)=−1n∑i=1n[yi1g(θTx)−(1−yi)11−g(θTx))]g(θTx)(1−g(θTx))∂∂θjθTx=−1n∑i=1n[yi(1−g(θTx))−(1−yi)g(θTx)]∂∂θjθTx=−1n∑i=1n[yi−g(θTx)]∂∂θjθTx=−1n∑i=1n[yi−g(θTx)]xj=1n∑i=1n[hθ(xi)−yi)]xji(15)

    最终求 θ

    的梯度迭代公式为:

    θj:=θj−α1n∑i=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(θ)=−1n∑i=1n[yilog(hθ(x))+(1−yi)log(1−hθ(x))]+λ2m∑j=1nθ2j(17)

    现在的梯度下降公式是:

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

    3.4.3 使用

    正则化参数 λ

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


沪ICP备19023445号-2号
友情链接