机器学习 | 分类算法原理——逻辑回归

Hi,大家好,我是半亩花海。接着上次的线性可分继续更新《白话机器学习的数学》这本书的学习笔记,在此分享逻辑回归这一回归算法基础。本章的回归算法原理基于《基于图像大小进行分类》项目,欢迎大家交流学习!

目录

一、逻辑回归概述

二、案例分析

1. sigmoid 函数

2. 决策边界


一、逻辑回归概述

逻辑回归(Logistic Regression)也称作 Logistic 回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。它实际上主要是用来解决二分类问题。通过给定的 n 组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类,其中每一组数据都是由 p 个指标构成。


二、案例分析

我们还是用之前博客中的分类案例,即按横向和纵向对图像进行分类的例子。为了处理简便,这里设横向的值为 1、纵向的值为 0

1. sigmoid 函数

我们在学习回归的时候,定义过一个带参数的函数:

f_{\boldsymbol{\theta}}(\boldsymbol{x})=\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}

这是通过最速下降法或随机梯度下降法来学习参数 \theta 的表达式。使用这个 \theta 能够求出对未知数据 x 的输出值。

这里的思路是一样的。我们需要能够将未知数据分类为某个类别的函数 f_{\boldsymbol{\theta}}(\boldsymbol{x})。 这是和感知机的判别函数 f_{\boldsymbol{\omega}}(\boldsymbol{x}) 类似的东西,使用与回归时同样的参数 \theta,函数的形式如下:

f_{\boldsymbol{\theta}}(\boldsymbol{x})=\frac{1}{1+\exp \left(-\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}\right)}

式中,\exp 的全称是 exponential,即指数函数。\exp(x)e^{x} 含义相同, 只是写法不同。e 是自然常数,具体的值为 2.7182......(ps:\exp \left(-\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}\right) 可以换成 \mathrm{e}^{-\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}} 这样的写法,指数部分如果过于复杂,上标的字号太小会很难看清,所以这时候使用 \exp 写法的情况比较多)。

上述函数的名字叫 sigmoid 函数,设 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} 为横轴,f_\theta(x) 为纵轴,那么它的图形如下所示。

通过观察这个函数,我们会发现来个特征:

  • 当 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} = 0 时,f_\theta(x)=0.5
  • 0 < f_\theta(x) < 1

刚才说到我们要用概率来考虑分类。因为 sigmoid 函数的取值范围是 0 < f_\theta(x) < 1,所以它可以作为概率来使用。

2. 决策边界

刚才说到把上述表达式 f_{\boldsymbol{\theta}}(\boldsymbol{x}) 当作概率来使用,那么接下来我们就把未知数据 \boldsymbol{x} 是横向图像的概率作为 f_{\boldsymbol{\theta}}(\boldsymbol{x}),其表达式如下。

P(y=1 \mid \boldsymbol{x})=f_{\boldsymbol{\theta}}(\boldsymbol{x})

上述式子叫条件概率。这是在给出 \boldsymbol{x} 数据时 y = 1,即图像为横向的概率。假如 f_{\boldsymbol{\theta}}(\boldsymbol{x}) 的计算结果是 0.8,意思是图像为横向的概率为 80%、纵向的概率为 20%,这种状态可以分类为横向

实际上,我们应该是以 0.5 为阈值注意一下这个阈值 0.5,在 sigmoid 函数图像中也出现过),然后把 f_{\boldsymbol{\theta}}(\boldsymbol{x}) 的结果与它相比较, 从而分类横向或纵向。

y= \begin{cases}1 & \left(f_{\boldsymbol{\theta}}(\boldsymbol{x}) \geqslant 0.5\right) \\ 0 & \left(f_{\boldsymbol{\theta}}(\boldsymbol{x})<0.5\right)\end{cases}

当 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} = 0 时,f_\theta(x)=0.5。从图中还可以看出,在 f_\theta(x) \geq 0.5 时,\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} \geq 0;反过来,在 f_\theta(x) < 0.5 时,\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} < 0

我们可以把上述表达式 f_{\boldsymbol{\theta}}(\boldsymbol{x}) 改写为以下这种形式。

y= \begin{cases}1 & \left(\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} \geqslant 0\right) \\ 0 & \left(\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}<0\right)\end{cases}

下面我们像学习感知机时那样,设横轴为图像的宽(x_1)、纵轴为 图像的高(x_2),并且画出图来考虑。然后把训练数据都展示在图上,像学习回归时那样,先随便确定 \theta 再具体地去考虑。

比如当 \theta 是如下这样的向量时,我们来画一下 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} \geq 0 的图像。

\boldsymbol{\theta}=\left[\begin{array}{l} \theta_0 \\ \theta_1 \\ \theta_2 \end{array}\right]=\left[\begin{array}{c} -100 \\ 2 \\ 1 \end{array}\right], \quad \boldsymbol{x}=\left[\begin{array}{l} 1 \\ x_1 \\ x_2 \end{array}\right]

先代入数据,把表达式变为容易理解的形式。如此看来,下面这个不等式表示的范围也就是图像被分类为横向\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} \geq 0y = 1)的范围。

\begin{aligned} & \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}=-100 \cdot 1+2 x_1+x_2 \geqslant 0 \\ & x_2 \geqslant-2 x_1+100 \end{aligned}

我们还可以试着画出不等式所对应的图,这样会更加清晰直观。

同理,分类为纵向的范围即为另一侧,所对应的图如下。

也就是说,我们将 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} = 0 这条直线作为边界线,就可以把这条线两侧的数据分类为横向和纵向了,这样用于数据分类的直线称为决策边界

实际项目应用时这个决策边界似乎不能一开始就能正确地分类图像,实际效果如上图所示,通过前几节的学习,可以清晰地知道这是因为:和回归的时候一样,我们一开始决定参数时太随意了。为了求得正确的参数 \theta 而定义目标函数,再对目标函数进行微分,然后求参数的更新表达式,这种算法就称为逻辑回归

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值