admin管理员组文章数量:1794759
多元线性回归
多元线性回归1 spss实现1.1 获取数据
现在用红框的作为自变量来预测因变量 : 当前薪资
1.2 准备工作1.2.0 因变量的分布和自变量的量纲问题通过探索性分析的结果:
正态吊兰怎么养才能更旺盛性检验,直方图,QQ图等来判断是否近似服从正态分布,若差异较为明显,则可通过其他变换来替换,如对数,多项式
自变量之间如果相差比较大时,可以进行标准化处理
1.2.1 相关性教育水平 起始薪资和当前薪资相关性较高,另外两个较低,在这里网站备案时间可以直接排除经验 和雇佣时间这两个变量吗?
一般情况下不可以,数据来之不易,况且这两个变量会影响当前薪资,大多数情况下: 我们用 数据表现 +业务场景 来取舍特征.
1.2.2 spss中对分类变量的华为电脑编码例如男性为1,女性为2,spss中会将1组和2组进行对比,该实验中性别变量的的斜率是指:男 女 之间最佳肺活量预测值的差异
比如说:自变量性别的斜率为2,说明男性的最接触器接线佳的肺活量预测值比女性高2mol(前提其他自变量不变的情况下)
和python中的独sumproduct函数热编码区分开来
1.2.3 重复值和异常值重复值可以直接删除,
异常值通常定义为3倍标准差之外的值,取舍要结合业务场景来决定.
1.3 建模在这里简要补充原理 :
对于一个有个特征的样本 而言,它的回归结果可以写作一个几乎人人熟悉的方程:
如果考虑我们有m个样本,则回归结果可以被写作:
即就 :
天天兄弟线性回归的任务,就是构造一个预测函数来映射输入的特征矩阵 和标签值 的线性关系,
回归的原理就是让 RSS(残差平方和)
这种通过最小化真实值和预测值之间的RSS来求解参数的方法叫做最小二乘法。
后面在python中啰嗦,下面开始实现回归方程的建立和预测
选择逐步回归
R : 实际值和预测值的相关系数,
R方 :
R方会夸大自变量解释因变量变异的程度强直性脊柱炎能治好吗,因为它是样本数据计算出来的,受自变量个数的影响,
调整后的R方 :
但是调整后的R方,不受纳入模型中的自变量个数的限制,相较于R方准确打架斗殴怎么处理度更好
独立性检验:德宾-沃森的值,其检验值取值范围[0,4]之间,越接近2,观测值相独立的可能性就越大,一般情况下可以直接确定!
综上: R方越接近1,我们拟合的程度就越好,
F值大于F临界值的概率p<0.01,故拒绝回归系数都为0的假设,
第4步 回归平方和 / 总计 可以看出占了绝大部分,说明线性模型解释了总平方和的绝大部分,模型拟合效果不错.
可以得出: 起始薪资的标准化回归系数最大0.888,与其他变量差异较明显,p<0.01,拒绝系数和0没有差异的原假设,
VIF都小于10,说明解释变量不存在多重共线性的问题,
VIF=1/容差,越接近于1越能说明解释变量不存在多重共线性
思考 : 如果存在多重线性该如何处理?
回归方程 : 当前薪资 = -10266.269 + 1.928 x 起始薪资 中村修二+ 173.203 x 雇佣时间
第一步 : 排除3个变量,保留一个
以此类推
利用残差排除异常个案号,意思就是说这些个案号的残差较其他残差在3倍的标准差之外,也就是说这些个案号的预测值在准确度上有所欠缺,取舍取决于业务场景
残差基本呈正态分布
如果点全部都在线上说明数据就是正态分布,线性回归仅要求回归残差符合正态分布,此图近似满足条件
残差的方差齐性检验 : 拟合线是一条平行于x轴的直线
在一定的范围内,残差的大小不随预测值取值水平的变化而变化
真实值和预测值的相关程度 :
另外: 还有自动线性建模(用模型来模拟线性回归)预测 ,操作非常简单,和手动的预测结果基本一样.
1.4 应用此模型2 python实现回归是一种应用广泛的预测建模技术,这种技术的核心在于预测的结果是连续型变量。回归算法源于统计学理论,它可能是机器学习算法中产生最早的算法之一,其在现实中的应用非常广泛,包括使用其他经济指标预测股票市场指数,根据喷射流的特征预测区域内的降水量,根据公司的广告花费预测总销售额,或者根据有机物质中残留的碳-14的量来估计化石的年龄等等,只要一切基于特征预测连续型变量的需求,我们都使用回归技术。
既然线性回归是源电子日记本于统计分析,是结合机器学习与统计学的重先进制造要算法。通常来说,我们认为统计学注重先验,而机器学习看重结果,因此机器学习中不会提前为线性回归排除共线性等可能会影响模型的因素,反而会先建立模型以查看效果。模型确立之后,如果效果不好,我们就根据统计学的指导来排除可能影响模型的因素。现在从机器学习的角度来为大家讲解回归类算法,
sklearn中的线性回归
2.1 原理上面提到的RSS(残差平方和)
现在问题转换成了求解让RSS最小化的参数向量 ,这种通过最小化真实值和预测值之间的RSS来求解参数的方法叫 做最小二乘法。
求解极值的第一步往往是求解一阶导数并让一阶导数等于0,最小二乘法也是一样的套路。因此,我们现 在对残差平方和RSS上对参数向量 求导。
具体推导过程在这里不展示
政治清明最终的参数向量 :
假设这个逆矩阵存在!!!(不存在即就是自变量之间存在多重共线性) 两者为充分必要条件
2.2 获取数据还是上面这份数据
在机器学习中,我们会先考虑模型的效果,如果模型效果不好,那我们可能考虑改变因变量的分布。
2.3 数据预处理和特征工程数据不给力,再高级的算法都没有用。
数据预处理 : 例如数据类型是否正确,重复值,缺失值等
特征工程: 例如数据的量纲,特征的选择,填充缺失值,变量的编码等问题的处理.
核心目的是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取 特征以及创造特征来实现。其中创造特征又经常以降维算法的方式实现。 可能面对的问题有:特征之间有相关性,特征和标签无关,特征太多或太小,或者干脆就无法表现出应有的数 据现象或无法展示数据的真实面貌
特征工程的目的:
1) 降低计算成祖鲁人本,
2) 提升模型上限
2.4 linear_model.LinearRegression语法 : class sklearn.linear_model.LinearRegression (fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)
线性回归的类可能是我们目前为止学到的最简单的类,仅有四个参数就可以完成一个完整的算法。并且看得出,这些参数中并没有一个是必填的,更没有对我们的模型有不可替代作用的参数。这说明,线性回归的性能,往往取决于数据本身,而并非是我们的调参能力,线性回归也因此对数据有着很高的要求。幸运的是,现实中大部分连续型变量之间,都存在着或多或少的线性联系。所以线性回归虽然简单,却很强大。
#导包import pandas as pdimport numpy as np from sklearn.linear_model import LinearRegression as LR # 专门做线性回归from sklearn.model_selection import train_test_split # 划分数据集from sklearn.model_selection import cross_val_score # 做交叉验证# 1 划分数据集X=df1[["教育水平","起始薪金","雇佣时间","经验"]]# 自变量y=df1["当前薪金"] # 因变量Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,y,test_size=0.3,random_state=520)# 划分为测试集和训练集,比例为: 7: 3 ,随机种子random_state=520设为固定值# 1 划分数据集X=df1[["教育水平","起始薪金","雇佣时间","经验"]]# 自变量y=df1["当前薪金"] # 因变量Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,y,test_size=0.3,random_state=520)# 划分为测试集和训练集,比例为: 7: 3 ,随机种子random_state=520设为固定值由于划分了数据集,导致行索引不连续,现在规整为连续的行索引
Xtrain.index=range(Xtrain.shape[0])Xtest.index=range(Xtest.shape[0])# 当然可以使用否循环for i in [Xtrain, Xtest]: i.index = range(i.shape[0])display(Xtrain,Xtest)2.5 建模reg = LR().fit(Xtrain, Ytrain) # 用训练集训练模型yhat = reg.predict(Xtest)# 用测试集预测目标变量yhatreg.coef_ # 系数项array([826.7412egf7421, 1.72571771, 131.31892709, -16.65530741])reg.intercept_ # 截距项-15023.718091291783回归方程 : 教育水平 x reg.coef_[0] +起始薪资 x reg.coef_1] +雇佣时间 x reg.coef_[2] + 经验 x reg.coef_[3] -reg.intercept_建模的过程在sklearn当中其实非常简单,但模型的效果如何呢?接下来我们来看看多元线性回归的模型评估指标。
2.6 模型评估回归类算法中,我们有两种不同的角度来看待回归的效果:
第一,我们是否预测到了正确的数值。
第二,我们是否拟合到了足够的信。
这两种角度,分别对应着不同的模型评估指标。
2.6.1 是否预测了正确的数值RSS残差平方和,它的本质是我们的预测值与真实值之间的差异,也就是从第一种角度来评估我们回归的效力,所以RSS既是我们的损失函数,也是我们回归类模型的模型评估指标之一。
但是,RSS有着致命的缺点: 它是一个无界的和,可以无限地大。我们只知道,我们想要求解最小的RSS,从RSS的公式来看,它不能为负,所以RSS越接近0越好,但我们没有一个概念,究竟多小才算好,多接近0才算好?为了应对这种状况,sklearn中使用RSS的变体,均方误差MSE(mean squared error)来衡量我们的预测值和真实值的差异:
均方误差,本质是在RSS的基础上除以了样本总量,得到了每个样本量上的平均误差。有了平均误差,我们就可以将平均误差和我们的标签的取值范围在一起比较,以此获得一个较为可靠的评估依据。在sklearn当中,我们有两种方式调用这个评估指标,一种是使用sklearn专用的抗坏血酸氧化酶模型评估模块metrics里的类mean_squared_error,另一种是调用交叉验证的类cross_val_score并使用里面的scoring参数来设置使用均方误差。
# 法1from sklearn.metrics import mean_squared_error as M七日死SEMSE(yhat,Ytest)56641993.59835355# 法2import sklearnsorted(sklearn.metrics.SCORERS.keys())cross_val_score(reg,X,y,cv=10,scoring="neg_mean_squared_error").mean()-57712955.883224785# 采用10折交叉验证,得到10个均方误差的平均值# 在sklearn当中,所有的损失都使用负数表示,因此均方误差也被显示为负数了。真正的均方误差MSE的数值是其绝对值2.6.2 是否拟合了足够的信上面提到过得R方登场!!!
对于回归类算法而言,只探索数据预测是否准确是不足够的。除了数据本身的数值大小之外,我插花艺术们还希望我们的模型能够捕捉到数据的”规律“,比如数据的分布规律,单调性等等,而是否捕获了这些信并无法使用MSE来衡量
其中 是我们的真实标签, 是我们的预测结果, 是我们的均值, 如果除以样本量m就是我们的方差。方差的 本质是任意一个 值和样本均值的差异,差异越大,这些值所带的信越多。在 中,分子是真实值和预测值之差的 差值,也就是我们的模型没有捕获到的信总量,分母是真实标签所带的信量,所以其衡量的是1 - 我们的模型没有捕获到的信量占真实标签中所带的信量的比例,所以, 越接近1越好
可以使用三种方式来调用R方,一种是直接从metrics中导入r2_score,输入预测值和真实值后打分。第二种是直接从 线性回归LinearRegression的接口score来进行调用。第三种是在交叉验证中,输入"r2"来调用
#法1 调用R2from sklearn.metrics import r2_scorer2_score(Ytest,yhat)#法2 调用R2r2 = reg.score(Xtest,Ytest)r20.703106802595213# 注意参数的顺序cross_val_score(reg,X,y,cv=10,scoring="r2").mean()# 交叉验证得到10个R2的平均值0.7775605075658947import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] sorted(Ytest)plt.plot(range(len(Ytest)),sorted(Ytest),c="black",label= "真实值")plt.plot(range(len(yhat)),sorted(yhat),c="red",label = "预测值甜歌皇后4;)plt.legend()plt.show()另外R2可以为负值,说明拟合效果极为糟糕,还不如用平均值去衡量,
综上 : python建立的回归模型拟合度70.31%,和用spss建立的回归模型拟合优度81%,而且用10折交叉验证得到的R2中第10次验证中的R2为81%
cross_val_score(reg,X,y,cv=10,scoring="r2")array([0.85072291, 0.84061595, 0.7879853 , 0.65785778, 0.55818726, 0.80009887, 0.7198基层建议7483, 0.86765352, 0.88168543, 0.81092321])考10次爱一个人好难歌词试,第10次考的结果和spss考的效果几乎相同,
由此可见 : 线性回归模型的拟合度很大程度上取决于数据本身,优化的空间极小,
自变中存在多重共线性的问题?
可以考虑岭回归使得:
这个矩阵
一定存在可逆矩阵,即就保障了最小二乘法的使用.
岭回归的损失函数的完整表达式写作:
后续有时间在讨论!!!
本文标签: 线性
版权声明:本文标题:多元线性回归 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1685858479a2082.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论