浅谈线性回归、逻辑回归、感知机和SVM |
您所在的位置:网站首页 › 逻辑回归是什么问题类型 › 浅谈线性回归、逻辑回归、感知机和SVM |
分类和回归是机器学习可以解决两大主要问题,从预测值的类型上看,连续变量预测的定量输出称为回归;离散变量预测的定性输出称为分类。例如:预测明天多少度,是一个回归任务;预测明天阴、晴、雨,就是一个分类任务。 1.线性回归(Linear Regression)在一维特征空间,线性回归是通过学习一条直线 在多维空间,线性回归表示为 那么怎样评价它对于观测到的数据点拟合得好坏呢?所以需要对我们做出的假设 所以现在变成了一个优化问题,即找到要找到令损失函数 梯度下降法是按下面的流程进行的: 1)首先对对于只有二维属性的样本, 如果取到一个正确的 下图就详细的说明了梯度下降的过程: 下图就是overshoot minimum现象: 迭代更新的方式有多种 批量梯度下降(batch gradient descent),也就是是梯度下降法最原始的形式,对全部的训练数据求得误差后再对逻辑回归由于存在易于实现、解释性好以及容易扩展等优点,被广泛应用于点击率预估(CTR)、计算广告(CA)以及推荐系统(RS)等任务中。逻辑回归虽然名字叫做回归,但实际上却是一种分类学习方法。 线性回归完成的是回归拟合任务,而对于分类任务,我们同样需要一条线,但不是去拟合每个数据点,而是把不同类别的样本区分开来。 2.1 预测函数对于二分类问题, 逻辑回归中选择对数几率函数(logistic function)作为激活函数,对数几率函数是Sigmoid函数(形状为S的函数)的重要代表
问:为什么逻辑回归又叫对数几率回归?
答:上式可以变化为
如果说线性回归是对于特征的线性组合来拟合真实标记的话 在逻辑回归中,我们预测: 当假设我们有一个模型: 如何求分类任务的最优解呢?第一个直接的想法是仍然沿用上述的均方误差来表示真实样本与预测值之间的差距 问:为什么定义这样的损失函数?
答:实际上 虽然逻辑回归得到的梯度下降更新迭代公式与线性回归的梯度下降算法一样,但是这里的 以线性回归预测房价为例 过拟合问题通常发生在变量(特征)过多的时候。这种情况下训练出的方程总是能很好的拟合训练数据,也就是说,我们的代价函数可能非常接近于0或者就为0,使其拟合只局限于训练样本中,无法很好预测其他新的样本。 解决过拟合问题的方法主要有两种: 1.减少特征数量,通过人工或者算法选择哪些特征有用保留,哪些特征没用删除,但会丢失信息。 2.正则化,保留特征,但减少特征对应参数的大小,让每个特征都对预测产生一点影响。 对于正则化线性回归,损失函数变成
对于逻辑回归损失函数加入正则项得:
LR是一个传统的二分类模型,它也可以用于多分类任务,其基本思想是:将多分类任务拆分成若干个二分类任务,然后对每个二分类任务训练一个模型,最后将多个模型的结果进行集成以获得最终的分类结果。一般来说,可以采取的拆分策略有: one vs one策略
假设我们有N个类别,该策略基本思想就是不同类别两两之间训练一个分类器,这时我们一共会训练出 LR实现简单高效易解释,计算速度快,易并行,在大规模数据情况下非常适用,更适合于应对数值型和标称型数据,主要适合解决线性可分的问题,但容易欠拟合,大多数情况下需要手动进行特征工程,构建组合特征,分类精度不高。 LR直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题。 LR能以概率的形式输出,而非知识0,1判定,对许多利用概率辅助决策的任务很有用。 对率函数任意阶可导,具有很好的数学性质,许多现有的数值优化算法都可以用来求最优解,训练速度快 适用情景:LR是很多分类算法的基础组件,它的好处是输出值自然地落在0到1之间,并且有概率意义。因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况。虽然效果一般,却胜在模型清晰,背后的概率学经得住推敲。它拟合出来的参数就代表了每一个特征(feature)对结果的影响。也是一个理解数据的好工具。 应用上: CTR预估,推荐系统的learning to rank,各种分类场景 某搜索引擎厂的广告CTR预估基线版是LR 某电商搜索排序基线版是LR 某新闻app排序基线版是LR 大规模工业实时数据,需要可解释性的金融数据,需要快速部署低耗时数据 LR就是简单,可解释,速度快,消耗资源少,分布式性能好 ADMM-LR:用ADMM求解LogisticRegression的优化方法称作ADMM_LR。ADMM算法是一种求解约束问题的最优化方法,它适用广泛。相比于SGD,ADMM在精度要求不高的情况下,在少数迭代轮数时就达到一个合理的精度,但是收敛到很精确的解则需要很多次迭代。 4.感知机 4.1 感知机简述感知机(perceptron)是二分类的线性分类模型,属于监督学习算法。输入为实例的特征向量,输出为实例的类别(取+1和-1)。感知机旨在求出将输入空间中的实例划分为两类的分离超平面。为求得超平面,感知机导入了基于误分类的损失函数,利用梯度下降法对损失函数进行最优化求解。 如果训练数据集是线性可分的,则感知机一定能求得分离超平面。如果是非线性可分的数据,则无法获得超平面。 感知机具有简单而易于实现的优点,分为原始形式和对偶形式。对偶形式中训练实例仅以内积的形式出现,所以速度要比原始形式要忧。感知机预测是用学习得到的感知机模型对新的实例进行预测的,因此属于判别模型。感知机是神经网络和支持向量机的基础。 4.2 感知机模型我们首先定义对于样本 感知机学习算法是对上述损失函数进行极小化,求得 我们大概从下图看下感知机的训练过程。 线性可分的过程: SVM(Support Vector Machine)是一种可监督的机器学习算法,可用于分类或回归问题。它使用一种称为核技巧的技术来转换数据,然后根据这些转换在可能的输出之间找到最佳边界。简而言之,它进行了一些极其复杂的数据转换,然后指出了如何根据您定义的标签或输出来分离数据。支持向量机算法的目标是在N维空间(N —特征数)中找到一个具有最大间隔的超平面,即两个类别的数据点之间的最大距离,该超平面对数据点进行明显分类。 它能够进行分类和回归。SVM可以处理线性和非线性问题,非线性SVM意味着算法计算的边界不必是直线。好处是我们可以捕获数据点之间更复杂的关系,而不必自己执行困难的转换。缺点是训练时间更长,因为它的计算量更大。 如下图:通过使用几种不同类型的分类器,我们发现SVM在将牛与狼群分开方面做得很好。我认为这些图也很好地说明了使用非线性分类器的好处。我们可以看到逻辑模型和决策树模型都仅使用直线。 函数间隔:是人为定义的一个间隔度量 几何间隔:才是直观上的点到超平面的距离。 几何间隔就是函数间隔除以||w||,其中||w||为w的二阶范数(范数是一个类似于模的表示长度的概念) 核函数:通过两个向量点积来度量向量间相似度的函数 使用核技巧的原因:通过使用核技巧,我们可以在原始特征空间中计算两个高维特征空间中向量的相似度。 线性核函数(Linear Kernel) 它可以用作任意两个观测值之间的点积。线性核的公式如下提问:为什么要用核函数呢? 回答:从输入空间到某个特征空间的映射,这意味着建立非线性学习器分为两步: 1.首先使用一个非线性映射将数据变换到一个特征空间, 2.然后在特征空间使用线性学习器分类。 简单来讲:拿到非线性数据,就找一个映射,然后一股脑把原来的数据映射到新空间中,再做线性 SVM 即可。不过事实上好像并没有这么简单。 思索之后:如果遇到多维数据,出现维度爆炸,那么计算就非常困难了。这个时候,可能就需要核函数出马了 5.5 使用松弛变量处理 outliers 方法当处理数据是线性可分的时候,我们可以找到一个可行的超平面将数据完全分开。后来为了处理非线性数据,使用 Kernel 方法对原来的线性 SVM 进行了推广,使得非线性的的情况也能处理。虽然通过映射将原始数据映射到高维空间之后,能够线性分隔的概率大大增加,但是对于某些情况还是很难处理。 例如可能并不是因为数据本身是非线性结构的,而只是因为数据有噪音。对于这种偏离正常位置很远的数据点,我们称之为 outlier ,在我们原来的 SVM 模型里,outlier 的存在有可能造成很大的影响,因为超平面本身就是只有少数几个 support vector 组成的,如果这些 support vector 里又存在 outlier 的话,其影响就很大了。例如下图: 用黑圈圈起来的那个蓝点是一个 outlier ,它偏离了自己原本所应该在的那个半空间,如果直接忽略掉它的话,原来的分隔超平面还是挺好的,但是由于这个 outlier 的出现,导致分隔超平面不得不被挤歪了,变成途中黑色虚线所示(这只是一个示意图,并没有严格计算精确坐标),同时 margin 也相应变小了。当然,更严重的情况是,如果这个 outlier 再往右上移动一些距离的话,我们将无法构造出能将数据分开的超平面来。 为了处理这种情况,SVM 允许数据点在一定程度上偏离一下超平面。例如上图中,黑色实线所对应的距离,就是该 outlier 偏离的距离,如果把它移动回来,就刚好落在原来的 超平面 蓝色间隔边界上,而不会使得超平面发生变形了。 换言之,在有松弛的情况下outline点也属于支持向量SV,同时,对于不同的支持向量,拉格朗日参数的值也不同,如此篇论文《Large Scale Machine Learning》中的下图所示: 对于远离分类平面的点值为0;对于边缘上的点值在[0, 1/L]之间,其中,L为训练数据集个数,即数据集大小;对于outline数据和内部的数据值为1/L 6.小结 6.1 逻辑回归和感知机的异同两类都是线性分类器; 损失函数两者不同:逻辑回归使用极大似然(对数损失函数),感知机使用的是均方损失函数(即错误点到分离平面的距离,最小化这个值) 逻辑回归比感知机的优点在于对于激活函数的改进。 前者为sigmoid function,后者为阶跃函数。这就导致LR是连续可导,而阶跃函数则没有这个性质。 LR使得最终结果有了概率解释的能力(将结果限制在0-1之间),sigmoid为平滑函数,能够得到更好的分类结果,而step function为分段函数,对于分类的结果处理比较粗糙,非0即1,而不是返回一个分类的概率。 6.2 感知机和SVM的区别 相同点 都是属于监督学习的一种分类器(决策函数)。 不同点 感知机追求最大程度正确划分,最小化错误,很容易造成过拟合。 支持向量机追求大致正确分类的同时,一定程度上避免过拟合。 感知机使用的学习策略是梯度下降法,而SVM采用的是由约束条件构造拉格朗日函数,然后求偏导令其为0求得极值点。这里特别说明下一般我们的拉格朗日函数是符合凸函数的,因此对于凸函数一定存在极值点,也是唯一的最优解。而一般的非凸函数,只好采用梯度下降法一步一步的求得极值点,如果非凸函数还是采用求导令为0,可能找不到极值点!因为鞍点也是导数为,但却不是极值点的特例,如y = x^3函数。导数为0是函数极值点的必要条件。 6.3 逻辑回归与SVM的区别它们的区别就在于逻辑回归采用的是 log loss(对数损失函数),svm采用的是hinge loss 其实,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。SVM的处理方法是只考虑 support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重,两者的根本目的都是一样的。 svm考虑局部(支持向量),而logistic回归考虑全局,就像大学里的辅导员和教师间的区别 辅导员关心的是挂科边缘的人,常常找他们谈话,告诫他们一定得好好学习,不要浪费大好青春,挂科了会拿不到毕业证、学位证等等,相反,对于那些相对优秀或者良好的学生,他们却很少去问,因为辅导员相信他们一定会按部就班的做好分内的事;而大学里的教师却不是这样的,他们关心的是班里的整体情况,大家是不是基本都理解了,平均分怎么样,至于某个人的分数是59还是61,他们倒不是很在意。 逻辑回归和SVM都可以用于分类问题的解决,其主要区别就在于映射函数选择上的不同,逻辑回归常用于处理大数据,而SVM则正好相反。 参考链接:支持向量机通俗导论(理解SVM的三层境界) 逻辑回归(Logistic Regression, LR)简介 机器学习入门:线性回归及梯度下降 感知机原理 【机器学习】感知机原理详解 What is a Support Vector Machine, and Why Would I Use it? Support Vector Machine — Introduction to Machine Learning Algorithms ML - Support Vector Machine(SVM) 【机器学习】数据降维—核主成分分析(Kernel PCA) 逻辑回归感知机异同,损失函数思考 感知机和SVM的区别 Machine learning: lecture 7 Logistic Regression and SVM 逻辑回归和SVM的区别是什么?各适用于解决什么问题? |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |