一、线性回归和逻辑回归的区别
回归算法是一种通过最小化预测值与实际结果值之间的差距,而得到输入特征之间的最佳组合方式的一类算法。对于连续值预测有线性回归等,而对于离散值/类别预测,我们也可以把逻辑回归等也视作回归算法的一种。
线性回归与逻辑回归是机器学习中比较基础又很常用的内容。线性回归主要用来解决连续值预测的问题,逻辑回归用来解决分类的问题,输出的属于某个类别的概率,工业界经常会用逻辑回归来做排序。
线性回归
根据几组已知数据和拟合函数训练其中未知参数,使得拟合损失值达到最小。然后用所得的拟合函数进行预测。
逻辑回归
和拟合函数训练其中未知参数使得对数似然函数最大。然后用所得的拟合函数进行二分类。
逻辑回归 | 线性回归 | |
目的 | 分类 | 预测 |
函数 | 预测函数 | 拟合函数 |
参数计算方式 | 最大似然估计 | 最小二乘法 |
{0,1} |
二、逻辑回归的原理
Logistic Regression和Linear Regression的原理是相似的,可以简单描述为以下过程:
(1)找一个合适的预测函数(Andrew Ng的公开课中称为hypothesis),一般表示为h函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果。这个过程时非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的“大概”形式,比如是线性函数还是非线性函数。
(2)构造一个Cost函数(损失函数),该函数表示预测的输出(h)与训练数据类别(y)之间的偏差,可以是二者之间的差(h-y)或者是其他的形式。综合考虑所有训练数据的“损失”,将Cost求和或者求平均,记为J(θ)函数,表示所有训练数据预测值与实际类别的偏差。
(3)显然,J(θ)函数的值越小表示预测函数越准确(即h函数越准确),所以这一步需要做的是找到J(θ)函数的最小值。找函数的最小值有不同的方法,Logistic Regression实现时有的是梯度下降法(Gradient Descent)。
三、逻辑回归损失函数推导及优化
假设函数:
hθ(x)=11+e−θTx
用于二分类
总结:如果我们取对数和负值,可以代表对应的成本函数。和似然函数相反的方向。(log只是利于计算)。
统一公式
我们找到联合概率公式:
最大似然
最大似然就是最大化的所有样本的概率公式:
解释:
1. 参数第j个分量的更新,和每个样例都有关系。
2. 如果m取全部,则是用所有数据来更新分量j
3. m=1则是用一个实例来更新参数,也就是随机梯度下降。
4. 更新的量,与速率、当前实例的j分量、误差值(假设-当前)共同决定。
总结
一般的学习模型的三个重要步骤:
1. 寻找h函数(即预测函数);比如逻辑回归的 f(w,b);线性之后多了一个激活。
2. 构造J函数(损失函数);不同的损失函数,代表了不同的优化方向。比如:逻辑回归如果用最小方差来作为评价函数,则容易导致局部最优。
3. 想办法使得J函数最小并求得回归参数(θ);各种数值优化方法,随机梯度下降;牛顿法等。
简称:找目标、定方向、执行解决
四、正则化与模型评估指标
1、正则化
2、模型评估指标
训练集误差小(1%),验证集大(15%),为高方差,可能过拟合训练集了;
训练集误差大(15%),验证集大(16%),错误率几乎为0,高偏差,可能欠拟合,识别cat不准确;
训练集误差小(0.5%),验证集小(1%),低方差,低偏差;
训练集误差小(15%),验证集小(30%),高方差,高偏差;过拟合部分数据;
五、逻辑回归的优缺点
Logistic 回归是一种被人们广泛使用的算法,因为它非常高效,不需要太大的计算量,又通俗易懂,不需要缩放输入特征,不需要任何调整,且很容易调整,并且输出校准好的预测概率。
与线性回归一样,当你去掉与输出变量无关的属性以及相似度高的属性时,logistic 回归效果确实会更好。因此特征处理在 Logistic 和线性回归的性能方面起着重要的作用。
Logistic 回归的另一个优点是它非常容易实现,且训练起来很高效。在研究中,我通常以 Logistic 回归模型作为基准,再尝试使用更复杂的算法。
由于其简单且可快速实现的原因,Logistic 回归也是一个很好的基准,你可以用它来衡量其他更复杂的算法的性能。
它的一个缺点就是我们不能用 logistic 回归来解决非线性问题,因为它的决策面是线性的。我们来看看下面的例子,两个类各有俩实例。
显然,我们不可能在不出错的情况下划出一条直线来区分这两个类。使用简单的决策树是个更好的选择。
Logistic 回归并非最强大的算法之一,它可以很容易地被更为复杂的算法所超越。另一个缺点是它高度依赖正确的数据表示。
这意味着逻辑回归在你已经确定了所有重要的自变量之前还不会成为一个有用的工具。由于其结果是离散的,Logistic 回归只能预测分类结果。它同时也以其容易过拟合而闻名。
六、样本不均衡问题解决办法
1. 产生新数据型:过采样小样本(SMOTE),欠采样大样本。
过采样是通过增加样本中小类样本的数据量来实现样本均衡。其中较为简单的方式是直接复制小类样本,形成数量上的均衡。这种方法实现简单,但会由于数据较为单一而容易造成过拟合。 SMOTE过采样算法: 针对少数类样本的xi,求出其k近邻。随机选取k紧邻中一个样本记为xn。生成一个0到1之间的随机数r,然后根据Xnew = xi + r * (xn - xi)生成新数据。也可通过经过改进的抽样的方法,在少数类中加入随机噪声等生成数据。
欠采样大样本是通过减少多数类样本的样本数量来实现样本均衡。其中比较简单直接的方法就是随机去掉一些数据来减少多数类样本的规模,但这种方法可能会丢失一些重要的信息。还有一种方法就是,假设少数类样本数量为N,那就将多数类样本分为N个簇,取每个簇的中心点作为多数类的新样本,再加上少数类的所有样本进行训练。这样就可以保证了多数类样本在特征空间的分布特性。
2. 对原数据的权值进行改变
通过改变多数类样本和少数类样本数据在训练时的权重来解决样本不均衡的问题,是指在训练分类器时,为少数类样本赋予更大的权值,为多数类样本赋予较小的权值。例如scikit-learn中的SVM算法,也称作penalized-SVM,可以手动设置权重。若选择balanced,则算法会设定样本权重与其对应的样本数量成反比。
3. 通过组合集成方法解决
通过训练多个模型的方式解决数据不均衡的问题,是指将多数类数据随机分成少数类数据的量N份,每一份与全部的少数类数据一起训练成为一个分类器,这样反复训练会生成很多的分类器。最后再用组合的方式(bagging或者boosting)对分类器进行组合,得到更好的预测效果。简单来说若是分类问题可采用投票法,预测问题可以采用平均值。这个解决方式需要很强的计算能力以及时间,但效果较好,相当于结合了组合分类器的优势。
4. 通过特征选择
在样本数据较为不均衡,某一类别数据较少的情况下,通常会出现特征分布很不均衡的情况。例如文本分类中,有大量的特征可以选择。因此我们可以选择具有显著区分能力的特征进行训练,也能在一定程度上提高模型的泛化效果。