线性回归于逻辑回归面试题 简单介绍一下线性回归。 线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。 线性:两个变量之间的关系是一次函数关系的——图象是直线,叫做线性。 非线性:两个变量之间的关系不是一次函数关系的——图象不是直线,叫做非线性。 回归:人们在测量事物的时候因为客观条件所限,求得的都是测量值,而不是事物真实的值,为了能够得到真实值,无限次的进行测量,最后通过这些测量数据计算回归到真实值,这就是回归的由来。
**线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。**这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。
线性回归就是利用的样本$D=(\mathrm{x}_i, \mathrm{y}_i)
, \mathrm{i}=1,2,3 \ldots \mathrm{N}, \mathrm{x}_i是特征数据,可能是一个,也可能是多个,通过有监督的学习,学习到由x到y的映射h,利用该映射关系对未知的数据进行预估,因为y$为连续值,所以是回归问题。
线性回归的假设函数(\theta_{0}表示截距项, x_{0} = 1,方便矩阵表达):
其中\theta,X都是列向量
一般使用最小二乘法,真实值y_{i},预测值h_θ(x),则误差平方为\left(y_{i}-h_{\theta}\left(x_{i}\right)\right)^{2}找到合适的参数,使得误差平方和最小
其中共有m个样本点,乘以1/2是为了方便计算。
参考资料:https://www.cnblogs.com/xym4869/p/11309134.html
目的:
解决线性回归出现的过拟合的请况。
解决在通过正规方程方法求解\theta的过程中出现的X^TX不可逆的请况。
本质:
这两种回归均通过在损失函数中引入正则化项来达到目的:
线性回归的损失函数:
补充
ElasticNet 回归: 线性回归 + L1正则化 + L2 正则化。
ElasticNet在我们发现用Lasso回归太过(太多特征被稀疏为0),而岭回归也正则化的不够(回归系数衰减太慢)的时候,可以考虑使用ElasticNet回归来综合,得到比较好的结果。
损失函数
LWR( 局部加权)回归:
局部加权线性回归是在线性回归的基础上对每一个测试样本(训练的时候就是每一个训练样本)在其已有的样本进行一个加权拟合,权重的确定可以通过一个核来计算,常用的有高斯核(离测试样本越近,权重越大,反之越小),这样对每一个测试样本就得到了不一样的权重向量,所以最后得出的拟合曲线不再是线性的了,这样就增加的模型的复杂度来更好的拟合非线性数据。
损失函数
线性回归的假设前提是噪声服从正态分布,即因变量服从正态分布。但实际上难以达到,因变量服从正态分布时模型拟合效果更好。
参考资料: http://www.julyedu.com/question/big/kp_id/23/ques_id/2914
逻辑回归主要用来解决分类问题,线性回归的结果Y带入一个非线性变换的Sigmoid函数中,得到[0,1]之间取值范围的数S,S可以把它看成是一个概率值,如果我们设置概率阈值为0.5,那么S大于0.5可以看成是正样本,小于0.5看成是负样本,就可以进行分类了。
sigmoid函数取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。
函数公式如下:
函数中t无论取什么值,其结果都在[0,{1}]的区间内,我们假设分类的阈值是0.5,那么超过0.5的归为1分类,低于0.5的归为0分类,阈值是可以自己设定的。
下来我们把线性回归的输出 \theta^T X+b 带入 t 中就得到了逻辑回归的假设函数:
结果也可以理解为概率,换句话说概率大于0.5的属于1分类,概率小于0.5的属于0分类,这就达到了分类的目的。
逻辑回归的损失函数是交叉熵损失函数:
两式合并得到概率分布表达式:
对数似然函数最大化得到似然函数的代数表达式为 :
取反得到损失函数表达式——(负对数损失函数) :
多分类问题一般将二分类推广到多分类的方式有三种,一对一,一对多,多对多。
一对一:
一对多:
多对多:
优点
缺点
对模型中自变量多重共线性较为敏感
例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性;
预测结果呈S型,因此从log(odds)向概率转化的过程是非线性的,在两端随着log(odds)值的变化,概率变化很小,边际值太小,slope太小,而中间概率的变化很大,很敏感。 导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阀值。
逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合; 离散特征的增加和减少都很容易,易于模型的快速迭代;
稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
方便交叉与特征组合:离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
简化模型:特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。
稳定性:特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人;
离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰。
参考资料:https://blog.csdn.net/qq1195365047/article/details/88638809
线性回归主要解决回归任务,逻辑回归主要解决分类问题。
线性回归的输出一半是连续的,逻辑回归的输出一般是离散的。
逻辑回归的输入是线性回归的输出,将Sigmoid函数作用于线性回归的输出得到输出结果。
线性回归的损失函数是MSE,逻辑回归中,采用的是负对数损失函数
参考资料:https://blog.csdn.net/ddydavie/article/details/82668141
逻辑回归和线性回归首先都是广义的线性回归,其次模型的优化目标函数是最小二乘,而逻辑回归则是似然函数,逻辑回归在线性回归的基础上,在特征到结果的映射中加入了一层sigmoid函数(非线性)映射,即先把特征线性求和,然后使用sigmoid函数来预测。另外线性回归在整个实数域范围内进行预测,敏感度一致,而分类范围,需要在0,1间的一种回归模型,因而对于这类问题来说,逻辑回归的鲁棒性比线性回归的要好。
参考资料:https://www.deeplearn.me/1788.html
假设label={-1,+1},则
对于sigmoid函数,有以下特性,
同样,我们使用MLE作估计,
对上式取对数及负值,得到损失为:
即对于每一个样本,损失函数为:
如果在损失函数最终收敛的情况下,有很多特征高度相关也不会影响分类器的效果。对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一。如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了。
线性模型的输出都是在[-∞,+∞]之间的,而Sigmoid能够把它映射到[0,1]之间。正好这个是概率的范围。
Sigmoid是连续光滑的。
根据Sigmoid函数,最后推导下来逻辑回归其实就是最大熵模型,根据最大似然估计得到的模型的损失函数就是logloss。这让整个逻辑回归都有理可据。
Sigmoid也让逻辑回归的损失函数成为凸函数,这也是很好的性质。
逻辑回归的损失函数是二元分类的良好代理函数,这个也是Sigmoid的功劳。
参考资料:http://sofasofa.io/forum_main_post.php?postid=1004244
参考资料:http://blog.sina.com.cn/s/blog_6cb8e53d0101oetv.html