逻辑回归及梯度下降

实现本文python程序链接
实现本文ipython程序链接

#1、构造似然函数
(1)、 h θ ( x ) h_{\theta }(x) hθ(x) 表示y=1的概率
(1.1) h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_{\theta }(x)=g(\theta^{T}x)= \frac{1}{1+e^{-\theta^{T}x}}\tag{1.1} hθ(x)=g(θTx)=1+eθTx1(1.1)

(2)、 L ( θ ) L(\theta) L(θ)为似然函数
(1.2) L ( θ ) = ∏ i = 1 m h θ ( x ( i ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) ( 1 − y ( i ) ) L(\theta)=\prod_{i=1}^{m}h_{\theta }(x^{(i)})^{y^{(i)}}(1-h_{\theta }(x^{(i)}))^{(1-y^{(i)})}\tag{1.2} L(θ)=i=1mhθ(x(i))y(i)(1hθ(x(i)))(1y(i))(1.2)

当$y\in[-1,1], 1-h(x)=h(-x) $
L ( θ ) = ∏ i = 1 m h θ ( y ( i ) x ( i ) ) = ∑ i = 1 m l o g ( h θ ( y ( i ) x ( i ) ) ) L(\theta)=\prod_{i=1}^{m}h_{\theta}(y^{(i)}x^{(i)})=\sum_{i=1}^{m} log(h_{\theta}(y^{(i)}x^{(i)})) L(θ)=i=1mhθ(y(i)x(i))=i=1mlog(hθ(y(i)x(i)))
= ∑ i = 1 m l o g ( 1 1 + e − y ( i ) x ( i ) θ T ) =\sum_{i=1}^{m} log(\frac{1}{1+e^{-y^{(i)}x^{(i)\theta^T}}}) =i=1mlog(1+ey(i)x(i)θT1)
= − ∑ i = 1 m l o g ( 1 + e − y ( i ) x ( i ) θ T ) =-\sum_{i=1}^{m} log(1+e^{-y^{(i)}x^{(i)}\theta^T}) =i=1mlog(1+ey(i)x(i)θT)

(3)、 l ( θ ) l(\theta) l(θ) θ \theta θ的对数似然函数,取对数似然函数的最大值。

(1.3) l ( θ ) = l o g ( L ( θ ) ) = ∑ i = 1 m ( y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ) l(\theta)=log(L(\theta))=\sum_{i=1}^{m}(y^{(i)}log(h_{\theta }(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta }(x^{(i)})))\tag{1.3} l(θ)=log(L(θ))=i=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))(1.3)

l ′ ( θ ) = ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) l^{'}(\theta)=\sum_{i=1}^{m}(y^{(i)}-h_{\theta}(x^{(i)}))x^{(i)}_{j} l(θ)=i=1m(y(i)hθ(x(i)))xj(i)

(4)、 f ( θ ) f(\theta) f(θ)乘了一个负的系数-1/m,所以 f ( θ ) f(\theta) f(θ)取最小值时 θ \theta θ为最佳参数。
(1.4) f ( θ ) = − 1 m l ( θ ) f(\theta)= -\frac{1}{m}l(\theta)\tag{1.4} f(θ)=m1l(θ)(1.4)

y ∈ [ − 1 , 1 ] , f ( θ ) = 1 m ∑ i = 1 m l o g ( 1 + e − y ( i ) x ( i ) θ T ) y\in[-1,1] ,f(\theta)=\frac{1}{m}\sum_{i=1}^{m} log(1+e^{-y^{(i)}x^{(i)}\theta^T}) y[1,1],f(θ)=m1i=1mlog(1+ey(i)x(i)θT)

其中m是个体数目,即行数,i=1…m;n为参数 θ \theta θ 个数,即列数, j= 1…n。

2、梯度下降求解参数 θ \theta θ

梯度下降求解 θ \theta θ 的过程:
(2.1) θ j : = θ j − α ∂ f ( θ ) ∂ θ j \theta_{j}:=\theta_{j}-\alpha \frac{\partial f(\theta)}{\partial_{\theta_{j}}}\tag{2.1} θj:=θjαθjf(θ)(2.1)

(2.2) ∂ f ( θ ) ∂ θ j = − 1 m ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \frac{\partial f(\theta)}{\partial_{\theta_{j}}}=-\frac{1}{m}\sum_{i=1}^{m}\left (y^{(i)}-h_{\theta}(x^{(i)})\right)x^{(i)}_{j}\tag{2.2} θjf(θ)=m1i=1m(y(i)hθ(x(i)))xj(i)(2.2)

θ \theta θ的更新过程可以写成:
(2.3) θ j : = θ j − ( − 1 m ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) ) \theta_{j}:=\theta_{j}-\left(-\frac{1}{m}\sum_{i=1}^{m}\left(y^{(i)}-h_{\theta}(x^{(i)})\right)x^{(i)}_{j}\right)\tag{2.3} θj:=θj(m1i=1m(y(i)hθ(x(i)))xj(i))(2.3)
(2.3) θ j : = θ j + α m ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) x j ( i ) \theta_{j}:=\theta_{j}+\frac{\alpha}{m}\sum_{i=1}^{m}\left(y^{(i)}-h_{\theta}(x^{(i)}\right)x^{(i)}_{j}\tag{2.3} θj:=θj+mαi=1m(y(i)hθ(x(i))xj(i)(2.3)

g ′ ( z ) = ( 1 1 + e − z ) ′ = g ( z ) ⋅ ( 1 − g ( z ) ) g'(z)=\left(\frac{1}{1+e^{-z}}\right)'=g(z)\cdot (1-g(z)) g(z)=(1+ez1)=g(z)(1g(z))
##2.1批量梯度下降(BGD)
(2.3) θ j : = θ j + α m ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \theta_{j}:=\theta_{j}+\frac{\alpha}{m}\sum_{i=1}^{m}\left(y^{(i)}-h_{\theta}(x^{(i)})\right)x^{(i)}_{j}\tag{2.3} θj:=θj+mαi=1m(y(i)hθ(x(i)))xj(i)(2.3)

  • 公式2.3可以看出,每迭代一步,都要用到训练集所有的数据,此算法为批量梯度下降。

##2.2随机梯度下降(SGD)
(2.4) θ j : = θ j + α ( y ( i ) − h θ ( x ( i ) ) ) x j i \theta_{j}:=\theta_{j}+\alpha \left(y^{(i)}-h_{\theta}(x^{(i)})\right)x^{i}_{j}\tag{2.4} θj:=θj+α(y(i)hθ(x(i)))xji(2.4)

x ( i ) 表 示 第 i 行 数 据 , 即 每 个 样 本 的 自 变 量 数 据 x^{(i)}表示第i行数据,即每个样本的自变量数据 x(i)i
利用每个样本更新一次参数向量。
在 计 算 h θ ( x ( i ) ) 时 , 可 完 全 利 用 上 个 样 本 迭 代 出 来 的 θ 向 量 , 也 可 利 用 此 样 本 已 经 更 新 的 θ 向 量 。 在计算h_{\theta}(x^{(i)})时,可完全利用上个样本迭代出来的\theta 向量,也可利用此样本已经更新的\theta向量。 hθ(x(i))θθ

https://www.cnblogs.com/maybe2030/p/5089753.html
#3、牛顿迭代求解参数

设 n 为 一 个 正 整 数 , 如 果 定 义 在 一 个 包 含 a 的 区 间 上 的 函 数 f 在 a 点 处 n + 1 次 可 导 那 么 对 于 这 个 区 间 上 的 任 意 x 都 有 : 设n为一个正整数,如果定义在一个包含a的区间上的函数f在a点处n+1次可导那么对于这个区间上的任意x都有: nafan+1x
f ( x ) = ∑ n = 0 N f n ( a ) n ! ( x − a ) n + R n ( x ) f(x)=\sum_{n=0}^{N}\frac{f^{n}(a)}{n!}(x-a)^{n}+R_{n}(x) f(x)=n=0Nn!fn(a)(xa)n+Rn(x)
其 中 多 项 式 称 为 函 数 在 a 处 的 泰 勒 展 开 , R n 是 泰 勒 公 式 的 余 项 且 是 ( x − a ) n 的 高 阶 无 穷 小 。 其中多项式称为函数在a处的泰勒展开,R_{n}是泰勒公式的余项且是(x-a)_{n}的高阶无穷小。 a,Rn(xa)n

##3.2牛顿迭代求解逻辑回归参数

  • 逻辑回归损失函数:
    (1.3) l ( θ ) = l o g ( L ( θ ) ) = ∑ i = 1 m ( y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ) l(\theta)=log(L(\theta))=\sum_{i=1}^{m}(y^{(i)}log(h_{\theta }(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta }(x^{(i)})))\tag{1.3} l(θ)=log(L(θ))=i=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))(1.3)

(1.4) f ( θ ) = − 1 m l ( θ ) f(\theta)= -\frac{1}{m}l(\theta)\tag{1.4} f(θ)=m1l(θ)(1.4)

  • 对于无约束最优化问题

(3.2.1) θ ∗ = a r g   min ⁡ θ ∈ R n f ( θ ) \theta^*=arg\ \min_{\theta\in R^n}f(\theta)\tag{3.2.1} θ=arg θRnminf(θ)(3.2.1)

θ 在 回 归 问 题 中 为 回 归 系 数 向 量 \theta 在回归问题中为回归系数向量 θ

  • 假 设 f ( θ ) 具 有 二 阶 连 续 偏 导 , 若 第 k 次 迭 代 值 为 θ ( k ) , 则 可 将 f ( θ ) 在 θ ( k ) 处 进 行 二 阶 泰 勒 展 开 假设f(\theta)具有二阶连续偏导,若第k次迭代值为\theta^{(k)},则可将f(\theta)在\theta^{(k)}处进行二阶泰勒展开 f(θ)kθ(k)f(θ)θ(k)

(3.2.2) f ( θ ) = f ( θ ( k ) ) + g k T ⋅ ( θ − θ ( k ) ) + 1 2 ⋅ ( θ − θ ( k ) ) T ⋅ H ( θ ( k ) ) ⋅ ( θ − θ ( k ) ) f(\theta)=f(\theta^{(k)})+g_k^T\cdot (\theta-\theta^{(k)})+\frac{1}{2}\cdot (\theta-\theta^{(k)})^T \cdot H(\theta^{(k)}) \cdot (\theta-\theta^{(k)})\tag{3.2.2} f(θ)=f(θ(k))+gkT(θθ(k))+21(θθ(k))TH(θ(k))(θθ(k))(3.2.2)

这 里 , g k = g ( θ ( k ) ) = ▽ f ( θ ( k ) ) 是 f ( θ ) 的 梯 度 向 量 在 点 θ ( k ) 的 值 , H ( θ ( k ) ) 是 f ( θ ) 的 海 赛 矩 阵 ( H e s s e m a t r i x ) 这里,g_k=g(\theta^{(k)})=\bigtriangledown f(\theta^{(k)})是f(\theta)的梯度向量在点\theta^{(k)}的值,H(\theta^{(k)})是f(\theta)的海赛矩阵(Hesse matrix) gk=g(θ(k))=f(θ(k))f(θ)θ(k)H(θ(k))f(θ)Hessematrix

(3.2.3) H ( θ ) = [ ∂ 2 f ∂ θ i ∂ θ j ] n × n H(\theta)=\left[\frac{\partial^2f }{\partial \theta_i \partial \theta_j}\right]_{n \times n}\tag{3.2.3} H(θ)=[θiθj2f]n×n(3.2.3)

在 点 θ ( k ) 的 值 。 函 数 f ( θ ) 有 极 值 的 必 要 条 件 是 在 极 值 点 处 一 阶 导 数 为 0 , 即 梯 度 向 量 为 0 。 特 别 当 H ( θ ( k ) ) 是 正 定 矩 阵 时 ( 损 失 函 数 为 凸 函 数 ) , 函 数 f ( θ ) 的 极 值 为 最 小 值 。 在点\theta^{(k)}的值。函数f(\theta)有极值的必要条件是在极值点处一阶导数为0,即梯度向量为0。特别当H(\theta^{(k)})是正定矩阵时(损失函数为凸函数),函数f(\theta)的极值为最小值。 θ(k)f(θ)00H(θ(k))f(θ)

  • 牛顿法利用极小值点的必要条件:

(3.2.4) θ ∗ = a r g   0 θ ∈ R n ▽ f ( θ ) \theta^* = arg\ \underset{\theta\in R^n}{0} \bigtriangledown f(\theta)\tag{3.2.4} θ=arg θRn0f(θ)(3.2.4)

θ 为 变 量 向 量 , θ ∗ , θ ( k ) , θ ( k + 1 ) 均 为 θ 的 取 值 空 间 中 的 一 个 具 体 值 。 \theta为变量向量,\theta^*,\theta^{(k)},\theta^{(k+1)}均为\theta 的取值空间中的一个具体值。 θθ,θ(k),θ(k+1)θ

  • 在 参 数 空 间 内 寻 找 合 适 的 θ ∗ , 使 得 ▽ f ( θ ∗ ) = 0 , 对 式 3.2.2 对 θ 求 导 , 可 得 : 在参数空间内寻找合适的\theta^*,使得\bigtriangledown f(\theta^*)=0,对式3.2.2对\theta求导,可得: θ,使f(θ)=0,3.2.2θ
    ((3.2.5)) ▽ f ( θ ) = g k + H k ⋅ ( θ − θ ( k ) ) \bigtriangledown f(\theta)=g_k+H_k \cdot (\theta-\theta^{(k)})\tag{(3.2.5)} f(θ)=gk+Hk(θθ(k))((3.2.5))

