【机器学习】Logistic 分类回归算法 (二元分类 & 多元分类)

简介: 【机器学习】Logistic 分类回归算法 (二元分类 & 多元分类)

在这里插入图片描述

🤵‍♂️ 个人主页: @计算机魔术师
👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。
该文章收录专栏
✨--- 机器学习 ---✨

@toc

一、线性回归能用于分类吗?

$logistic$(数理逻辑)回归算法(预测 离散值 $y$ 的 非常常用的学习算法

假设有如下的八个点($y=1 或 0)$,我们需要建立一个模型得到准确的判断,那么应该如何实现呢

  • 我们尝试使用之前文章所学的线性回归 $h_\theta(x) = \theta^T*x$ 来拟合数据($\theta$是参数列向量,注意这里的$x$是关于$x_i$的向量,其中$x_0=1, 即 x_0*\theta_0 = 常数项$),并在0~1设置一个阈值 $y = 0.5 所对应的 x_{0.5} 值$, $x$ 大于 $x_{0.5}$ 的点则为1,否则为0,预测会得到如下粉丝直线

上一篇文章: 【机器学习】浅谈正规方程法&梯度下降
在这里插入图片描述
假设我们再增加一个数据点,如下图右方,按照如上算法对应的拟合直线$h_\theta(x)$则如下蓝色直线,此时得到错误的预测 (对于结果为1也小于$x_{0.5}$)
在这里插入图片描述
所以综上所诉,用线性回归来用于分类问题通常不是一个好主意,并且线性回归的值会远远偏离0或1,这显示不太合理。

所以梯度下降算法中引出 logistic regression 算法

二、二元分类

2.1假设函数

我们希望能把 $h_\theta(x) = \theta^T*x$ 结果在 0 ~ 1 之间,

这里引入 $sigmoid$ 函数 (也叫做 $logistic$ 函数) —— $g(x) = \frac{1}{1 + e ^{-x}}$

$sigmoid$函数图像是一个区间在 0 ~ 1的S型函数,$x \Rightarrow\infty$则$y\Rightarrow1$,$x \Rightarrow-\infty$则$y\Rightarrow0$

在这里插入图片描述

  • 令 $h_\theta(x) =g( \theta^T*x) = \frac{1}{1 + e ^{- \theta^T*x}}$

那么我们的函数结果结果就会在0 ~ 1 之间

那现在我们所要做的便是需要求得参数$\theta$ 拟合模型

如下图,假设肿瘤案例,如下$x$为一个病人 同样的用列向量表示$x$的参数,那么参数一 tumorSize便是肿瘤的大小,那么我们可以假设输出结果为 0.7 ,意思就是医生会告诉这个病人很不幸,会有很大(70%)的概率得到肿瘤。
  • 那么公式可以表示为 $h_\theta(x) = P(y=1|x;\theta)$
  • 即在$x$的条件下 求给定$y$ (概率参数为$\theta$)的概率

在这里插入图片描述
那么在$y$只有 0 和 1 的情况下,有如下公式 (二者为对立事件,符合全概率公式)

  • $P(y=1|x;\theta)+ P(y=0 |x;\theta)= 1$
  • $1 - P(y=0 |x;\theta)= P(y=1|x;\theta)$

概率结果只在0 ~ 1中

  • 假设如下
那么此时我们可以设置阈值$g(z)$ = 0.5,大于 0.5 的点则为1,否则为0

即在 $z<0$(即 $\theta^T*x$)中 $g(z)$< 0.5, 此时预测为0,在 $z>0$(即 $\theta^T*x$) 时,$g(z)>0$ 预测值为1

在这里插入图片描述

2.1.1 案例一

在这里插入图片描述
我们假设他的各个$\theta$ 参数向量参数为-3,1,1

此时如果满足 $g(z)$> 0.5 , 也就是横坐标 $z$(这里的 $z$ 是对应线性方程) 大于零,预测 y 为 1 条件则如下:
在这里插入图片描述
化简为条件 $x_1 + x_2 >=3$ , 这个条件所对应的几何意义:

即一条切割线的右侧,此时$sigomid函数的z坐标>0$ , y值 大于0.5
在这里插入图片描述

此时该切割线分割除了两个区域,分别是 $y=0 与 y=1$的 情况,我们把这条边界,称为决策边界,这些都是关于假设函数的属性,决定于其参数,与数据集属性无关
在这里插入图片描述

2.1.2例子二

有数据集如下:
在这里插入图片描述
我们假设函数为多项式高阶函数,并对其参数假设赋值如下。

在这里插入图片描述

那我们的预测y=1时,$sigomid$横坐标$z$满足条件为
在这里插入图片描述
可以得到其决策边界decision boundory —— $x_1^2+x_2^2 =1$

![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/a5c338b5690c49159341a0ad96683dca.png)
  • 强调: 决策边界并不是数据集的属性,而是假设函数以及其参数的属性,数据集则是用于拟合参数 $\theta$

不同的高阶多项式 会得到不一样的决策边界
如:
在这里插入图片描述

2.2 拟合logistic回归参数 $\theta_i$

  • 代价函数

我们给定如数据集
在这里插入图片描述
有$m$个样本,同样将每一个$x$用 $n+1$维向量表示(向量每个元素即特征,其中$x0为1$ ) 分类标签$y$只有 0,1结果

  • 那么我们如何选择参数$\theta$呢?

在往篇文章中我们线性回归的均方差代价函数可以变化如下:
在这里插入图片描述
简化函数,我们省略上标
在这里插入图片描述
因为 $sigomid$ 是复杂的非线性函数,如果直接以函数作为代价函数,那么所求模型对应代价函数为非凹函数,会有非常多的局部最优,如下图
在这里插入图片描述
我们不能保证其可以下降到函数最优

我们往往希望找到如下的凹型代价函数,以可以找到参数最优。
在这里插入图片描述
故我们需要找到另外的代价函数保证我们可以找到全局最小值

三、logistic代价函数

在这里插入图片描述

3.1 当$y=1$代价函数图像

对该代价函数,我们可以画出当$y=1$时的图像。(由于 $sigomid$ 函数值域在0~1,对应代价函数横坐标为0 ~1)
在这里插入图片描述
为了方便理解我们可以画出,对数函数的图像 $log(z)$ ( $z = h_\theta(x))$ )

