笔者介绍
曾担任零售企业项目负责人,负责企业数据化转型,数据化管理;曾服务中国移动,负责客服部门产品推荐模型组组长;现于某金融投资公司大数据中心,负责风控数据建设,风控建模工作。在除工作外,也喜欢在DC、DF、天池、Kaggle参加一些比赛。机器学习方面,有一定经验,愿与各位分享我的所见所闻所想,与各位共同进步。
什么是线性回归?
线性回归其实是利用统计上的规律,探究因变量和自变量之间的依赖关系。
当我们需要预估一个数值,比如我们现在要买房,我们怎么知道这个房大概价值是多少?买了会不会亏?
先建立假设:影响房价的因素只有面积。
那我们需要知道这个地区的单位面积价格吧?那我们需要通过建立房价公式:房价 = 面积*关系系数(单位面积价格)
线性回归所作的事情实际上就是找出这样的关系系数。
一元回归、多元回归是什么?
简单理解一元就是一个自变量、多元就是多个自变量就可以了。
做线性回归要注意什么?
做线性回归要注意的有几点:
数据异常值,异常值会对拟合造成影响,影响学习效率;
缺失值,公式很明显是数值运算,你得告诉计算机缺失当作什么吧?
数据正态性,需要进行正态检验,没有正态性的变量,可能拟合效果会很差,可进行标准化处理。
相关性,自变量和因变量要有较高的相关性,相关性弱怎么做?拿这片地区的水费价格去预测房价?可能吗?
共线性,指自变量之间的共线性,如果变量之间存在共线性,则结果会很不稳定,后续会讲解;
数据准备
关于异常值,缺失值,标准化的处理,在上一篇文章https://www.toutiao.com/i6643036024052122115/提及。
异常值检测
异常值检验,一般如下情况进行剔除:
变量>均值+3*标准差或变量
变量> 75分位点值+1.5*极差或变量< 25分位点值-1.5*极差极差=75分为点值-25分为点值
变量离群,比如用模型法求。
关于异常值的检测,后续会有其他分享,在这里不再拓展。
正态性检验
介绍两种方法:1、主观画图判断法;2、Q-Q图法;3、K-S检验。
主观画图判断,画出直方图查看:
直方图
Q-Q图,散点落在线段附近:
from scipy import stats
stats.probplot(df, dist="norm", plot=plt)
plt.show()
q-q图
K - S检验,p值大于0.05,很可能为正态分布
from scipy import stats
stats.kstest(df, 'norm', (df.mean(), df.std()))
K-S检验
相关性检验
先说一下相关性,相关性就是衡量变量之间的关系。
范围:[-1,1]
衡量标准是:越靠近+1或者-1则表示相关性越强,越靠近0则表示相关性越弱,一般取
|相关系数|>0.6的变量。
其中,Cov(X,Y)为X与Y的协方差,Var[X]为X的方差,Var[Y]为Y的方差
我们假设,房价跟房子面积,小区人口有关系;
生成如下数据集
线性回归数据集
相关系数检验:
df.corr()
相关系数
我们希望自变量与因变量之间的关系尽可能强(price-area、price-people),自变量之间的关系尽可能弱(area-people)。如果自变量之间的关系太强(共线性),从矩阵计算的角度,可能该解无唯一解,因为数据集矩阵非满秩,不可求逆运算。从变量间关系看,比如人口数量会影响房屋面积的大小建设,所以?交叉影响下,这个相关系数是动态变化的。
回归拟合
回归拟合的方法有两种:最小二乘法,梯度下降法
最小二乘法,实际就是通过真实值减去拟合值,获得使残差最小的参数组合,这里不进行推导,直接给出结果:
θ= (XTX)−1XTY
梯度下降法,往斜率较大的方向每次下降一个值,当残差不再减少,则停止。
下文基于sklearn进行线性回归预测:
price - area散点图
from sklearn.linear_model import LinearRegression #加载sklearn线性回归包
X = pd.DataFrame(df.area)
y = df.price
reg = LinearRegression().fit(X, y) # 训练数据 通过fit传入数据,模型对象为reg
print('score:',reg.score(X, y)) #获得评估结果R2 越接近与1越好
print('常数项:',reg.intercept_,'系数项:',reg.coef_)
plt.plot(np.arange(100,200,10),(reg.coef_*np.arange(100,200,10)+reg.intercept_),'b--')
plt.scatter(df.area,df.price,color='red',marker='x')
plt.show()
拟合结果
回归检验指标
解释方差分数
平均绝对误差
均方误差
均方对数误差平均值
中位数绝对误差
R²分数,决定系数
通常来说回归结果的检验,有如上方法,由于时间原因,这些方法不能再这里一一讲解,后续会有专题进行分享。
本次分享到此为止,后续将继续分享,如对您有帮助,请关注并转发支持谢谢。
领取专属 10元无门槛券
私享最新 技术干货