多元线性回归
多重共线性 岭回归 lasso回归
多元线性回归 LinearRegression 一个样本有多个特征的线性回归问题
线性回归的任务就是构造一个预测函数来映射输入的特征矩阵X和标签值y的关系 。这个预测函数的本质就是我们需要构建的模型,而构造预测函数的核心就是找出模型的参数向量w
损失函数如下定义:
把问题定义为一个最优化问题:损失函数最小化
线性回归有监督 L2范式 即欧氏距离的平方
误差平方和 SSE 残差平方和RSS
最小二乘法求多元线性回归的参数
问题转化成了求解让RSS最小化的参数向量w,这种通过最小化真实值和预测值之间的RSS来求解参数的方法叫做最小二乘法。
上式成立的前提是逆矩阵存在,逆矩阵存在的充分必要条件是特征矩阵不存在多重共线性。
使用最小二乘法来求解线性回归方法是一种无偏估计,无偏估计要求因变量也就是标签的分布必须服从正态分布,标签必须经过正态化处理,QuantileTransformer或者PowerTransformer类来处理
sklearn.liner_model.LinearRegression
参数 fit_intercept 是否需要计算截距
normalize 是否进行标准化,这个标准化用减去均值并除以L2范式 如果要做标准化请在fit数据之前使用preprocessing的Standardscaler
copy_X 在X.copy()上来操作
线性回归不是一个需要调很多参数的算法
是否准确:
均方误差MSE来衡量预测值和真实值的差异,本质是RSS的基础上除以样本总量,得到每个样本量上的平均误差
负均方误差表示是一个损失
是否拟合:
使用方差来衡量数据上的信息量,如果方差越大代表数据上的信息量越多。衡量模型对数据上的信息量的捕捉我们定义R方 来评估
精确相关关系和高度相关关系并称为多重共线性
一个矩阵要满秩,则要求矩阵中每个向量之间不能存在着多重共线性。
机器学习不要求特征之间必须独立,必须不相关,只要不是高度相关或者精确相关就好,特征矩阵逆必须存在,行列式不能为0,特征矩阵必须满秩,特征之间不能存在多重共线性
纠正多重共线性:
改进多重共线性
损失函数加上了正则项 增加L2范式 变为岭回归
正则化乘以单位阵,最小二乘法一定有解,调整正则化参数来调整模型,不过影响了原始特征
sklearn.linear_model.Ridge
参数多了主要是正则项的系数α
使用岭迹图(喇叭图)来为岭回归选择最佳正则化参数
sklearn.linear_model.Ridgecv cv参数进行留一交叉验证
Lasso回归用L1范式乘以正则化系数alpha
Lasso不是从根本上解决多重共线性问题 而是限制多重共线性带来的影响
sklearn.linear_model.Lasso
lasso不坚持使用最小二乘法,使用坐标下降法
sklearn.linear_model.Lassocv
线性模型可以用来拟合非线性数据,而非线性模型也可以用来拟合线性数据。
非线性模型几乎可以再线性数据上有不逊于线性模型的表现;线性模型拟合非线性数据就不行了。
有些模型既是线性也是非线性 支持向量机 既可以处理线性数据也可以处理非线性模型
当我们获取数据是,我们往往希望使用线性模型来对数据进行最初的拟合,如果线性模型表现良好,则说明数据本身很可能是线性的或者线性可分的,如果线性模型表现糟糕,那毫无疑问我们会投入决策树,随机森林这些模型,就不必浪费时间在线性模型上了。
不代表完全不能使用线性模型了。使用线性模型速度更快。
可以使用分箱处理非线性问题
让线性回归在非线性数据上表现提升的核心方法之一是对数据进行分箱,也就是离散化。
数据分箱 sklearn.preprocessing.KBinsDiscretizer
用onehot方式做离散化
多项式回归,线性回归的升维
sklearn.preprocessing.polynomialFeatures