在这里插入图片描述

  • 从图中我们也可以看到作为代价函数 很好的性质
  1. 当$Cost \Rightarrow 0$时,即代价函数为0,此时有$h_\theta(x)\Rightarrow1$ 即模型拟合优秀
  2. 当$Cost \Rightarrow\infty$时,即代价函数$\Rightarrow\infty$,此时$h_\theta(x) \Rightarrow 0$即为 。此时说明模型拟合非常差

显然当 $y=1$ 时 这个代价函数满足我们的要求

在这里插入图片描述

3.2 当$y=0$代价函数图像

对应 $y=0$的情况下:
在这里插入图片描述

  • 如下图
  1. 当$Cost \Rightarrow 0$时,即代价函数为 $\Rightarrow0$,此时有$h_\theta(x)\Rightarrow0$ 即模型拟合优秀
  2. 当$Cost \Rightarrow\infty$时,即代价函数 $\Rightarrow\infty$,此时$h_\theta(x) \Rightarrow 1$即为 。函数惩罚很大

同样的符合代价函数性质
在这里插入图片描述

至此,我们定义了关于单变量数据样本的分类代价函数,我们所选择的代价函数可以为我们解决代价函数为非凹函数的问题以及求解参数最优,接下来我们使用梯度下降算法来拟合 $logistic$ 算法

四、 代价函数与梯度下降

为了避免让代价函数分为 $y = 1,y= 0$两种情况 ,我们要找一个方法来把这两个式子合并成一个等式,以便更简单写出代价函数,并推导出梯度下降。

公式如下图蓝色字体公式
在这里插入图片描述

