第2.1章:逻辑回归(Logistic Regression)_原理推导&参数求解&模型评估

文中样本数为 m m m,特征数为 n n n y ( i ) y^{(i)} y(i)为第 i i i组样本的标记值(真实值), X i X_{i} Xi为第 i i i组样本的特征值, x i x_{i} xi表示第 i i i个变量(特征),同理 x n ( m ) x_{n}^{(m)} xn(m)表示第 m m m个样本的第 n n n个特征。

第2.1章:逻辑回归

  • 来源
  • 本章视频
  • 一、逻辑回归算法原理推导
    • 1.概述
    • 2.引入sigmoid函数
      • 为什么要引入?
      • 关于sigmiod函数
    • 3.假设函数
      • 决策边界(参数的几何意义)
      • 关于假设函数的意义
      • 逻辑回归也是广义线性模型
    • 4.似然函数
    • 5.目标函数(损失函数)
      • 目标函数向量化
    • 6.逻辑回归的优缺点
  • 二、梯度下降法求解参数
    • 代数法
    • 迭代公式向量化(vectorization)
    • 几点说明
  • 三、多分类问题
  • 四、模型评估方法

来源

Lecture_02

本章视频

03_数据分析处理库-Pandas、04_数据可视化库-Matplotlib、08_逻辑回归算法、09_案例实战:Python实现逻辑回归与梯度下降策略、10_项目实战:交易数据异常检测

一、逻辑回归算法原理推导

1.概述

  • 逻辑回归是一个经典的二分类算法,属于分类问题
  • 一般处理分类问题的基本套路:优先考虑简单一些的逻辑回归,先看看效果。然后根据结果,考虑用别的复杂一些的算法优化。再比较一下,差不多的话还是选择逻辑回归。
  • 关于逻辑回归,可以用一句话来总结:逻辑回归假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。
  • 利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。

2.引入sigmoid函数

为什么要引入?

