如何从回归分析到算法基础?

回归分析就是定量地描述自变量和因变量之间的关系,并根据这些数量关系对现象进行预测和控制的一种统计分析方法 。这种预测称为回归分析预测 , 例如可以通过回归去研究工程师薪资与工作年限的关系 。
1 回归分析简介1.1 “回归”一词的来源
【如何从回归分析到算法基础?】“回归”()一词来源于生物学 , 是由英国著名生物学家兼统计学家高尔顿******在研究人类遗传问题时提出来的 。1985~1990年期间,高尔顿发表多篇论文论证其观点 。在研究父与子身高的遗传问题时,高尔顿搜集了1078对父子的身高数据,他发现这些数据的散点图大致呈直线状态 。也就是说 , 总的趋势是父亲的身高增加时 , 儿子的身高也倾向于增加 。高尔顿进而分析出子代的身高_y_与父亲的身高_x_大致可归结为直线关系,并求出了该直线方程(单位:英寸,1英寸=2.54cm):

这种趋势及回归方程表明的内容如下:
以上就是统计学上最初出现“回归”时的含义,高尔顿把这一现象叫作“向平均数方向的回归”() 。虽然这是一种特殊情况,与线形关系拟合的一般规则无关,但“线形回归”的术语却因此沿用下来,作为根据一种变量(父亲身高)预测另一种变量(子女身高)或多种变量关系的描述方法 。之后,回归分析的思想渗透到了数理统计的其他分支 。随着计算机的发展以及各种统计软件包的出现,回归分析的应用越来越广泛 。
1.2 回归与相关
客观事物在发展过程中是彼此联系、相互影响的,在数据挖掘的过程中常常要研究两个或者两个以上的变量之间的关系,各种变量间的关系大致可以分为完全确定关系(函数关系)和非确定性关系 。
(1)完全确定关系:
可以用精确的数学表达式来表示,即当变量_x_的取值确定后,_y_有唯一的确定值与之对应,如圆形的面积(A)与半径(r)之间的关系为

(2)非确定关系:
不能用精确的数学公式来表示,当变量_x_的取值确定后,_y_有若干种可能的取值,如父代身高与子代身高之间、房价与人口密度之间 , 等等 。这些变量间都存在着十分密切的关系 , 但是不能通过一个或者几个变量的值来精准地计算出另外一个变量的值 。统计学中把这些变量间的关系称为相关关系 , 把存在相关关系的变量称为相关变量 。
在一定的范围内 , 对一个变量的任意数值
,虽然没有另一个变量的确定数值
与之对应,但是却有一个特定
条件概率分布与之对应,这种变量的不确定关系,称为相关关系 。通常,相关变量间的关系一般分为因果关系和平行关系 。
(1)因果关系:一个变量的变化受另一个或几个变量的影响 , 如玉米的生长速度受种子的遗传特性、管理条件等影响 。统计学上采用回归分析方法来研究呈因果关系的相关变量之间关系 。表示原因的变量成为自变量,表示结果的变量成为因变量 。
(2)平行关系:变量之间互为因果或共同受另外的因素影响,如人的身高和胸围 。统计学上采用相关分析******来研究呈平行关系的相关变量之间的关系 。
1.3 回归模型的划分与应用1.回归模型的划分
回归问题分为模型学习和预测两个过程 。即先基于给定的训练数据集构建一个模型,再根据新的输入数据预测相应的输出 。
回归问题按照输入变量的个数可以分为一元回归和多元回归,按照输入变量和输出变量之间关系的类型人工智能计算器32,可以分为线性回归和非线性回归 。
2.回归模型的应用
如图9-1所示 。
▲图9-1 回归模型的应用
2 线性回归分析实战2.1 线性回归的建立与求解
首先来看一个工作年限与年收入的例子 。
工作年限是指职工以工资收入为全部或主要来源的工作时间 。工作年限的长短标志着职工参加工作时间的长短,也反映了他对社会和企业的贡献大小以及知识、经验、技术熟练程度的高低 。有5年工作经验的员工,往往要比只有两年工作经验的员工业务精通度、技术熟练度更高 , 所以工资也更高 。
小明在北京从事算法工作,整理了身边5个从事算法工作同事的数据,工作年限与年收入数据如表9-1所示(单位:十万元) 。
表9-1 工作年限与年收入表
序号工作年限(Years of )年收入( )2
试建立工作年限与年收入之间的关系式 。
(1)首先针对表9-1描出散点图如图9-2所示 。
从图9-2中可以看出,6个点整体呈现线状分布 , 这说明两个变量之间存在线性相关关系 。
▲图9-2 根据表9-1数据所做的散点图
其中,式(9-2)称为一元线性回归模型 。

如何从回归分析到算法基础?

文章插图
如何从回归分析到算法基础?

