0


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

在这里插入图片描述

🤵‍♂️ 个人主页: @计算机魔术师
👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。

该文章收录专栏
✨— 机器学习 —✨

【机器学习】logistics分类

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

  1. l
  2. o
  3. g
  4. i
  5. s
  6. t
  7. i
  8. c
  9. logistic
  10. logistic(数理逻辑)回归算法(预测**离散值**
  11. y
  12. y
  13. y 非常常用的学习算法

假设有如下的八个点(

  1. y
  2. =
  3. 1
  4. 0
  5. )
  6. y=1 0)
  7. y=10),我们需要建立一个模型得到准确的判断,那么应该如何实现呢
  • 我们尝试使用之前文章所学的线性回归 h θ ( x ) = θ T ∗ x h_\theta(x) = \theta^Tx hθ​(x)=θT∗x 来拟合数据( θ \theta θ是参数列向量,注意这里的 x x x是关于 x i x_i xi​的向量,其中 x 0 = 1 , 即 x 0 ∗ θ 0 = 常数项 x_0=1, 即 x_0\theta_0 = 常数项 x0​=1,即x0​∗θ0​=常数项),并在0~1设置一个阈值 y = 0.5 所对应的 x 0.5 值 y = 0.5 所对应的 x_{0.5} 值 y=0.5所对应的x0.5​值, x x x 大于 x 0.5 x_{0.5} x0.5​ 的点则为1,否则为0,预测会得到如下粉丝直线

上一篇文章: 【机器学习】浅谈正规方程法&梯度下降
在这里插入图片描述
假设我们再增加一个数据点,如下图右方,按照如上算法对应的拟合直线

  1. h
  2. θ
  3. (
  4. x
  5. )
  6. h_\theta(x)
  7. hθ​(x)则如下**蓝色直线**,此时得到错误的预测 (对于结果为
  1. 1

也小于

  1. x
  2. 0.5
  3. x_{0.5}
  4. x0.5​)

在这里插入图片描述
所以综上所诉,用线性回归来用于分类问题通常不是一个好主意,并且线性回归的值会远远偏离0或1,这显示不太合理。

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

二、二元分类

2.1假设函数

我们希望能把

  1. h
  2. θ
  3. (
  4. x
  5. )
  6. =
  7. θ
  8. T
  9. x
  10. h_\theta(x) = \theta^T*x
  11. hθ​(x)=θTx 结果在 0 ~ 1 之间,

这里引入

  1. s
  2. i
  3. g
  4. m
  5. o
  6. i
  7. d
  8. sigmoid
  9. sigmoid 函数 (也叫做
  10. l
  11. o
  12. g
  13. i
  14. s
  15. t
  16. i
  17. c
  18. logistic
  19. logistic 函数) ——
  20. g
  21. (
  22. x
  23. )
  24. =
  25. 1
  26. 1
  27. +
  28. e
  29. x
  30. g(x) = \frac{1}{1 + e ^{-x}}
  31. g(x)=1+ex1
  32. s
  33. i
  34. g
  35. m
  36. o
  37. i
  38. d
  39. sigmoid
  40. sigmoid函数图像是一个区间在 0 ~ 1S型函数,
  41. x
  42. x \Rightarrow\infty
  43. x⇒∞则
  44. y
  45. 1
  46. y\Rightarrow1
  47. y1
  48. x
  49. x \Rightarrow-\infty
  50. x⇒−∞则
  51. y
  52. 0
  53. y\Rightarrow0
  54. y0

在这里插入图片描述

  • 令 h θ ( x ) = g ( θ T ∗ x ) = 1 1 + e − θ T ∗ x h_\theta(x) =g( \theta^Tx) = \frac{1}{1 + e ^{- \theta^Tx}} hθ​(x)=g(θT∗x)=1+e−θT∗x1​那么我们的函数结果结果就会在0 ~ 1 之间

那现在我们所要做的便是需要求得参数

  1. θ
  2. \theta
  3. θ 拟合模型

如下图,假设肿瘤案例,如下

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

在这里插入图片描述
那么在

  1. y
  2. y
  3. y只有 0 1 的情况下,有如下公式 (二者为对立事件,符合全概率公式)
    1. P y = 1 x ; θ + P y = 0 x ; θ = 1 Py=1|x;\theta)+ Py=0 |x;\theta)= 1 Py=1x;θ)+Py=0x;θ)=1
    1. 1 P y = 0 x ; θ = P y = 1 x ; θ 1 - Py=0 |x;\theta)= Py=1|x;\theta 1Py=0x;θ)=Py=1x;θ)

概率结果只在0 ~ 1中

  • 假设如下

那么此时我们可以设置阈值

  1. g
  2. (
  3. z
  4. )
  5. g(z)
  6. g(z) = 0.5,大于 0.5 的点则为1,否则为0

即在

  1. z
  2. <
  3. 0
  4. z<0
  5. z<0(即
  6. θ
  7. T
  8. x
  9. \theta^T*x
  10. θTx)中
  11. g
  12. (
  13. z
  14. )
  15. g(z)
  16. g(z)< 0.5, 此时预测为0,在
  17. z
  18. >
  19. 0
  20. z>0
  21. z>0(即
  22. θ
  23. T
  24. x
  25. \theta^T*x
  26. θTx 时,
  27. g
  28. (
  29. z
  30. )
  31. >
  32. 0
  33. g(z)>0
  34. g(z)>0 预测值为1

在这里插入图片描述

2.1.1 案例一

在这里插入图片描述
我们假设他的各个

  1. θ
  2. \theta
  3. θ 参数向量参数为-311

此时如果满足

  1. g
  2. (
  3. z
  4. )
  5. g(z)
  6. g(z)> 0.5 , 也就是横坐标
  7. z
  8. z
  9. z(**这里的
  10. z
  11. z
  12. z 是对应线性方程**) 大于零,预测 y 1 条件则如下:

在这里插入图片描述
化简为条件

  1. x
  2. 1
  3. +
  4. x
  5. 2
  6. >
  7. =
  8. 3
  9. x_1 + x_2 >=3
  10. x1​+x2​>=3 , 这个条件所对应的几何意义:

即一条切割线的右侧,此时

  1. s
  2. i
  3. g
  4. o
  5. m
  6. i
  7. d
  8. 函数的
  9. z
  10. 坐标
  11. >
  12. 0
  13. sigomid函数的z坐标>0
  14. sigomid函数的z坐标>0 , y 大于0.5

在这里插入图片描述

此时该切割线分割除了两个区域,分别是

  1. y
  2. =
  3. 0
  4. y
  5. =
  6. 1
  7. y=0 y=1
  8. y=0y=1 情况,我们把这条边界,称为**决策边界**,这些都是关于假设函数的属性,决定于其参数,与数据集属性无关

在这里插入图片描述

2.1.2例子二

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

在这里插入图片描述

那我们的预测y=1时,

  1. s
  2. i
  3. g
  4. o
  5. m
  6. i
  7. d
  8. sigomid
  9. sigomid横坐标
  10. z
  11. z
  12. z满足条件为

在这里插入图片描述
可以得到其决策边界

  1. decision boundory

——

  1. x
  2. 1
  3. 2
  4. +
  5. x
  6. 2
  7. 2
  8. =
  9. 1
  10. x_1^2+x_2^2 =1
  11. x12​+x22​=1

在这里插入图片描述

  • 强调: 决策边界并不是数据集的属性,而是假设函数以及其参数的属性,数据集则是用于拟合参数 θ \theta θ 不同的高阶多项式 会得到不一样的决策边界 如:在这里插入图片描述

2.2 拟合logistic回归参数

  1. θ
  2. i
  3. \theta_i
  4. θi
  • 代价函数

我们给定如数据集
在这里插入图片描述

  1. m
  2. m
  3. m个样本,同样将每一个
  4. x
  5. x
  6. x
  7. n
  8. +
  9. 1
  10. n+1
  11. n+1维向量表示(向量每个元素即特征,其中
  12. x
  13. 0
  14. 1
  15. x01
  16. x01 ) 分类标签
  17. y
  18. y
  19. y只有 01结果
  • 那么我们如何选择参数 θ \theta θ呢?

在往篇文章中我们线性回归的均方差代价函数可以变化如下:
在这里插入图片描述
简化函数,我们省略上标
在这里插入图片描述
因为

  1. s
  2. i
  3. g
  4. o
  5. m
  6. i
  7. d
  8. sigomid
  9. sigomid 是复杂的非线性函数,如果直接以函数作为**代价函数**,那么所求模型对应**代价函数**为非凹函数,会有非常多的**局部最优**,如下图

在这里插入图片描述
我们不能保证其可以下降到函数最优

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

三、logistic代价函数

在这里插入图片描述

3.1 当

  1. y
  2. =
  3. 1
  4. y=1
  5. y=1代价函数图像

对该代价函数,我们可以画出当

  1. y
  2. =
  3. 1
  4. y=1
  5. y=1时的图像。(由于
  6. s
  7. i
  8. g
  9. o
  10. m
  11. i
  12. d
  13. sigomid
  14. sigomid**函数值域**在0~1,对应代价函数横坐标为0 ~1)

在这里插入图片描述
为了方便理解我们可以画出,对数函数的图像

  1. l
  2. o
  3. g
  4. (
  5. z
  6. )
  7. log(z)
  8. log(z) (
  9. z
  10. =
  11. h
  12. θ
  13. (
  14. x
  15. )
  16. )
  17. z = h_\theta(x))
  18. z=hθ​(x)) )

在这里插入图片描述

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

显然当

  1. y
  2. =
  3. 1
  4. y=1
  5. y=1 这个代价函数满足我们的要求

在这里插入图片描述

3.2 当

  1. y
  2. =
  3. 0
  4. y=0
  5. y=0代价函数图像

对应

  1. y
  2. =
  3. 0
  4. y=0
  5. y=0的情况下:

在这里插入图片描述

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

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

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

  1. l
  2. o
  3. g
  4. i
  5. s
  6. t
  7. i
  8. c
  9. logistic
  10. logistic 算法

四、 代价函数与梯度下降

为了避免让代价函数分为

  1. y
  2. =
  3. 1
  4. ,
  5. y
  6. =
  7. 0
  8. y = 1,y= 0
  9. y=1,y=0两种情况 ,我们要找一个方法来把这两个式子合并成一个等式,**以便更简单写出代价函数,并推导出梯度下降。**

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

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

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

在这里插入图片描述
同样,我们为了求最小化代价函数以拟合参数

  1. θ
  2. \theta
  3. θ,使用**梯度下降**

在这里插入图片描述

  • 同样,将微积分求其偏导在这里插入图片描述
  • 并用此公式更新每个参数 (注意是:同步更新)在这里插入图片描述

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

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

那么**线性回归和

  1. logistic

回归是同一种算法吗?**

线性回归和logistic在梯度下降更新的函数区别在于:

  1. h
  2. θ
  3. (
  4. x
  5. i
  6. )
  7. h_\theta(x^i)
  8. hθ​(xi)
  1. 对于线性回归 : h θ ( x ) = θ T ∗ x h_\theta(x) = \theta^T*x hθ​(x)=θT∗x
  2. 对于logistic回归: h θ ( x ) = 1 1 + e − θ T ∗ x h_\theta(x) = \frac{1}{1 + e ^{- \theta^T*x}} hθ​(x)=1+e−θT∗x1​

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

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

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

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

  1. l
  2. o
  3. g
  4. i
  5. s
  6. t
  7. i
  8. c
  9. logistic
  10. logistic 回归算法同样适用。

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

五、高级优化算法

高级优化算法,与梯度下降相比能够大大提高

  1. l
  2. o
  3. g
  4. i
  5. s
  6. t
  7. i
  8. c
  9. logistic
  10. logistic 回归速度,也使得算法更加适合大型数据集机器学习问题。

除了使用梯度下降算法,还有诸多如下算法

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

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

缺点

  • 太过于复杂了

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

  1. numpy

有如下例子(求两个参数)
在这里插入图片描述
我们可以通过梯度下降来求得参数,如下求偏导:
在这里插入图片描述

  1. octave

代码实现如下;
在这里插入图片描述
这是一个简单的二次代价函数,现在我们如何将其用在logistic回归算法中呢?

在logistic回归中,我们使用如下的

  1. θ
  2. \theta
  3. θ参数向量 (使用参数向量化)


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

六、多元分类:一对多

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

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

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

在这里插入图片描述
并拟合一个分类器

  1. h
  2. θ
  3. 1
  4. (
  5. x
  6. )
  7. h_\theta^1(x)
  8. hθ1​(x),接下来我们来实现一个**标准的逻辑回归分类器**,通过训练,我们可以得到一个决策边界

在这里插入图片描述

  • 同理,将其他两类样本如上创建数据集,以及对应的拟合分类器,进行一个标准的逻辑回归分类器,得到对应边界在这里插入图片描述 总而言之,我们拟合出了三个分类器
  1. h
  2. θ
  3. i
  4. (
  5. x
  6. )
  7. =
  8. P
  9. (
  10. y
  11. =
  12. i
  13. x
  14. ;
  15. θ
  16. )
  17. (
  18. i
  19. =
  20. 1
  21. ,
  22. 2
  23. ,
  24. 3
  25. )
  26. h_\theta^i(x) = P(y=i|x;\theta) (i=1,2,3)
  27. hθi​(x)=P(y=ix;θ)(i=1,2,3)

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

我们训练了逻辑回归分类器

  1. h
  2. θ
  3. i
  4. (
  5. x
  6. )
  7. =
  8. P
  9. (
  10. y
  11. =
  12. i
  13. x
  14. ;
  15. θ
  16. )
  17. (
  18. i
  19. =
  20. 1
  21. ,
  22. 2
  23. ,
  24. 3
  25. )
  26. h_\theta^i(x) = P(y=i|x;\theta) (i=1,2,3)
  27. hθi​(x)=P(y=ix;θ)(i=1,2,3),用于预测
  28. y
  29. =
  30. i
  31. y= i
  32. y=i 的概率,为了做出预测,我们向分类器输入一个
  33. x
  34. x
  35. x,期望获得预测,我们需要在这三个回归分类器中运行输入
  36. x
  37. x
  38. x,选出结果中概率最大的一个(最可信)的那个分类器,就是我们要的类别。

本文转载自: https://blog.csdn.net/weixin_66526635/article/details/125301349
版权归原作者 计算机魔术师 所有, 如有侵权,请联系我们删除。

“【机器学习】Logistic 分类回归算法 (二元分类 &amp; 多元分类)”的评论:

还没有评论