机器学习(二):回归类问题

目录

1.线性回归

1.1线性回归

1.1.1 一元线性回归

1.1.2 多元线性回归

1.2损失函数

1.2.1 梯度下降(GD)

 

1.3正则

1.3.1 过拟合(overfitting)与欠拟合(underfitting)

1.3.2 正则化

2. 逻辑回归

2.1 sigmoid()函数

2.2 逻辑回归是怎样解决分类问题的

2.3 损失函数 

2.4 二分类与多分类

优缺点:


 

回归类算法大体分为两种:线性回归(linear regression),逻辑回归/对数几率回归(logistic regression)

\huge x \overset{f()}{\rightarrow}y{\color{Magenta} {\color{Red} }}   机器学习就像是一种映射,将 x (数据)通过某种方式 f() 映射成 y 的形式。而这某种方式,可以抽象成机器学习当中的算法/模型

1.线性回归

1.1线性回归

线性回归是一种有监督的学习,假定输入输出是一种线性关系,预测结果为连续值

1.1.1 一元线性回归

\large h_{\theta }(x)= \theta ^{T}X

只考虑一个变量x的话,拟合的曲线是一条线

我们的最终目标是选择这样一条连续曲线,来拟合大部分数据

其中\large \theta是参数,需要调整,x是样本,\large h_{\theta }(x)是预测值。

超参数\large \theta影响最终的预测结果,思考一下,我们应该怎样选择最好的超参数,来使模型达到更好的效果

 

1.1.2 多元线性回归

如果变量不只是一个,又会发生什么呢?拟合数据的曲线还是不是一条直线,答案是否定的。两个变量的话,数据分布在一个立体空间,那么拟合大部分数据的就不再是一条线,而是一个平面。

\large h_{\theta }(x) = \theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2},即

h_{\theta }(x) =\sum_{i=0}^{n}\theta _{i}x _{i} = \theta ^{T}X

1.2损失函数

对于预测值,我们采用线性回归的假设函数来对训练数据进行学习,但是,我们怎么去评判这个假设函数的好坏,这个假设函数是否就是我们需要的函数,假设函数里面的参数\theta是如何来进行确定的。

我们假设函数预测出来的数据和真实值之间的差异来对函数进行评判。差异越大,表示模型效果越差;差异越小,表示模型效果越好。

损失函数:

 

其中,h_{\theta }-y表示的是预测值与真实值之间的差异,平方是因为真实值与预测值之间的差异可能为负值,所以用平方向表示非负,1/m是因为对每一个样本求差异,所以除以样本总量。

我们总是希望损失函数越小越好,损失函数越小,说明拟合程度越高。可是,怎样使这个损失函数最小呢?损失函数的大小跟\theta有关,通过调整\theta来使损失函数最小。

1.2.1 梯度下降(GD)

根据数学公式,我们可以知道,线性回归是一个凸函数,对于凸函数我们怎样来求\theta,使得损失函数最小?

把h这条曲线往箭头方向移动,那么损失函数随着\theta的变化如右图所示。

梯度下降法:(初始位置,步长)

(1)确定初始位置

(2)确定步长,沿负梯度方向进行更新参数\theta 

(3)直到最低点

注意:(1)沿负梯度下降的时候,拐点位置下降速度最快,在快到达最低点附近,由于坡度变缓,更新变慢

           (2)选择步长\alpha时,选的太大,那么步子漫的太大,有可能导致到达不了最低点,在最低点附近来回晃荡,不收敛;步子太小,训                     练时间就会很长,训练很慢。

            (3)\alpha是一个超参数,他的选取通常通过实验来确定。

对于二元变量,梯度下降方法类似,只是\theta更新的参数为两个,沿等高线向下漫步。

 

1.3正则

1.3.1 过拟合(overfitting)与欠拟合(underfitting)

欠拟合:函数在拟合原始数据的时候,如果大部分数据并没有落在曲线附近那么就会出现欠拟合现象;

过拟合:如果几乎所有数据都落在曲线上,但是来一批新的数据进行测试,发现效果很差,就是过拟合。(泛化能力差)

函数越简单,说明函数的学习能力很差,就不能很好的拟合数据;

函数越复杂,说明函数的学习能力很强,但是并不意味着泛化能力就好。

欠拟合的话,就模型复杂点,但是模型复杂了,就有过拟合了,怎样解决这个过拟合问题呢?咱们得给函数一些惩罚,不能让函数学习能力太好,所以就有了正则化。

1.3.2 正则化

控制参数,防止过拟合。

m代表样本的数目,n 代表\theta的数量,\lambda是一个超参数,一般通过实验的方法来调节

2. 逻辑回归

用解决回归问题的方式,线性回归加上阈值能否解决分类问题?

线性回归是用来解决回归问题的,根据数据的分布,回归曲线也会跟着变化,如果解决分类问题的话,那么线性回归很容易被一些异常值带偏,阈值就很难划定并不是很好。

所以,线性回归是不符合的。

这里,我们用逻辑回归来解决分类问题。

逻辑回归和线性回归是什么区别呢?

线性回归是预测真实值的过程,逻辑回归是预测概率的问题,所以可以用来逻辑回归来解决分类问题。

2.1 sigmoid()函数

sigmoid()这个函数还是比较好的,为什么呢?

sigmoid(z) =g(z)=\frac{1}{1-e^{-z}}

 

(1)sigmoid函数他的函数曲线特别棒,对于大于0的数,概率划分到【1/2 , 1】之间;小于0的数,概率划分到【0,1/2】之间,因为这个特性,回归问题就可以解决分类问题了。

(2)sigmoid()函数,他的导函数非常棒,g(z){}'=g(z)(1-g(z)),基于此,优化的时候非常方便

2.2 逻辑回归是怎样解决分类问题的

对于二分类问题:

我们把回归线作为分类的一个判定边界,回归线上方的大于0,下方的小于0,然后和sigmoid()函数配合,就能求出一个概率,越接近于1,那么正类的概率越大;越接近于0,负类概率越大

 

 

 

2.3 损失函数 

逻辑回归函数能否用线性回归函数的损失函数来对模型进行进行评估呢?

线性回归函数的损失函数,计算的是真实值与预测值之间的差异来进行评估的,按道理来说是能够进行损失评估的。但是,我们应该充分考虑函数的一些特性,因为这个用逻辑回归来做平方损失的话,这个损失函数是非凸的,这就说明有很多个极小值点,就不好用梯度下降法来进行参数调整了。

那怎么办?

这里,我们用对数损失(二元交叉熵损失)。

损失函数:

 

y^{\left ( i \right )}是指标函数,h_{\theta }(x^{\left ( i \right )})是概率,为什么用对数函数?

因为如果直接用h_{\theta }(x^{\left ( \right )})是【0,1】之间的数,直接相乘的话,因为样本量很大,小数超过计算机的精度,就会造成溢出,所以用对数。前面加负号是因为保证非负,符合损失函数的定义,损失函数是越小越好。

然后,梯度下降求调整参数大小。

 

2.4 二分类与多分类

逻辑回归不仅解决二分类的问题,同样也能解决多分类的问题。

  • one vs one
  • one vs rest

one vs one

哪个概率大选哪一个

one vs rest

哪个概率大,选哪一个

优缺点:

优点:

计算速度快

遇到回归问题,先用模型跑一下,看一下效果2333

缺点:

只能够处理线性问题,无论是线性回归还是逻辑回归确定决策面,都是线性的,并不能够解决非线性问题

异常值能够拉偏拟合线或者决策面,需要提前对异常值进行处理

对于复杂的问题,可以用回归来解决,但是需要多项式,很耗时间

参考:西瓜书 七月在线 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值