什么是回归算法
• 回归算法是一种有监督算法,即需要给样本的特征打上标签。
• 回归算法是一种比较常用的机器学习算法,用来建立“解释”变量(自变量X)和观测值(因变量Y)之间的关系;从机器学习的角度来讲,用于构建一个算法模型(函数)来做属性/特征(X)与标签(Y)之间的映射关系,在算法的学习过程中,试图寻找一个函数 使得参数之间的关系拟合性最好。
• 回归算法中算法(函数)的最终结果是一个连续的数据值,输入值(属性值)是一个d维度的属性/数值向量,例如:()其中x是所有的属性值,y是标签
1. 线性回归
• 认为数据中存在线性关系,也就是特征属性X和目标属性Y之间的关系是满足线性关系。(线性关系用的函数表示就是自变量的次方数为1)
• 在线性回归算法中,找出的模型对象是期望所有训练数据比较均匀的分布在直线或者平面的两侧。
• 在线性回归中,最优模型也就是所有样本(训练数据)离模型的直线或者平面距离最小。
先举一个简单的例子:房租的预测。
房屋面积 | 房间数量 | 租赁价格 |
10 | 1 | 0.8 |
20 | 1 | 1.8 |
30 | 1 | 2.2 |
30 | 2 | 2.5 |
70 | 3 | 5.5 |
70 | 2 | 5.2 |
..... | ...... | ........ |
如上图,请问,如果现在有一个房屋面积为55平,房间数量为1,请问最终的租赁价格是多少比较合适?
上述展示的样本中(一行就是一个样本),每两个样本都能解出一个固定的线性关系函数(即二元一次函数,房屋面积和房屋数量是自变量,租赁价格是因变量,只要已知两个点即可求出函数),这样有这么多样本,会出现n个函数关系,显然这n个函数都只是符合特定的情况,没有普适性,无法较准确地解决我们上面提出的问题。所以我们要找到一个具有普遍适用性的函数关系,来预测房租价格。即该函数能最接近上述所有样本的情况,我们称为拟合函数。
所以,上述样本可以用线性回归的拟合函数来表示:,其中自变量
分别表示房屋面积和房屋数量,
的值则表示租赁价格。如下图所示,平面即为拟合函数图像,而红色的点就是各个不同的样本在坐标轴上的分布。
注意,我们的目的是求出上式中的所有的变量的系数,即所有的 值,这样即可求出拟合函数,然后代入条件:房屋面积为55平,房间数量为1,即可预测出较为科学的房租价格。
由此,线性回归的拟合函数一般形式即为:
最终要求是计算出 的值,并选择最优的
值构成算法公式。
此时的 是拟合函数,即最接近实际情况,但不是完全精准符合,所以会存在一定的误差,所以实际值应该等于预测值+误差值,我们用如下公式表示:
其中,
为实际值,
为预测值,
为误差值,这里的 i 表示第 i 个样本。
这里介绍一下似然函数(* 号分割的内容),与求解线性回归模型没有太大关系,可选择性跳过。
****************************************************************************************************************************
• 误差 是独立同分布的,服从均值为0,方差为某定值
的高斯分布,即正态分布。(随机变量的取值和取该值的概率)
• 原因:中心极限定理
• 实际问题中,很多随机现象可以看做众多因素的独立影响的综合反应,往往服从正态分布
这里简单说一下正态分布,下图就是正态分布的概率密度函数图像,以蓝色图像解释,即随机变量 x 落在(0,1)之间的概率是图像上(0,1)之间的曲边梯形的面积。对于连续型随机变量而言,讨论 x 在某个点处的概率是没有意义的,一般都是讨论 x 在某个区间内的概率,图中的 y 轴表示 x 概率分布的导数值。
正态分布的概率密度函数为:(x 表示随机变量的取值,f(x) 表示 x 概率分布的导数值)
对概率密度函数进行积分,即得到连续型随机变量的概率分布函数,如下,即表示随机变量 x 落在(a,b)之间的概率:
这里的 f(x) 就是上面的概率密度函数。
上面说到, 误差 是独立同分布的,服从均值为0,方差为某定值
的高斯分布,所以误差
符合高斯分布的概率密度函数,代入函数公式即可得到:
其中,
为误差值的方差。
所以我们得到线性回归的似然函数:
**************************************************************************************************************************
上面说到,误差 是实际样本的标签值和预测值之间的差值,也就是说我们线性回归模型最优的时候是所有样本的预测值和实际值之间的差值最小化,由于预测值和实际值之间的差值存在正负性,所以要求平方后的值最小化。也就是可以得到如下的一个目标函数:
其中
表示预测值,
表示实际值。该公式就是最小二乘的体现。
可以表示为:
其中 X 和 Y 分别是预测值和实际值的矩阵表示。
接下来求使 值最小的时候的
,这里一般使用梯度下降法。然后代入上面一来是提到的线性回归的拟合函数,即可求出拟合函数,即模型。注意,上式中
是自变量,
是因变量。
线性回归的过拟合和正则项:
过拟合指的是,训练出来的模型对于训练集样本的预测结果准确率非常高,但是对于测试集样本的预测结果准确率却较低。
即模型过度拟合训练集数据的特征,而与测试集样本存在较大误差。
• 目标函数:
• 为了防止数据过拟合,也就是的θ值在样本空间中不能过大,可以在目标函数之上增加一个平方和损失:
• 正则项(norm)/惩罚项:
; 这里这个正则项叫做L2-norm
L2-norm:
L1-norm:
• L2-norm中,由于对于各个维度的参数缩放是在一个圆内缩放的,不可能导致有维度参数变为0的情况,那么也就不会产生稀疏解;实际应用中,数据的维度中是存在噪音和冗余的,稀疏的解可以找到有用的维度并且减少冗余,提高后续算法预测的准确性和鲁棒性(减少了overfitting)(L1-norm可以达到最终解的稀疏性的要求)
2. 逻辑回归
逻辑回归是解决二分类问题的机器学习算法,注意,该算法虽然名为回归,但是属于分类算法,实际也是解决分类问题的。二分类指得是最终目的是只分成两种类别,例如,输入一张图片,判断这张图片上的动物是猫还是非猫,这里只有两种类别:1.是猫 2.不是猫。如果要判断这张图片上的动物是猫,还是狗还是其他什么动物,逻辑回归就不适合了。当然可以通过重复使用逻辑回归达到多分类的效果。
为什么将线性回归和逻辑回归放在一起?
因为通俗来讲,线性回归 + sigmoid函数 = 逻辑回归。
• Logistic/sigmoid函数:
其中,
为线性回归的拟合函数,sigmoid 函数值域为(0,1)
图像如下:
sigmoid函数即为逻辑回归的拟合函数,它表示的是一个概率,即样本分类到某个类别的概率,所以函数值域为(0,1)。该函数的作用是:输入一个样本,通过逻辑回归的拟合函数计算出一个概率,表示该样本属于一个类别的概率,而属于另一个类别的概率用 1 减去当前概率即可算出,因为总共就两个类别。所以计算出 ' 样本属于一个类别的概率 ' 即可知道 ' 该样本属于两一个类别的概率 ' ,所以 值只有一种, 而并不是两种类别每种都对应一组
。
至于为什么逻辑回归选择sigmoid函数作为拟合函数,是由:二分类属于伯努利分布 —— 伯努利分布属于指数分布族 —— 利用伯努利概率密度函数和指数分布族公式比对,由此推导出来的,具体可见:https://blog.csdn.net/u012421852/article/details/79614417 和 https://blog.csdn.net/weixin_42137700/article/details/88368723
Logistic回归的似然函数:
函数的值有特殊的含义,它表示
的结果取 1 的概率 (假设两个类别分别用1和0代表,也可以用其他数值代表)。所以对于输入 x 分类结果为类别1和类别0的概率为:
则用一个公式表示,即为:
由此得到逻辑回归的似然函数:
这里的 i 表示第 i 个样本。
要使得 最大,才是最优的
解。本来应该有两个不同的
,一个是类别1,一个是类别0。我们要使输入样本后,分类到1或者0的概率最大,且能保证所有样本都达到分类到1或者0的概率最大,而每个样本都可以看做是和其他样本相互独立的随机变量,所以要使得所有样本的概率都最大,即求他们的联合概率,所以将
连乘即可,即得到上述的
。连乘代表所有样本的计算结果都比较准确,整体才比较准确。
对 取对数即可得到对数似然函数:(之所以连乘转换成连加,为了方便计算,如果有100个连乘,计算量太大)
极大似然估计与Logistic回归目标函数:
由于在极大似然估计中,当似然函数最大的时候模型最优;而在机器学习领域中,目标函数最小的时候,模型最优;故可以使用似然函数乘以-1的结果作为目标函数。
上式即为逻辑回归的损失函数,然后使用梯度下降法求得 。
这里有一个逻辑回归总结,供大家参考: