什么是线性回归
线性:两个变量之间的关系是一次函数关系的(如x和y,所有输入的数据和所有输出的结果)——图象是直线,叫做线性。 回归:预测值。输出连续值
对结果进行预测。通过已知的数据得到未知的结果。例如:对房价的预测、判断信用评价、电影票房预估等。
具体的内容
通过模拟这样一条直线,那么当有新的输入数据x进入时,通过这条直线 / 函数(模型),我们就可以得出输出y
线性回归的一般模型:(函数) 就比如y=kx,x就是输入的数据,y是输出的结果,k就是我们要求的参数。
这里的x0,x1,x2。。。。。就是数据不同的特征。 需要求的就是theta的值了。thet就是我们要求的参数,后续也是要不断优化的参数。
参数计算
把一组x,y带入,得到函数的参数。得到预测函数以后,需要对函数的参数进行优化。引入损失函数。 损失函数:是用来估量你模型的预测值 f(x)与真实值 YY 的不一致程度,损失函数越小,模型的效果就越好。 (预测值-真实值)的平方和的平均值
怎么让损失函数越小呢——用梯度下降法
梯度下降法: 一开始损失函数是比较大的,但随着直线的不断变化(模型不断训练),损失函数会越来越小,从而达到极小值点,也就是我们要得到的最终模型。
这种方法我们统称为梯度下降法:随着模型的不断训练,损失函数的梯度越来越平,直至极小值点,点到直线的距离和最小,所以这条直线就会经过所有的点,这就是我们要求的模型(函数)。
以此类推,高维的线性回归模型也是一样的,利用梯度下降法优化模型,寻找极值点(这个点就是我们要求的参数),这就是模型训练的过程。
什么是逻辑回归?(什么问题)
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)
逻辑回归,就是在线性回归的输出y外面在套一个函数,使得最后输出的结果是分类0或者1。因为线性回归输出值y是连续值。
我们对于这个线性回归的输出y再做一次函数转换,变为g(y)。如果我们令g(y)的值在某个实数区间的时候是类别A,在另一个实数区间的时候是类别B,以此类推,就得到了一个分类模型。
具体的内容(怎么解决的?)
建立预测函数(线性回归再套一个函数)
预测函数使其值输出在[ 0 , 1 ] 之间。即预测函数输出的是一个连续值!!比如0.8。然后选择一个阈值,如0.5 ,如果算出来的预测值大于0.5 ,0.8大于0.5,就认为其预测值为1,反之则其预测值为0。
Sigmoid函数(Logistic函数)
损失函数
但是由于逻辑回归不是连续的,自然线性回归损失函数定义的经验就用不上了。不过我们可以用最大似然法来推导出我们的损失函数。
逻辑回归的损失函数优化方法
通过不断优化,寻找最佳参数theta。 对于二元逻辑回归的损失函数极小化,有比较多的方法,最常见的有梯度下降法,坐标轴下降法,牛顿法等。这里推导出梯度下降法中θ每次迭代的公式。由于代数法推导比较的繁琐,我习惯于用矩阵法来做损失函数的优化过程,这里给出矩阵法推导二元逻辑回归梯度的过程。
多元分类
逻辑回归模型可以解决二分类问题,即y = { 0 , 1 } ,能否用来解决多元分类问题呢?答案是肯定的。针对多元分类问题,y = { 0 , 1 , 2 , . . . , n } ,总共有n + 1个类别。其解决思路是,首先将问题转化为二分类问题,即y = 0 {y=0}y=0是一个类别,y = { 1 , 2 , . . . , n } 作为另一个类别,然后计算这两个类别的概率;接着,把y = 1 作为一个类别,把y = { 0 , 2 , . . . , n } 作为另一个类别,再计算这两个类别的概率。由此推广开来,总共需要n + 1个预测函数(分类器)。预测出来的概率最高的那个类别,就是样本所属的类别。
对于有三个类别来说。即对于一个样本,计算属于0类别的概率和不属于0的概率。计算属于1类别的概率和不属于1的概率.计算属于2类别的概率和不属于2的概率。最后哪个概率最高,就是样本所属类别。
逻辑回归有什么用?(什么结果)
寻找危险因素:寻找某一疾病的危险因素等; 预测:根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大; 判别:实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。
优点
1)速度快,适合二分类问题 2)简单易于理解,直接看到各个特征的权重 3)能容易地更新模型吸收新的数据
缺点
对数据和场景的适应能力有局限性,不如决策树算法适应性那么强
模型过拟合
过拟合的原因
-
数据特征过多,而数据量不足。 对于回归类的算法而言,特征越多意味着参数数量越多(theta参数),模型也就越复杂, 而相比之下如果数据量不足会导致过拟合,也就是模型复杂度与数据量不匹配。 -
训练集和测试集的数据特征、分布不够相似,这一点根本原因也是训练集过小,在总体样本中,训练集和测试集只占很小一部分,这就导致很难保证训练集和测试集与总体的数据分布相似,更难保证训练集与测试集分布相似,这样会导致模型充分学习了训练集的特征而过拟合,这样模型的泛化能力肯定是不够的。 -
训练过度。当模型对训练集训练过度,模型充分学习这个数据集上的所有数据特征,这样会对噪声和离群值异常值过分敏感,从而导致过拟合。
解决办法
过拟合是因为模型过于复杂了。
解决办法是减少输入特征的个数,或者获取更多的训练样本。
正则化也是用来解决模型过拟合问题的一个方法。
正则化
正则化的目的就是让数据中的每个特征都对我们的预测值有少量贡献,不会非常偏袒某些权重,每个特征都有一点,这样的模型可以良好的工作。
可以利用正则化来解决特征过多时的过拟合问题。 正则化(特征较多时比较有效)——保留所有特征,但减少θ的大小(L2正则化) ——去掉一些特征(L1正则化)
具体操作:在损失函数后面加入一个正则项函数。
L1正则项
相当于特征筛选
L1正则化使得权重往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。
这也就是L1正则化会产生更稀疏(sparse)的解的原因。此处稀疏性指的是最优值中的一些参数为0。L1正则化的稀疏性质已经被广泛地应用于特征选择机制,从可用的特征子集中选择出有意义的特征。
L2正则项
相当于特征稀疏(所有特征都在,但是每个特征都少点,均匀点,特征衰减) 在梯度下降过程中,权重将逐渐减小,趋向于0但不等于0。这也就是权重衰减的由来。
L2正则化起到使得权重参数 变小的效果,为什么能防止过拟合呢?因为更小的权重参数意味着模型的复杂度更低,对训练数据的拟合刚刚好,不会过分拟合训练数据,从而提高模型的泛化能力。
模型评估
真阳:真正的阳——预测为正样本,实际也为正样本。 假阳:假的阳——预测为正样本,但实际为负样本。
真阴:真正的阴——预测为负样本,实际也为负样本。 假阴:假的阴——预测为负样本,但实际为正样本。
精确率:精确率是针对我们预测结果而言的。预测为正的样本中有多少是真正的正样本(在所有预测为好瓜中,多少比例为真正的好瓜?预测的病人中,有多少是真正的病人)。精确,指的是看我们预测的结果精确不精确。
召回率:召回率是针对我们原来的样本而言的。在所有真正的好瓜中,好多少比例的好瓜被预测正确?(在所有的病人中,有多少比例的病人被我们预测了出来)
ROC曲线+PR曲线
ROC曲线用在多分类中是没有意义的。只有在二分类中Positive和Negative同等重要时候,适合用ROC曲线评价。
ROC曲线在二分类问题作为一个评估指标非常常用。但是在非常偏态的数据集上,Precision-Recall(PR) Curve可以给我们对于模型的表现有梗全面的认识。
ROC 关注两个指标, 以TPR(真阳率)为y轴,以FPR(假阳率)为x轴,我们就直接得到了RoC曲线。 TPR 代表能将正例分对的概率,FPR 代表将负例错分为正例的概率。在 ROC 空间中,每个点的横坐标是 FPR,纵坐标是 TPR,这也就描绘了分类器在 TP(真正率)和 FP(假正率)间的权衡。
从FPR和TPR的定义可以理解,TPR越高,FPR越小,我们的模型和算法就越高效。
线越靠近左上角,意味着越多的正例优先于负例,模型的整体表现也就越好。
也就是画出来的RoC曲线越靠近左上越好。如下图左图所示。从几何的角度讲,RoC曲线下方的面积越大越大,则模型越优。所以有时候我们用RoC曲线下的面积,即AUC(Area Under Curve)值来作为算法和模型好坏的标准。
PR曲线: 一条PR曲线要对应一个阈值。通过选择合适的阈值,比如50%,对样本进行划分,概率大于50%的就认为是正例,小于50%的就是负例,从而计算相应的精准率和召回率。
|