其 中 H k = H ( θ ( k ) ) 其中H_k=H(\theta^{(k)}) Hk=H(θ(k))

  • 每 次 迭 代 从 点 θ ( k ) 开 始 , 求 目 标 函 数 的 极 小 值 点 , 作 为 k + 1 次 迭 代 值 θ ( k + 1 ) , 每次迭代从点\theta^{(k)}开始,求目标函数的极小值点,作为k+1次迭代值\theta^{(k+1)}, θ(k)k+1θ(k+1),

(3.2.6) ▽ f ( θ ( k + 1 ) ) = g k + 1 ( θ ( k + 1 ) ) = g k ( θ k ) + H k ⋅ ( θ ( k + 1 ) − θ ( k ) ) \bigtriangledown f(\theta^{(k+1)})=g_{k+1}(\theta^{(k+1)})=g_{k}(\theta^k)+H_k \cdot (\theta^{(k+1)}-\theta^{(k)})\tag{3.2.6} f(θ(k+1))=gk+1(θ(k+1))=gk(θk)+Hk(θ(k+1)θ(k))(3.2.6)

假 设 θ ( k + 1 ) 满 足 : 假设\theta^{(k+1)}满足: θ(k+1)
(3.2.7) ▽ f ( θ ( k + 1 ) ) = 0 \bigtriangledown f(\theta^{(k+1)})=0\tag{3.2.7} f(θ(k+1))=0(3.2.7)
则:
(3.2.8) θ ( k + 1 ) = θ ( k ) − H k − 1 ⋅ g k \theta^{(k+1)}=\theta^{(k)}-H_{k}^{-1}\cdot g_k\tag{3.2.8} θ(k+1)=θ(k)Hk1gk(3.2.8)

(3.2.9) g k ( j ) = ∂ f ( θ ) ∂ θ j = − 1 m ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) g_{k(j)} =\frac{\partial f(\theta)}{\partial \theta_{j}}=-\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}-h_{\theta}(x^{(i)}))x^{(i)}_{j}\tag{3.2.9} gk(j)=θjf(θ)=m1i=1m(y(i)hθ(x(i)))xj(i)(3.2.9)

\begin{align} H_{k(ij)}= &\frac{\partial^2f(\theta)}{\partial\theta_i\partial\theta_j}\ & =-\frac{1}{m} \frac{\partial}{\theta_j}\sum_{t=1}m(y{(t)}-h_\theta(x{(t)}))x_i{(t)}
\ & =- \frac{1}{m} \sum_{t=1}^m \frac{\partial}{\theta_j} (y{(t)}-h_\theta(x{(t)}))x_i^{(t)}
\ & =- \frac{1}{m} \sum_{t=1}^m -x_i^{(t)} \frac{\partial }{\partial \theta_j}h_\theta(x^{(t)})
\ & = -\frac{1}{m} \sum_{t=1}^m -x_i^{(t)} h_\theta(x^{(i)}) (1-h_\theta(x^{(i)})) \frac{\partial}{\theta_j}(\thetaTx{(t)} )
\ &=-\frac{1}{m} \sum_{t=1}^m h_\theta(x{(t)})(h_\theta(x{(t)})-1)x{(t)}_ix{(t)}_j\ \end{align}

##3.3、拟牛顿法

  • 基本思想:
    在 实 际 求 解 过 程 中 , 需 要 计 算 海 赛 矩 阵 的 逆 矩 阵 H − 1 , 这 一 过 程 较 为 复 杂 , 考 虑 用 一 个 n 阶 矩 阵 G k = G ( θ ( k ) ) 来 近 似 代 替 H k − 1 = H − 1 ( θ k ) , 在实际求解过程中,需要计算海赛矩阵的逆矩阵H^{-1},这一过程较为复杂,考虑用一个n阶矩阵G_k=G(\theta^{(k)})来近似代替H_{k}^{-1}=H^{-1}(\theta^{k}), H1,nGk=G(θ(k))Hk1=H1(θk)
    先 看 牛 顿 迭 代 中 海 赛 矩 阵 H k 满 足 的 条 件 。 首 先 , H k 满 足 以 下 关 系 , 由 3.2.6 能 得 到 : 先看牛顿迭代中海赛矩阵H_k满足的条件。首先,H_k 满足以下关系,由3.2.6能得到: HkHk3.2.6
    (3.3.1) g k + 1 − g k = H k ⋅ ( θ ( k + 1 ) − θ k ) g_{k+1}-g_{k}=H_k \cdot (\theta^{(k+1)}-\theta^{k})\tag{3.3.1} gk+1gk=Hk(θ(k+1)θk)(3.3.1)

y k = g k + 1 − g k , s k = θ ( k + 1 ) − θ k y_k=g_{k+1}-g_k,s_k=\theta^{(k+1)}-\theta^{k} yk=gk+1gk,sk=θ(k+1)θk

(3.3.2) y k = H k ⋅ s k y_k=H_k\cdot s_k\tag{3.3.2} yk=Hksk(3.3.2)

(3.3.3) H k − 1 ⋅ y k = s k H_{k}^{-1}\cdot y_k = s_k\tag{3.3.3} Hk1yk=sk(3.3.3)

###3.3.1、 D F P 算 法 : 将 G k 作 为 H k − 1 的 近 似 DFP算法:将G_k作为H_{k}^{-1}的近似 DFPGkHk1
(3.3.4) G k + 1 ⋅ y k = s k G_{k+1}\cdot y_k=s_k\tag{3.3.4} Gk+1yk=sk(3.3.4)

(3.3.5) G k + 1 = G k + △ G k G_{k+1}=G_k + \bigtriangleup G_k\tag{3.3.5} Gk+1=Gk+Gk(3.3.5)

(3.3.6) G k + 1 = G k + s k   s k T s k T   y k − G k   y k   y k T   G k y k T   G k   y k G_{k+1}=G_{k}+ \frac{s_k \ s_{k}^{T}}{s_{k}^{T}\ y_k}-\frac{G_k\ y_k\ y_{k}^{T}\ G_k}{y_{k}^{T}\ G_k\ y_k}\tag{3.3.6} Gk+1=Gk+skT yksk skTykT Gk ykGk yk ykT Gk(3.3.6)

###3.3.2、 B F G S 算 法 : B k 代 替 H k BFGS算法:B_k代替H_k BFGSBkHk
(3.3.7) y k = B k + 1 ⋅ s k y_k=B_{k+1}\cdot s_k\tag{3.3.7} yk=Bk+1sk(3.3.7)
(3.3.8) B k + 1 = B k + △ B k B_{k+1}=B_k + \bigtriangleup B_k\tag{3.3.8} Bk+1=Bk+Bk(3.3.8)
(3.3.9) B k + 1 = B k + y k   y k T y k T   s k − B k   s k   s k T   B k s k T   B k   s k B_{k+1}=B_k+\frac{y_k\ y_{k}^{T}}{y_{k}^{T}\ s_{k}}-\frac{B_k\ s_k \ s_{k}^{T}\ B_k}{s_{k}^{T}\ B_k \ s_k}\tag{3.3.9} Bk+1=Bk+ykT skyk ykTskT Bk skBk sk skT Bk(3.3.9)
对3.3.9公式应用两次应用Sherman-Morrison公式:
(3.3.10) G k + 1 = G k + ( s k T   y k + y k T   G k   y k ) ( s k   s k T ) ( s k T   y k ) 2 − G k   y k   s k T + s k   y k T   G k s k T   y k G_{k+1}=G_k + \frac{(s_{k}^{T}\ y_k+y_{k}^{T}\ G_k \ y_k)(s_k \ s_{k}^{T})}{(s_{k}^{T}\ y_k)^2}-\frac{G_k\ y_k\ s_{k}^{T}+s_{k}\ y_{k}^{T}\ G_k }{s_{k}^{T}\ y_k}\tag{3.3.10} Gk+1=Gk+(skT yk)2(skT yk+ykT Gk yk)(sk skT)skT ykGk yk skT+sk ykT Gk(3.3.10)

  • B r o y d e n 算 法 : Broyden算法: Broyden
    (3.3.11) G k + 1 = α ⋅ G D F P + ( 1 − α ) ⋅ G B F G S G_{k+1}=\alpha\cdot G^{DFP}+(1-\alpha)\cdot G^{BFGS}\tag{3.3.11} Gk+1=αGDFP+(1α)GBFGS(3.3.11)

参考文献

http://blog.youkuaiyun.com/zdy0_2004/article/details/49977493

这里写图片描述

参考:
https://blog.youkuaiyun.com/jasonzzj/article/details/52017438
http://blog.youkuaiyun.com/lookqlp/article/details/51161640
https://blog.youkuaiyun.com/red_stone1/article/details/72229903

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值