由于 y 只有两个情况 0,1 ,利用该性质 当y = 1 时,y=0情况的多项式消去,y = 0 时同理,这样就成功表达了两种不同情况的函数
在这里插入图片描述

  • 通过将式子合并为一个等式,代价函数(cost function) 变化为如下(参考:统计学的极大似然法为不同模型已知数据寻找参数的方法,即选取概率最大的参数
    最大似然函数参考文章

在这里插入图片描述
同样,我们为了求最小化代价函数以拟合参数$\theta$,使用梯度下降
在这里插入图片描述

  • 同样,将微积分求其偏导

在这里插入图片描述

  • 并用此公式更新每个参数 (注意是:同步更新)

在这里插入图片描述

4.1 线性回归与logistic回归的梯度下降规则

我们可以惊奇的发现以上公式与线性回归时所用来梯度下降的方程一样

那么线性回归和logistic回归是同一种算法吗?

线性回归和logistic在梯度下降更新的函数 区别在于:$h_\theta(x^i)$
  1. 对于线性回归 : $h_\theta(x) = \theta^T*x$
  2. 对于logistic回归:$h_\theta(x) = \frac{1}{1 + e ^{- \theta^T*x}}$

虽然在梯度下降算法看起来规则相同,但假设的定义发生了变化,所以梯度下降和logistic回归是完全不一样的算法

  • 我们用此算法更新各个参数,可以通过for进行实现,也可以通过向量化进行实现。

关于向量化,可以参考文章 【机器学习】向量化计算 -- 机器学习路上必经路

在这里插入图片描述
同样的,在对于线性回归的梯度下降中,我们使用到了特征缩放数据标准化,同样的,这对于$logistic$ 回归算法同样适用。

数据标准化可参考文章: 【机器学习】梯度下降之数据标准化

五、高级优化算法

高级优化算法,与梯度下降相比能够大大提高 $logistic$ 回归速度,也使得算法更加适合大型数据集机器学习问题。
除了使用梯度下降算法,还有诸多如下算法

在这里插入图片描述
优点如下

  • 不需要选择学习率$\alpha$ ( 存在智能内循环,智能选择最佳的学习率$\alpha$
  • 下降速率快得多

缺点

  • 太过于复杂了

在实际解决问题中,我们很少通过自己编写代码求平方根或者求逆矩阵,我们往往都是使用别人写的好的数据科学库,如numpy

有如下例子(求两个参数)
在这里插入图片描述
我们可以通过梯度下降来求得参数,如下求偏导:
在这里插入图片描述
octave代码实现如下;
在这里插入图片描述
这是一个简单的二次代价函数,现在我们如何将其用在logistic回归算法中呢?

在logistic回归中,我们使用如下的$\theta$参数向量 (使用参数向量化)

所以在实现这些高级算法,其实是使用不同的高级库函数,虽然这些算法在调试过程中,更加麻烦,但是其速度远远大于梯度下降,所以面对机器学习问题中,往往使用这些算法。

六、多元分类:一对多

例如将邮件分为亲人,朋友,同事。例如将天气分类,下雨,晴天等、我们可以将这些用数字0,1,2表达,以上这些都是多类别分类

与二分类图像不同(右图
在这里插入图片描述
首先,我们将该数据集划分为三类

我们要做的就是将这数据集转换为三个独立的二元分类问题, 我们将创建一个新的”伪“训练集,其中第二类第三类为负类,第一类为正类(如下图右侧)

在这里插入图片描述
并拟合一个分类器$h_\theta^1(x)$,接下来我们来实现一个标准的逻辑回归分类器,通过训练,我们可以得到一个决策边界
在这里插入图片描述

  • 同理,将其他两类样本如上创建数据集,以及对应的拟合分类器,进行一个标准的逻辑回归分类器,得到对应边界

在这里插入图片描述
总而言之,我们拟合出了三个分类器

$h_\theta^i(x) = P(y=i|x;\theta) (i=1,2,3)$

每个分类器都对应与之的情况训练,y = 1, 2, 3 的情况
在这里插入图片描述

我们训练了逻辑回归分类器 $h_\theta^i(x) = P(y=i|x;\theta) (i=1,2,3)$,用于预测 $y= i$ 的概率,为了做出预测,我们向分类器输入一个$x$,期望获得预测,我们需要在这三个回归分类器中运行输入$x$,选出结果中概率最大的一个(最可信)的那个分类器,就是我们要的类别。

相关文章
|
1天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
19 7
|
1天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机算法
【5月更文挑战第6天】 在数据科学和人工智能领域,支持向量机(SVM)是一种强大的监督学习模型,它凭借其出色的分类能力在众多机器学习任务中占据重要地位。本文旨在深入剖析支持向量机的工作原理,探讨其在高维数据处理中的优势以及面对大规模数据集时的应对策略。通过对核技巧、软间隔以及优化问题的讨论,我们将揭示SVM如何优雅地处理线性不可分问题,并保持模型的泛化性能。
|
5天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
6天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
|
6天前
|
机器学习/深度学习 数据可视化 算法
【Python机器学习专栏】t-SNE算法在数据可视化中的应用
【4月更文挑战第30天】t-SNE算法是用于高维数据可视化的非线性降维技术,通过最小化Kullback-Leibler散度在低维空间保持数据点间关系。其特点包括:高维到二维/三维映射、保留局部结构、无需预定义簇数量,但计算成本高。Python中可使用`scikit-learn`的`TSNE`类实现,结合`matplotlib`进行可视化。尽管计算昂贵,t-SNE在揭示复杂数据集结构上极具价值。
|
6天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
6天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。
|
6天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】K-means 聚类算法在 Python 中的实现
【4月更文挑战第30天】K-means 是一种常见的聚类算法,用于将数据集划分为 K 个簇。其基本流程包括初始化簇中心、分配数据点、更新簇中心并重复此过程直到收敛。在 Python 中实现 K-means 包括数据准备、定义距离函数、初始化、迭代和输出结果。虽然算法简单高效,但它需要预先设定 K 值,且对初始点选择敏感,可能陷入局部最优。广泛应用在市场分析、图像分割等场景。理解原理与实现对应用聚类分析至关重要。
|
7天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
7天前
|
机器学习/深度学习 算法 Python
【Python 机器学习专栏】随机森林算法的性能与调优
【4月更文挑战第30天】随机森林是一种集成学习方法,通过构建多棵决策树并投票或平均预测结果,具有高准确性、抗过拟合、处理高维数据的能力。关键性能因素包括树的数量、深度、特征选择和样本大小。调优方法包括调整树的数量、深度,选择关键特征和参数优化。Python 示例展示了使用 GridSearchCV 进行调优。随机森林广泛应用于分类、回归和特征选择问题,是机器学习中的重要工具。