根据菜菜的课程进行整理,方便记忆理解
代码位置如下:
概述
线性回归大家族
回归是一种应用广泛的预测建模技术,这种技术的核心在于预测的结果是连续型变量。决策树,随机森林,支持向量机的分类器等分类算法的预测标签是分类变量,多以{0,1}来表示,而无监督学习算法比如PCA,KMeans并不求解标签,注意加以区别。回归算法源于统计学理论,它可能是机器学习算法中产生最早的算法之一,其在现实中的应用非常广泛,包括使用其他经济指标预测股票市场指数,根据喷射流的特征预测区域内的降水量,根据公司的广告花费预测总销售额,或者根据有机物质中残留的碳-14的量来估计化石的年龄等等,只要一切基于特征预测连续型变量的需求,我们都使用回归技术。
既然线性回归是源于统计分析,是结合机器学习与统计学的重要算法。通常来说,我们认为统计学注重先验,而机器学习看重结果,因此机器学习中不会提前为线性回归排除共线性等可能会影响模型的因素,反而会先建立模型以查看效果。模型确立之后,如果效果不好,我们就根据统计学的指导来排除可能影响模型的因素。
回归需求在现实中非常多,所以我们自然也有各种各样的回归类算法。最著名的就是我们的线性回归和逻辑回归,从他们衍生出了岭回归,Lasso,弹性网,除此之外,还有众多分类算法改进后的回归,比如回归树,随机森林的回归,支持向量回归,贝叶斯回归等等。除此之外,我们还有各种鲁棒的回归:比如RANSAC,Theil-Sen估计,胡贝尔回归等等。考虑到回归问题在现实中的泛用性,回归家族可以说是非常繁荣昌盛,家大业大了
回归类算法的数学相对简单,相信在经历了逻辑回归,主成分分析与奇异值分解,支持向量机这三个章节之后,大家不会感觉到线性回归中的数学有多么困难。通常,理解线性回归可以有两种角度:矩阵的角度和代数的角度。几乎所有机器学习的教材都是从代数的角度来理解线性回归的,类似于我们在逻辑回归和支持向量机中做的那样,将求解参数的问题转化为一个带条件的最优化问题,然后使用三维图像让大家理解求极值的过程。如果大家掌握了逻辑回归和支持向量机,这个过程可以说是相对简单的,因此我们在本章节中就不进行赘述了。相对的,在我们的课程中一直都缺乏比较系统地使用矩阵来解读算法的角度,全程使用矩阵方式(线性代数的方式)为大家展现回归大家族的面貌。
sklearn中的线性回归
sklearn中的线性模型模块是linear_model,我们曾经在学习逻辑回归的时候提到过这个模块。linear_model包含了多种多样的类和函数,其中逻辑回归相关的类和函数在这里就不给大家列举了。今天的课中我将会为大家来讲解:普通线性回归,多项式回归,岭回归,LASSO,以及弹性网。
类/函数 | 含义 |
---|---|
普通线性回归 | |
linear_model.LinearRegression | 使用普通最小二乘法的线性回归 |
岭回归 | |
linear_model.Ridge | 岭回归,一种将L2作为正则化工具的线性最小二乘回归 |
linear_model.RidgeCV | 带交叉验证的岭回归 |
linear_model.RidgeClassifier | 岭回归的分类器 |
linear_model.RidgeClassifierCV | 带交叉验证的岭回归的分类器 |
linear_model.ridge_regression | 【函数】用正太方程法求解岭回归 |
LASSO | |
linear_model.Lasso | Lasso,使用L1作为正则化工具来训练的线性回归模型 |
linear_model.LassoCV | 带交叉验证和正则化迭代路径的Lasso |
linear_model.LassoLars | 使用最小角度回归求解的Lasso |
linear_model.LassoLarsCV | 带交叉验证的使用最小角度回归求解的Lasso |
linear_model.LassoLarsIC | 使用BIC或AIC进行模型选择的,使用最小角度回归求解的Lasso |
linear_model.MultiTaskLasso | 使用L1 / L2混合范数作为正则化工具训练的多标签Lasso |
linear_model.MultiTaskLassoCV | 使用L1 / L2混合范数作为正则化工具训练的,带交叉验证的多标签Lasso |
linear_model.lasso_path | 【函数】用坐标下降计算Lasso路径 |
弹性网 | |
linear_model.ElasticNet | 弹性网,一种将L1和L2组合作为正则化工具的线性回归 |
linear_model.ElasticNetCV | 带交叉验证和正则化迭代路径的弹性网 |
linear_model.MultiTaskElasticNet | 多标签弹性网 |
linear_model.MultiTaskElasticNetCV | 带交叉验证的多标签弹性网 |
linear_model.enet_path | 【函数】用坐标下降法计算弹性网的路径 |
最小角度回归 | |
linear_model.Lars | 最小角度回归(Least Angle Regression,LAR) |
linear_model.LarsCV | 带交叉验证的最小角度回归模型 |
linear_model.lars_path | 【函数】使用LARS算法计算最小角度回归路径或Lasso的路径 |
正交匹配追踪 | |
linear_model.OrthogonalMatchingPursuit | 正交匹配追踪模型(OMP) |
linear_model.OrthogonalMatchingPursuitCV | 交叉验证的正交匹配追踪模型(OMP) |
linear_model.orthogonal_mp | 【函数】正交匹配追踪(OMP) |
linear_model.orthogonal_mp_gram | 【函数】Gram正交匹配追踪(OMP) |
贝叶斯回归 | |
linear_model.ARDRegression | 贝叶斯ARD回归。ARD是自动相关性确定回归(Automatic Relevance Determination Regression),是一种类似于最小二乘的,用来计算参数向量的数学方法 |
linear_model.BayesianRidge | 贝叶斯岭回归 |
其他回归 | |
linear_model.PassiveAggressiveClassifier | 被动攻击性分类器 |
linear_model.PassiveAggressiveRegressor | 被动攻击性回归 |
linear_model.Perceptron | 感知机 |
linear_model.RANSACRegressor RANSAC | (RANdom SAmple Consensus)算法 |
linear_model.HuberRegressor | 胡博回归,对异常值具有鲁棒性的一种线性回归模型 |
linear_model.SGDRegressor | 通过最小化SGD的正则化损失函数来拟合线性模型 |
linear_model.TheilSenRegressor | Theil-Sen估计器,一种鲁棒的多元回归模型 |