前面介绍过线性回归模型,那么在线性回归模型的基础上,是否可以实现一个预测因变量是离散数据类型的模型呢?一开始可能会想到阶跃函数 ϕ ( z ) = { 0 ,  if  z < 0 0.5 ,  if  z = 0 1 ,  if  z > 0 \phi(z)=\left\{\begin{array}{ll}{0,} & {\text { if } z<0} \\ {0.5,} & {\text { if } z=0} \\ {1,} & {\text { if } z>0}\end{array}\right. ϕ(z)=0,0.5,1, if z<0 if z=0 if z>0但由于其非凸、不光滑、不连续不可微的特点,使得算法很难对该函数进行优化。相对的,sigmoid函数 ϕ ( z ) = 1 1 + e − z \phi(z)=\frac{1}{1+e^{-z}} ϕ(z)=1+ez1光滑、无限阶可导,以及完美的映射到概率空间,使其成为了一个更好的选择。

关于sigmiod函数

下图即为sigmoid函数的图形:
             第2.1章:逻辑回归(Logistic Regression)_原理推导&参数求解&模型评估_第1张图片
有以下几个特性:

  1. 中间范围内函数斜率最大,对应 ϕ ( z ) \phi(z) ϕ(z)的大部分数值变化。
  2. 自变量取值从负无穷到正无穷,值域为(0,1),也就是将输入映射到(0,1)的一个函数,实现了数值与概率的转化。特别地,当 Z=0 时, ϕ ( z ) \phi(z) ϕ(z)=0.5。

3.假设函数

  • 为了实现Logistic回归分类器,我们可以在每个特征上都乘以一个回归系数,然后把所有的结果值相加,将这个总和代入Sigmoid函数中,进而得到一个范围在0~1之间的数值。任何大于0.5的数据被分入1类,小于0.5即被归入0类。所以,Logistic回归也可以被看成是一种概率估计
  • 这里讨论的都是二元分类,由此,逻辑回归的假设函数为: h θ ( x ) = ϕ ( θ T X ) = 1 1 + e − ( θ T X )                                                 ( 01 ) h_{\theta}(x)=\phi\left(\theta^{T} X\right)=\frac{1}{1+e^{-\left(\theta^{T} X\right)}}                        (01) hθ(x)=ϕ(θTX)=1+e(θTX)1                        (01) 其 中 θ T X = ∑ i = 0 n θ i x i = θ 0 x 0 + θ 1 x 1 + . . . . . . + θ n x n   , x 0 = 1                         其中\theta^{T} X=\sum_{i=0}^{n} \theta_{i} x_{i}=\theta_{0} x_{0}+\theta_{1} x_{1}+......+\theta_{n} x_{n} ,x_{0}=1             θTX=i=0nθixi=θ0x0+θ1x1+......+θnxn x0=1            

决策边界(参数的几何意义)

  • 实际使用中,我们会对所有输出结果进行排序,然后结合业务来决定出一个阈值。 假设我们得出阈值为0.5,那么: 当 h θ ( x ) ≥ 0.5 时 , 预 测 y = 1   ; 当 h θ ( x ) < 0.5 时 , 预 测 y = 0 当h_{\theta}(x)≥0.5时,预测y=1 ;当h_{\theta}(x)<0.5时,预测y=0 hθ(x)0.5y=1 hθ(x)<0.5y=0
  • 根据上面的sigmoid函数,当 Z=0 时, ϕ ( z ) \phi(z) ϕ(z)=0.5,我们可以推出 θ T X ≥ 0 时 , 预 测 y = 1   ; θ T X < 0 时 , 预 测 y = 0 \theta^{T} X≥0时,预测y=1 ;\theta^{T} X<0时,预测y=0 θTX0y=1 θTX<0y=0
  • 用个例子来表示这个推论的几何意义(参数决定决策边界的形状)
    假设有下图这么一个模型, g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1,我们得出阈值为0.5,参数 θ 0 = − 3 , θ 1 = 1 , θ 2 = 1 \theta_0=-3,\theta_1=1,\theta_2=1 θ0=3,θ1=1,θ2=1
               第2.1章:逻辑回归(Logistic Regression)_原理推导&参数求解&模型评估_第2张图片
    则 − 3 + x 1 + x 2 ≥ 0 时 , 即 x 1 + x 2 ≥ 3 时 , 模 型 将 预 测 y = 1 。 于 是 我 们 可 以 绘 制 直 线 x 1 + x 2 = 3 , 这 条 线 就 是 我 们 模 型 的 分 界 线 , 将 预 测 为 1 的 区 域 和 预 测 为 0 的 区 域 分 隔 开 。 则-3+x_1+x_2≥0时,即x_1+x_2≥3时,模型将预测y=1。于是我们可以绘制直线x_1+x_2=3,这条线就是我们模型的分界线,将预测为1的区域和预测为 0的区域分隔开。 3+x1+x20x1+x23y=1线x1+x2=3线线10
                     第2.1章:逻辑回归(Logistic Regression)_原理推导&参数求解&模型评估_第3张图片

关于假设函数的意义

  • 和线性回归模型类似,逻辑回归也有假设条件
    (1)假设数据服从伯努利分布
    (2)假设模型的输出值是:样本为正例的概率
    基于这两个假设,我们可以分别得出类别为1和0的后验概率估计 P ( y = 1 ∣ x , θ ) = h θ ( x ) ,   P ( y = 0 ∣ x , θ ) = 1 − h θ ( x ) \begin{array}{c}{P(y=1 | x, \theta)=h_{\theta}(x)} ,  {P(y=0 | x, \theta)=1-h_{\theta}(x)}\end{array} P(y=1x,θ)=hθ(x) P(y=0x,θ)=1hθ(x)整合之后: P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y                                               ( 02 ) P(y | x ; \theta)=\left(h_{\theta}(x)\right)^{y}\left(1-h_{\theta}(x)\right)^{1-y}                       (02) P(yx;θ)=(hθ(x))y(1hθ(x))1y                       (02)
  • 综上所述,假设函数求得就是:在给定了特征 x x x和参数 θ \theta θ后,真实值 y = 1 y=1 y=1的可能性,这个值是介于0到1的一个概率值。所以函数值越大,也就意味着 y = 1 y=1 y=1的概率越大,函数值越小,则 y = 0 y=0 y=0的概率越大。例如:如果对于给定的 X X X,通过已经确定的参数计算得出 h θ ( x ) = 0.7 h_{\theta}(x)=0.7 hθ(x)=0.7,则表示有70%的几率 y = 1 y=1 y=1,即正向类,相应地 y y y为负向类的几率为1-0.7=0.3。

逻辑回归也是广义线性模型

除了上面的表现形式,我们也可以用另外一种形式来表达二元逻辑回归模型。将上面模型简单地进行变化: h θ ( x ) = y = 1 1 + e − ( θ T X ) ⇒ ln ⁡ ( y 1 − y ) = θ T X h_{\theta}(x)=y=\frac{1}{1+e^{-\left(\theta^{T} X\right)}} \Rightarrow \ln \left(\frac{y}{1-y}\right)=\theta^{T} X hθ(x)=y=1+e(θTX)1ln(1yy)=θTX 根据广义线性模型的定义,逻辑回归模型是联系函数为 g ( y ) = ln ⁡ ( y 1 − y ) g(y)=\ln \left(\frac{y}{1-y}\right) g(y)=ln(1yy)的广义线性模型

  • 公式中, y y y可以理解为样本 X X X为正例的概率,而 1 − y 1-y 1y则可以理解为样本 X X X为负例时的概率。二者的比值 y / ( 1 − y ) y/(1-y) y/(1y)被称为“odds”,即“几率”,反映了 X X X作为正例的相对可能性,对几率取对数就得到了线性回归模型了。上式其实是在用线性回归模型的预测结果去逼近真实标记的对数几率。所以该模型也被称作“对数几率回归”。

4.似然函数

  • 假设函数有了之后,下面就是确定参数 θ \theta θ的值,这里采用“极大似然法”来进行估计:
    给定数据集 { ( X i , y ( i ) ) } i = 1 m \left\{\left(X_{i}, y^{(i)}\right)\right\}_{i=1}^{m} {(Xi,y(i))}i=1m,我们自然希望对于每个样本,属于其真实标记的概率越大越好。结合假设函数的意义,即:样本标记为1时,对应的 h θ ( x ) h_{\theta}(x) hθ(x)越大越好;样本标记为0时,对应的 1 − h θ ( x ) 1-h_{\theta}(x) 1hθ(x)越大越好。
  • 综上所述,取似然函数 L ( θ ) = ∏ i = 1 m P ( y ( i ) ∣ X i ; θ ) = ∏ i = 1 m ( h θ ( x i ) ) y i ( 1 − h θ ( x i ) ) 1 − y i ⇒ m a x                     ( 03 ) L(\theta)=\prod_{i=1}^{m} P\left(y^{(i)} | X_{i} ; \theta\right)=\prod_{i=1}^{m}\left(h_{\theta}\left(x_{i}\right)\right)^{y_{i}}\left(1-h_{\theta}\left(x_{i}\right)\right)^{1-y_{i}} \Rightarrow max           (03) L(θ)=i=1mP(y(i)Xi;θ)=i=1m(hθ(xi))yi(1hθ(xi))1yimax          (03)

5.目标函数(损失函数)

  • 等式(03)为连乘积的形式不好求最大值,考虑取对数后单调性不变,得到对数似然函数: l ( θ ) = log ⁡ L ( θ ) = ∑ i = 1 m ( y ( i ) log ⁡ h θ ( x i ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x i ) ) ) ⇒ m a x l(\theta)=\log L(\theta)=\sum_{i=1}^{m}\left(y^{(i)} \log h_{\theta}\left(x_{i}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x_{i}\right)\right)\right) \Rightarrow max l(θ)=logL(θ)=i=1m(y(i)loghθ(xi)+(1y(i))log(1hθ(xi)))max 在这里,我们取目标函数为: J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] ⇒ m i n           ( 04 ) J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}\left[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)\right] \Rightarrow min       (04) J(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]min     (04)
  • 注:(1)乘一个 1 / m 1/m 1/m是为了让“利用100组样本计算出的 J ( θ ) J(\theta) J(θ)”与“利用10000组样本计算出的 J ( θ ) J(\theta) J(θ)”具有可比性,因此统一除一个 m m m
      (2)添一个负号是为了将求最大值的问题,变成求最小值的问题,后续可用梯度下降算法求参数 θ \theta θ。当然了,也可以不加负号,后续用梯度上升求最大值也是一样的。

目标函数向量化

J ( θ ) = − 1 m [ Y T ⋅ l o g ( X ⋅ θ ) + ( 1 − Y T ) ⋅ l o g ( 1 − X ⋅ θ ) ] ⇒ m i n                         ( 05 ) J(\theta)= -\frac{1}{m} \left[ Y^{T} \cdot log{\left( X \cdot \theta \right )} + \left( 1- Y^{T} \right ) \cdot log{\left( 1-X \cdot \theta \right )} \right]\Rightarrow min                 (05) J(θ)=m1[YTlog(Xθ)+(1YT)log(1Xθ)]min            (05)

6.逻辑回归的优缺点

  • 优点:
  1. 直接对分类可能性进行建模,无需假设数据分布,这样就避免了假设分布不准确所带来的问题。
  2. 形式简单,模型的可解释性非常好,特征的权重可以看到不同的特征对最后结果的影响。
  3. 除了类别,还能得到近似概率预测,这对许多需利用概率辅助决策的任务很有用。
  • 缺点:
  1. 准确率不是很高,因为形势非常的简单,很难去拟合数据的真实分布。
  2. 本身无法筛选特征。

二、梯度下降法求解参数

代数法

  • 对损失函数求最小值,这里采用梯度下降法(样本数为m,特征数为n),将(01)式代入(04)有: J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( 1 1 + e − θ T X i ) + ( 1 − y ( i ) ) log ⁡ ( 1 − 1 1 + e − θ T X i ) ] = − 1 m ∑ i = 1 m [ − y ( i ) log ⁡ ( 1 + e − θ T X i ) − ( 1 − y ( i ) ) log ⁡ ( 1 + e θ T X i ) ] \begin{aligned} J(\theta) &= -\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \log \left(\frac{1}{1+e^{-\theta^{T} X_{i}}}\right)+\left(1-y^{(i)}\right) \log \left(1-\frac{1}{1+e^{-\theta^{T} X_{i}}}\right)\right] \\ &= -\frac{1}{m} \sum_{i=1}^{m}\left[-y^{(i)} \log \left(1+e^{-\theta^{T} X_{i}}\right) - \left(1-y^{(i)}\right) \log \left(1+e^{\theta^{T} X_{i}}\right)\right] \end{aligned} J(θ)=m1i=1m[y(i)log(1+eθTXi1)+(1y(i))log(11+eθTXi1)]=m1i=1m[y(i)log(1+eθTXi)(1y(i))log(1+eθTXi)]
  • 对目标函数求导: ∂ ∂ θ j J ( θ ) = − 1 m ∑ i = 1 m [ − y ( i ) − x j ( i ) e − θ T X i 1 + e − θ T X i − ( 1 − y ( i ) ) x j ( i ) e θ T X i 1 + e θ T X i ] = − 1 m ∑ i = 1 m [ y ( i ) x j ( i ) 1 + e θ T X i − ( 1 − y ( i ) ) x j ( i ) e θ T X i 1 + e θ T X i ] = − 1 m ∑ i = 1 m y ( i ) x j ( i ) − x j ( i ) e θ T X i + y ( i ) x j ( i ) e θ T X i 1 + e θ T X i = − 1 m ∑ i = 1 m y ( i ) ( 1 + e θ T X i ) − e θ T X i 1 + e θ T X i x j ( i ) = − 1 m ∑ i = 1 m ( y ( i ) − e θ T X i 1 + e θ T X i ) x j ( i ) = − 1 m ∑ i = 1 m ( y ( i ) − 1 1 + e − θ T X i ) x j ( i ) = − 1 m ∑ i = 1 m [ y ( i ) − h θ ( x ( i ) ) ] x j ( i ) = 1 m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] x j ( i ) \begin{aligned} \frac{\partial}{\partial \theta_{j}} J(\theta) &= -\frac{1}{m} \sum_{i=1}^{m}\left[-y^{(i)} \frac{-x_{j}^{(i)} e^{-\theta^{T} X_{i}}}{1+e^{-\theta^{T} X_{i}}}-\left(1-y^{(i)}\right) \frac{x_{j}^{(i)} e^{\theta^{T} X_{i}}}{1+e^{\theta^{T} X_{i}}}\right] \\ &= -\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \frac{x_{j}^{(i)}}{1+e^{\theta^{T} X_{i}}}-\left(1-y^{(i)}\right) \frac{x_{j}^{(i)} e^{\theta^{T} X_{i}}}{1+e^{\theta^{T} X_{i}}}\right] \\ &= -\frac{1}{m} \sum_{i=1}^{m} \frac{y^{(i)} x_{j}^{(i)}-x_{j}^{(i)} e^{\theta^{T} X_{i}}+y^{(i)} x_{j}^{(i)} e^{\theta^{T} X_{i}}}{1+e^{\theta^{T} X_{i}}} \\ &= -\frac{1}{m} \sum_{i=1}^{m} \frac{y^{(i)}\left(1+e^{\theta^{T} X_{i}}\right)-e^{\theta^{T} X_{i}}}{1+e^{\theta^{T} X_{i}}} x_{j}^{(i)} \\ &= -\frac{1}{m} \sum_{i=1}^{m}\left(y^{(i)}-\frac{e^{\boldsymbol{\theta}^{T} X_{i}}}{1+e^{\boldsymbol{\theta}^{T} X_{i}}}\right) x_{j}^{(i)} \\ &= -\frac{1}{m} \sum_{i=1}^{m}\left(y^{(i)}-\frac{1}{1+e^{-\boldsymbol{\theta}^{T} X_{i}}}\right) x_{j}^{(i)} \\ &= -\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)}-h_{\theta}\left(x^{(i)}\right)\right] x_{j}^{(i)} \\ &= \frac{1}{m} \sum_{i=1}^{m}\left[h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right] x_{j}^{(i)} \end{aligned} θjJ(θ)=m1i=1m[y(i)1+eθTXixj(i)eθTXi(1y(i))1+eθTXixj(i)eθTXi]=m1i=1m[y(i)1+eθTXixj(i)(1y(i))1+eθTXixj(i)eθTXi]=m1i=1m1+eθTXiy(i)xj(i)xj(i)eθTXi+y(i)xj(i)eθTXi=m1i=1m1+eθTXiy(i)(1+eθTXi)eθTXixj(i)=m1i=1m(y(i)1+eθTXieθTXi)xj(i)=m1i=1m(y(i)1+eθTXi1)xj(i)=m1i=1m[y(i)hθ(x(i))]xj(i)=m1i=1m[hθ(x(i))y(i)]xj(i)
  • 重复迭代: θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) , 其 中 j = 0 , 1 , . . . , n                         ( 06 ) \theta_{j} :=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)} ,其中j=0,1,...,n            (06) θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)j=0,1,...,n            06

迭代公式向量化(vectorization)

上面的循环式的迭代公式太麻烦了,可以尝试将迭代公式向量化。参考内容

  • 将样本 X X X、标记 Y Y Y 以及参数 θ \theta θ表示成矩阵的形式:

X = [ x 0 ( 1 ) x 1 ( 1 ) ⋯ x n ( 1 ) x 0 ( 2 ) x 1 ( 2 ) ⋯ x n ( 2 ) ⋯ ⋯ ⋯ ⋯ x 0 ( m ) x 1 ( m ) ⋯ x n ( m ) ] = [ 1 x 1 ( 1 ) ⋯ x n ( 1 ) 1 x 1 ( 2 ) ⋯ x n ( 2 ) ⋯ ⋯ ⋯ ⋯ 1 x 1 ( m ) ⋯ x n ( m ) ] X = \left[\begin{array}{cccc}{x_{0}^{(1)}} & {x_{1}^{(1)}} & {\cdots} & {x_{n}^{(1)}} \\ {x_{0}^{(2)}} & {x_{1}^{(2)}} & {\cdots} & {x_{n}^{(2)}} \\ {\cdots} & {\cdots} & {\cdots} & {\cdots} \\ {x_{0}^{(m)}} & {x_{1}^{(m)}} & {\cdots} & {x_{n}^{(m)}}\end{array}\right] = \left[\begin{array}{cccc}{1} & {x_{1}^{(1)}} & {\cdots} & {x_{n}^{(1)}} \\ {1} & {x_{1}^{(2)}} & {\cdots} & {x_{n}^{(2)}} \\ {\cdots} & {\cdots} & {\cdots} & {\cdots} \\ {1} & {x_{1}^{(m)}} & {\cdots} & {x_{n}^{(m)}}\end{array}\right] X=x0(1)x0(2)x0(m)x1(1)x1(2)x1(m)xn(1)xn(2)xn(m)=111x1(1)x1(2)x1(m)xn(1)xn(2)xn(m) Y = [ y ( 1 ) y ( 2 ) ⋯ y ( m ) ] Y=\left[\begin{array}{l}{y^{(1)}} \\ {y^{(2)}} \\{\cdots} \\ {y^{(m)}}\end{array}\right] Y=y(1)y(2)y(m) θ = [ θ 0 θ 1 ⋯ θ n ] \theta=\left[\begin{array}{l}{\theta_{0}} \\ {\theta_{1}} \\ {\cdots} \\ {\theta_{n}}\end{array}\right] θ=θ0θ1θn

  • X X X θ \theta θ的乘积记为 A m ∗ 1 A_{m*1} Am1,则有: A = X ⋅ θ = [ x 0 ( 1 ) x 1 ( 1 ) ⋯ x n ( 1 ) x 0 ( 2 ) x 1 ( 2 ) ⋯ x n ( 2 ) ⋯ ⋯ ⋯ ⋯ x 0 ( m ) x 1 ( m ) ⋯ x n ( m ) ] ⋅ [ θ 0 θ 1 ⋯ θ n ] = [ θ 0 x 0 ( 1 ) + θ 1 x 1 ( 1 ) + ⋯ θ n x n ( 1 ) θ 0 x 0 ( 2 ) + θ 1 x 1 ( 2 ) + ⋯ θ n x n ( 2 ) ⋯ ⋯ θ 0 x 0 ( m ) + θ 1 x 1 ( m ) + ⋯ θ n x n ( m ) ] = [ A 1 A 2 ⋯ A m ] A = X \cdot \theta=\left[\begin{array}{cccc}{x_{0}^{(1)}} & {x_{1}^{(1)}} & {\cdots} & {x_{n}^{(1)}} \\ {x_{0}^{(2)}} & {x_{1}^{(2)}} & {\cdots} & {x_{n}^{(2)}} \\ {\cdots} & {\cdots} & {\cdots} & {\cdots} \\ {x_{0}^{(m)}} & {x_{1}^{(m)}} & {\cdots} & {x_{n}^{(m)}}\end{array}\right] \cdot \left[\begin{array}{l}{\theta_{0}} \\ {\theta_{1}} \\ {\cdots} \\ {\theta_{n}}\end{array}\right] = \left[\begin{array}{cccc}{\theta_{0} x_{0}^{(1)}} + {\theta_{1} x_{1}^{(1)}} + {\cdots} {\theta_{n} x_{n}^{(1)}} \\ {\theta_{0} x_{0}^{(2)}} + {\theta_{1} x_{1}^{(2)}} + {\cdots} {\theta_{n} x_{n}^{(2)}} \\ {\cdots} {\cdots} \\ {\theta_{0} x_{0}^{(m)}} + {\theta_{1} x_{1}^{(m)}} + {\cdots} {\theta_{n} x_{n}^{(m)}}\end{array}\right] = \left[\begin{array}{l}{A_{1}} \\ {A_{2}} \\ {\cdots} \\ {A_{m}}\end{array}\right] A=θ=x0(1)x0(2)x0(m)x1(1)x1(2)x1(m)xn(1)xn(2)xn(m)θ0θ1θn=θ0x0(1)+θ1x1(1)+θnxn(1)θ0x0(2)+θ1x1(2)+θnxn(2)θ0x0(m)+θ1x1(m)+θnxn(m)=A1A2Am
  • 于是,可以将 h θ ( x ) − y h_{\theta}(x)-y hθ(x)y记为 E m ∗ 1 E_{m*1} Em1 E = [ g ( A 1 ) g ( A 2 ) ⋯ g ( A m ) ] − [ y ( 1 ) y ( 2 ) ⋯ y ( m ) ] = g ( [ A 1 A 2 ⋯ A m ] ) − [ y ( 1 ) y ( 2 ) ⋯ y ( m ) ] = g ( X ⋅ θ ) − Y = [ e 1 e 2 ⋯ e m ]   ( 07 ) E= \left[\begin{array}{c}{g\left(A_{1}\right)} \\ {g\left(A_{2}\right)} \\ {\cdots} \\ {g\left(A_{m}\right)}\end{array}\right] -\left[\begin{array}{l}{y^{(1)}} \\ {y^{(2)}} \\{\cdots} \\ {y^{(m)}}\end{array}\right] = g\left( \left[\begin{array}{c}{A_{1}} \\ {A_{2}} \\ {\cdots} \\ {A_{m}}\end{array}\right]\right) -\left[\begin{array}{l}{y^{(1)}} \\ {y^{(2)}} \\{\cdots} \\ {y^{(m)}}\end{array}\right] = g\left( X \cdot \theta\right)-Y = \left[\begin{array}{c}{e^{1}} \\ {e^{2}} \\ {\cdots} \\ {e^{m}}\end{array}\right]   (07) E=g(A1)g(A2)g(Am)y(1)y(2)y(m)=gA1A2Amy(1)y(2)y(m)=g(θ)Y=e1e2em (07)上面的函数 g ( ) g() g()其实就是 g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1,只不过他的参数是一个 m ∗ 1 m*1 m1的矩阵。所以我们可以设计一个函数 g ( ) g() g(),使得传入一个列向量(即矩阵A),输出结果也是一个列向量, h θ ( x ) − y h_{\theta}(x)-y hθ(x)y便可以一次性得到结果。
  • 回到我们的迭代公式(06),当 j = 0 j=0 j=0时: θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x 0 i = θ 0 − α 1 m ∑ i = 1 m e ( i ) x 0 ( i ) = θ 0 − α 1 m ⋅ [ x 0 ( 1 ) , x 0 ( 2 ) , ⋯   , x 0 ( m ) ] ⋅ E \begin{aligned} \theta_{0} : &=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m} \left(h_{\theta}\left(x^{i}\right)-y^{i}\right) x_{0}^{i} \\&= \theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m} e^{(i)} x_{0}^{(i)} \\ &= \theta_{0}-\alpha \frac{1}{m} \cdot\left[x_{0}^{(1)}, x_{0}^{(2)}, \cdots, x_{0}^{(m)}\right] \cdot E \end{aligned} θ0:=θ0αm1i=1m(hθ(xi)yi)x0i=θ0αm1i=1me(i)x0(i)=θ0αm1[x0(1),x0(2),,x0(m)]E
  • 对于 θ j \theta_{j} θj同理: θ j : = θ j − α 1 m ⋅ [ x j ( 1 ) , x j ( 2 ) , ⋯   , x j ( m ) ] ⋅ E \theta_{j} : = \theta_{j}-\alpha \frac{1}{m} \cdot\left[x_{j}^{(1)}, x_{j}^{(2)}, \cdots, x_{j}^{(m)}\right] \cdot E θj:=θjαm1[xj(1),xj(2),,xj(m)]E
  • 最终,写成矩阵表达式为: [ θ 0 θ 1 ⋯ θ m ] : = [ θ 0 θ 1 ⋯ θ m ] − α 1 m ⋅ [ x 0 ( 1 ) x 0 ( 2 ) ⋯ x 0 ( m ) x 1 ( 1 ) x 1 ( 2 ) ⋯ x 1 ( m ) ⋯ ⋯ ⋯ ⋯ x n ( 1 ) x n ( 2 ) ⋯ x n ( m ) ] ⋅ E \left[\begin{array}{l}{\theta_{0}} \\ {\theta_{1}} \\ {\cdots} \\ {\theta_{m}}\end{array}\right] := \left[\begin{array}{l}{\theta_{0}} \\ {\theta_{1}} \\ {\cdots} \\ {\theta_{m}}\end{array}\right] - \alpha \frac{1}{m} \cdot\left[\begin{array}{cccc}{x_{0}^{(1)}} & {x_{0}^{(2)}} & {\cdots} & {x_{0}^{(m)}} \\ {x_{1}^{(1)}} & {x_{1}^{(2)}} & {\cdots} & {x_{1}^{(m)}} \\ {\cdots} & {\cdots} & {\cdots} & {\cdots} \\ {x_{n}^{(1)}} & {x_{n}^{(2)}} & {\cdots} & {x_{n}^{(m)}}\end{array}\right] \cdot E θ0θ1θm:=θ0θ1θmαm1x0(1)x1(1)xn(1)x0(2)x1(2)xn(2)x0(m)x1(m)xn(m)E
  • 综上所述,梯度的向量化表达式为: ∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) = 1 m ⋅ X T ⋅ E \frac{\partial}{\partial \theta_{j}} J(\theta) = \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)} = \frac{1}{m} \cdot X^{T} \cdot E θjJ(θ)=m1i=1m(hθ(x(i))y(i))xj(i)=m1XTE
  • 所以,最终的向量化迭代公式为: θ : = θ − α 1 m ⋅ X T ⋅ E                                                           ( 08 ) \theta :=\theta-\alpha \frac{1}{m} \cdot X^{T} \cdot E                               (08) θ:=θαm1XTE                             (08)

几点说明

  1. 其实前文已经详细介绍过了梯度下降法,包括:参数和学习率的选择、特征缩放、算法终止条件、三种梯度下降法。链接
  2. 虽然得到的梯度下降算法(代数法)表面上看上去与线性回归的梯度下降算法一样,但是这里的 h θ ( x ) = ϕ ( θ T X ) h_{\theta}(x)=\phi\left(\theta^{T} X\right) hθ(x)=ϕ(θTX)与线性回归中不同,所以实际上是不一样的。另外,在运行梯度下降算法之前,监测下降过程以保证函数收敛、进行特征缩放依旧是非常必要的。

三、多分类问题

  • 解决多分类问题的基本思路是“拆解法”,即将多分类任务拆分为多个二分类任务进行求解。具体来说就是对问题进行拆分,然后为每个拆分出来的二分类任务训练一个分类器,在预测阶段,对这些分类器的结果进行集成并最终获得分类结果。关键问题就是,如何对问题进行拆分,以及如何对多个分类器进行集成。
  • 最经典的拆分策略有三种:“一对一”(one vs. one,即OvO),“一堆其余”(one vs. rest,即OvR),“多对多”(many vs. many,即MvM)。假设类别分为A、B、C、D四种:
    1. OvO分类将这四种类别两两配对,分别为AB、AC、AD、BC、BD、CD共六组(若分类为 N N N种,则分组数量为 N ( N − 1 ) / 2 N(N-1)/2 NN1/2),每一组数据训练一个相应的分类器,分类器将输出正例。预测阶段,将样本传入这六个分类器,将会得到六( N ( N − 1 ) / 2 N(N-1)/2 NN1/2)个输出结果,我们可以将被预测的最多的结果作为分类结果。
    2. OvR分类每次将一个类别作为正例,其余的都归为反例,共分为“A+其他”、“B+其他”、“C+其他”、“D+其他”四组(若分类为 N N N种,则分组数量为 N N N),共训练出四个分类器,分类器输出“结果为正例”的概率。比较这些概率值,选择最大的概率对应的正例为分类结果(更一般的说法是,考虑各分类器的预测置信度,选择置信度最大的标类作为分类结果)。
      注意:OvR因为是一对多的分类,可能会出现类别不平衡的问题,即正例2个而反例98个这样的情况,处理方法参考《机器学习》第3.6节
    3. 以上两种的对比。显然对于 N N N个分类,OvO需要驯练 N ( N − 1 ) / 2 N(N-1)/2 NN1/2个分类器,而OvR仅需训练 N N N个,因此OvO的存储开销和测试时间开销通常比OvR要大。但在训练过程中,OvR的每个分类器均使用全部样例,而OvO仅用两个类别的样例,因此在类别很多时,OvO的训练时间开销通常比OvR要小。至于预测性能,取决于具体的数据分布,但多数情况下两者差不多。
    4. MvM分类每次将一部分做为正例,一部分作为反例,所以他的正、反类构造需要特殊的设计。常用的技术是“纠错输出码”(Error Correcting Output Codes,简称ECOC),它将编码的思想引入类别的拆分,并尽可能在解码过程中具有容错性。具体内容参考《机器学习》第3.5节。
  • 关于多分类问题领域更深入的研究,参考《机器学习》第3.7节,里面提到了一些技术方法和相关文献。

四、模型评估方法

  • 模型评估的术语(True/False代表是否判断正确,Positive/Negative代表模型将其判断为正例还是负例)
    1. TP(True Positive):判断正确,且模型判断为正例,即1判为了1
    2. TN(True Negative):判断正确,且模型判断为负例,即0判为了0
    3. FP(False Positive):判断错误,且模型判断为正例,即0判为了1,又叫“存伪”
    4. FN(False Negative):判断错误,且模型判断为负例,即1判为了0,又叫“去真”
  • 准确率(Accuracy)=(TP+TN)/(TP+TN+FP+FN),即“判断正确数量”/“全体样本”
    • 逻辑回归的数据集都是有一个标签的,当我们建立好一个模型后,可以比较预测值和真实的标签值,通过预测正确的比例来评估模型的好坏。一个实战案例----参看6.1
    • 当样本不均衡的时候,这个评估标准有缺陷。比如:1000组数据中990个是正常的人,10个是有癌症的人。如果我们建立的模型将所有的样本都判断为正常,精度就可以达到99%,但是很显然,这个模型是没有意义的,他不能够将有癌症的人检测出来
  • 查全率、召回率(Recall)=TP/(TP+FN),即“将正例正确判断出来的数量”/“样本中的正例”
    • 就上面的那个例子,我们可以考虑用recall(召回率、查全率)来进行评估,这种评估方法是以目标为导向的,常用来对检测类问题进行评估。比如我们希望将癌症病人检测出来,就可以观察癌症病人被检测出来的比例是多少,如果只检测出来了两个就是0.2,召回率越高显然效果就越好。
    • 查全率即:有这么多正例,你找出来了多少个,有没有全找出,查的全不全
  • 查准率、精确率(Precision)=TP/(TP+FP),即“将正例正确判断出来的数量”/“预测为正的数量”
    • 和准确率有点像,准确率考察的是全体样本,查准率则仅在预测为正的样本中进行判断,看有多少是对的
    • 查准率即:你把这些预测为正,有多少是预测对的,预测的准不准
  • F1值(H-mean值): 精确率和召回率的调和平均 F 1 = 2 1  Precision  + 1  Recall  F_1=\frac{2}{\frac{1}{\text { Precision }}+\frac{1}{\text { Recall }}} F1= Precision 1+ Recall 12
  • ROC曲线、AUC值

你可能感兴趣的:(机器学习,Logistic算法原理推导,梯度下降求参数,目标函数,迭代公式向量化,多分类问题,模型评估)