文章插图
(2)利用最小二乘法求解方程 。
2.2 求解回归模型案例
本节将通过完成计算,数据集见表9-2,文件名为data.xlsx 。
表9-2 回归分析数据集
工作年限年收入
【例9-1】回归分析,程序运行结果如图9-3所示
输入:
#!usr/bin/env python#_*_ coding:utf-8 _*_#1.导入需要的包import pandas as pdfrom sklearn import linear_modelimport matplotlib.pyplot as plt#2.通过pd.read_excel获取数据,并分别存入变量值X_parm,Y_parmdef get_data():data = https://www.jianzixun.com/pd.read_excel("data.xlsx")X_parm = []Y_parm = []for x ,y in zip(data['years'],data['income']):#存储在相应的list列表中X_parm.append([float(x)])Y_parm.append(float(y))return X_parm,Y_parmOutput#3.构建线性回归并计算def linear_model_main(X_ parm,Y_ parm,predict_value):# Create linear regression objectregr = linear_model.LinearRegression()#train modelregr.fit(X_parm,Y_parm)predict_outcome = regr.predict(predict_value)pred= {}pred['intercept'] = regr.intercept_pred['coefficient'] = regr.coef_pred['predicted_value'] = predict_outcomeR_Square=regr.score(X_parm,Y_parm)return pred , R_Square#4.绘出拟合图像def show_linear(X_parm,Y_parm):# Create linear regression objectregr = linear_model.LinearRegression()#train modelregr.fit(X_parm,Y_parm)predict_outcome = regr.predict(predict_value)pred= {}pred['intercept'] = regr.intercept_pred['coefficient'] = regr.coef_pred['predicted_value'] = predict_outcomereturn predif __name__=="__main__":X,Y =get_data()pred_value = https://www.jianzixun.com/7result,R_Square = linear_model_main(X,Y,pred_value)print ("y={:.3}*x+{}".format(result['coefficient'][0],result['intercept']))print ("Predicted value:",result['predicted_value'])show_linear(X,Y)print("R_Square={ :.3 }".format(R_Square))
输出:
y=2.0*x+20.0Predicted value: [34.]R_Square=0.826
▲图9-3 例9-1程序运行结果
通过上面的分析得到一元线性回归拟合图像 , 如图9-3所示 。最终得到回归方程为_y_=2_x_+20,同时绘制出了线性图形,回归系数为2.0,常数项为20.0 。当_x_=7时,预测得出_y_=34 。
2.3 检验、预测与控制1.平方和分解公式
2、 回归模型的显著性检验
3.预测和控制
4.计算推导案例
在表9-2数据集下:
【例9-2.1】计算回归模型中参数
输入:
import pandas as pddata = https://www.jianzixun.com/pd.read_excel("data.xlsx")#here ,use pandas to read cvs file.data.columns=["X","Y"]#修改列名data["X_Square"],data["Y_Square"]=data['X']**2,data['Y']**2data["XY"]=data['X']*data['Y']data["pred_Y"]=2*data['X']+20data.loc['Row_sum'] =data.apply(lambda x: x.sum())print(data[["X","Y","XY","X_Square","Y_Square","pred_Y"]])
输出:
XYX_SquareY_SquareXYpred_Y022044004024132596257526243016900120283534251156170304531259611553051140121160044042Row_sum3018020056421000180
接下来计算对应参数值 。
【例9-2.2】计算回归模型中参数
输入:
data = https://www.jianzixun.com/pd.read_excel("data.xlsx")data.columns=["X","Y"]data["XY"]=data['X']*data['Y']print("mean=n{}".format(data.iloc[0:6][["X","Y","XY"]].mean()))print("Lxy={}".format(sum((data["X"]-5)*(data["Y"]-30))))print("Lxx={}".format(sum((data["X"]-5)**2)))print("Lyy={}".format(sum((data["Y"]-30)**2)))
输出:
X5.000000Y30.000000XY166.666667dtype: float64Lxy=3850Lxx=675Lyy=22742
注:在执行例9-2.2代码过程中,要重新执行程序 , 不要在例9-2.1基础之上执行 。
参考9.2.3节中第一部分的公式,结合例9-2.2,得到数据如下:
所以年利润的95%的置信区间为[32?9.71,32+9.71]=[22.29人工智能计算器32 , 41.71] 。
本文摘自《 3破冰人工智能:从入门到实战》
《 3破冰人工智能:从入门到实战》创新性地从数学建模竞赛入手,深入浅出地讲解了人工智能领域的相关知识 。本书内容基于 3.6,从人工智能领域的数学出发,到在人工智能场景下的关键模块;从网络爬虫到数据存储,再到数据分析;从机器学习到深度学习 , 涉及自然语言处理、机器学习、深度学习、推荐系统和知识图谱等 。
此外,本书还提供了近140个代码案例和大量图表 , 全面系统地阐述了算法特性,个别案例算法来自于工作经验总结 , 力求帮助读者学以致用 。
本文到此结束,希望对大家有所帮助 。