线性回归推导及实例
线性回归推导及实例

数据点基本落在一条直线附近。
这告诉我们,变量X与Y的关系大致可看作是线性关系,即它们之间的相互关系可以用线性关系来描述。
但是由于并非所有的数据点完全落在一条直线上,因此X与Y的关系并没有确切到可以唯一地由一个X值确定一个Y值的程度。
其它因素,诸如其它微量元素的含量以及测试误差等都会影响Y的测试结果。
如果我们要研究X与Y的关系,可以作线性拟合(2-1-1)我们称(2-1-1)式为回归方程,a与b是待定常数,称为回归系数。
从理论上讲,(2-1-1)式有无穷多组解,回归分析的任务是求出其最佳的线性拟合。
二、最小二乘法原理如果把用回归方程计算得到的i值(i=1,2,…n)称为回归值,那么实际测量值y i与回归值i之间存在着偏差,我们把这种偏差称为残差,记为e i(i=1,2,3,…,n)。
这样,我们就可以用残差平方和来度量测量值与回归直线的接近或偏差程度。
残差平方和定义为:(2-1-2)所谓最小二乘法,就是选择a和b使Q(a,b)最小,即用最小二乘法得到的回归直线是在所有直线中与测量值残差平方和Q最小的一条。
由(2-1-2)式可知Q是关于a,b的二次函数,所以它的最小值总是存在的。
下面讨论的a和b的求法。
三、正规方程组根据微分中求极值的方法可知,Q(a,b)取得最小值应满足(2-1-3)由(2-1-2)式,并考虑上述条件,则(2-1-4)(2-1-4)式称为正规方程组。
解这一方程组可得(2-1-5) 其中(2-1-6)(2-1-7) 式中,L xy称为xy的协方差之和,L xx称为x的平方差之和。
如果改写(2-1-1)式,可得(2-1-8) 或(2-1-9)由此可见,回归直线是通过点的,即通过由所有实验测量值的平均值组成的点。
从力学观点看,即是N个散点的重心位置。
现在我们来建立关于例1的回归关系式。
将表2-1-1的结果代入(2-1-5)式至(2-1-7)式,得出a=1231.65b=-2236.63因此,在例1中灰铸铁初生奥氏体析出温度(y)与氮含量(x)的回归关系式为y=1231.65-2236.63x四、一元线性回归的统计学原理如果X和Y都是相关的随机变量,在确定x的条件下,对应的y值并不确定,而是形成一个分布。
线 性 回 归 方 程 推 导

线性回归——正规方程推导过程线性回归——正规方程推导过程我们知道线性回归中除了利用梯度下降算法来求最优解之外,还可以通过正规方程的形式来求解。
首先看到我们的线性回归模型:f(xi)=wTxif(x_i)=w^Tx_if(xi?)=wTxi?其中w=(w0w1.wn)w=begin{pmatrix}w_0w_1.w_nend{pmatrix}w=?w0?w1?. wn?,xi=(x0x1.xn)x_i=begin{pmatrix}x_0x_1.x_nend{pmatrix}xi?=?x0 x1.xn,m表示样本数,n是特征数。
然后我们的代价函数(这里使用均方误差):J(w)=∑i=1m(f(xi)?yi)2J(w)=sum_{i=1}^m(f(x_i)-y_i)^2J(w) =i=1∑m?(f(xi?)?yi?)2接着把我的代价函数写成向量的形式:J(w)=(Xw?y)T(Xw?y)J(w)=(Xw-y)^T(Xw-y)J(w)=(Xw?y)T(Xw?y) 其中X=(1x11x12?x1n1x21x22?x2n?1xm1xm2?xmn)X=begin{pmatrix}1 x_{11} x_{12} cdots x_{1n}1 x_{21} x_{22} cdots x_{2n}vdots vdots vdots ddots vdots1 x_{m1} x_{m2} cdots x_{mn}end{pmatrix}X=?11?1?x11?x21?xm1?x12?x22?xm2?x1n?x2n?xmn?最后我们对w进行求导,等于0,即求出最优解。
在求导之前,先补充一下线性代数中矩阵的知识:1.左分配率:A(B+C)=AB+ACA(B+C) = AB+ACA(B+C)=AB+AC;右分配率:(B+C)A=BA+CA(B+C)A = BA + CA(B+C)A=BA+CA2.转置和逆:(AT)?1=(A?1)T(A^T)^{-1}=(A^{-1})^T(AT)?1=(A?1)T,(AT)T=A(A^T)^T=A(AT)T=A3.矩阵转置的运算规律:(A+B)T=AT+BT(A+B)^T=A^T+B^T(A+B)T=AT+BT;(AB)T=BTAT(AB)^T=B^TA^T(AB)T=BTAT然后介绍一下常用的矩阵求导公式:1.δXTAXδX=(A+AT)Xfrac{delta X^TAX}{delta X}=(A+A^T)XδXδXTAX?=(A+AT)X2.δAXδX=ATfrac{delta AX}{delta X}=A^TδXδAX?=AT3.δXTAδX=Afrac{delta X^TA}{delta X}=AδXδXTA?=A然后我们来看一下求导的过程:1.展开原函数,利用上面的定理J(w)=(Xw?y)T(Xw?y)=((Xw)T?yT)(Xw?y)=wTXTXw?wTXTy?yTXw+yT yJ(w)=(Xw-y)^T(Xw-y)=((Xw)^T-y^T)(Xw-y)=w^TX^TXw-w^TX^Ty-y^TXw+y^TyJ(w)=(Xw?y)T(Xw?y)=((Xw)T?yT)(Xw?y)=wTXTXw?wTXTy?yT Xw+yTy2.求导,化简得,δJ(w)δw=(XTX+(XTX)T)w?XTy?(yTX)T=0?2XTXw?2XTy=0?XTXw=X Ty?w=(XXT)?1XTyfrac{delta J(w)}{delta w}=(X^TX+(X^TX)^T)w-X^Ty-(y^TX)^T=0implies2X^TXw-2X^Ty=0implies X^TXw=X^Tyimplies w=(XX^T)^{-1}X^TyδwδJ(w)?=(XTX+(XTX)T)w?XTy?(yTX)T=0?2XTX w?2XTy=0?XTXw=XTy?w=(XXT)?1XTy最后补充一下关于矩阵求导的一些知识,不懂可以查阅:矩阵求导、几种重要的矩阵及常用的矩阵求导公式这次接着一元线性回归继续介绍多元线性回归,同样还是参靠周志华老师的《机器学习》,把其中我一开始学习时花了较大精力弄通的推导环节详细叙述一下。
线性回归方程推导

线性回归方程推导sklearn - 线性回归(正规方程与梯度下降)一: 线性回归方程线性回归(英语:linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。
这种函数是一个或多个称为回归系数的模型参数的线性组合。
只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计。
这些模型被叫做线性模型。
最常用的线性回归建模是给定X值的y的条件均值是X的仿射函数。
不太一般的情况,线性回归模型可以是一个中位数或一些其他的给定X的条件下y的条件分布的分位数作为X的线性函数表示。
像所有形式的回归分析一样,线性回归也把焦点放在给定X值的y的条件概率分布,而不是X 和y的联合概率分布(多元分析领域)。
线性回归有很多实际用途。
分为以下两大类:如果目标是预测或者映射,线性回归可以用来对观测数据集的和X的值拟合出一个预测模型。
当完成这样一个模型以后,对于一个新增的X值,在没有给定与它相配对的y的情况下,可以用这个拟合过的模型预测出一个y给定一个变量y和一些变量X1X1.,XpXp{displaystyleX_{1}}X_1.,{displaystyle X_{p}}X_pX1?X1?.,Xp?Xp?,这些变量有可能与y相关,线性回归分析可以用来量化y与Xj之间相关性的强度,评估出与y不相关的,XjXj{displaystyle X_{j}}X_jXj?Xj?并识别出哪些XjXj{displaystyle X_{j}}X_jXj?Xj?的子集包含了关于y的冗余信息。
使用sklearn线性回归模型(jupyter)这里我们以波士顿的房价数据来进行使用分析(一): 导入sklearnimport numpy as np# 线性回归,拟合方程,求解系数, 一次幂# 线性方程:直来直去,不拐弯from sklearn.linear_model import LinearRegression# 导入数据集from sklearn import datasets# 导入数据分离的方法(获取数据后,一部分数据用来让回归模型学习,另一部分用来预测)from sklearn.model_selection import train_test_split(二): 获取波士顿房价数据# 获取的数据是numpy,ndarray类型data = datasets.load_boston()# 该数据内有完整的影响房价的因素和完整的房价信息,本次实验就是将数据分为两部分, 一部分用来训练模型,另一部分用来预测,最后将预测出来的数据和已有的完整信息进行对比,判断该模型是否适用于这组房价数据data # 查看data的数据结构data.feature_names # 查看影响房价的属性名# x是属性,特征,未知数X = data['data']X.shape # 运行结果是(506, 13), 506表示样本是506个, 每个样本采集了13个属性特征;13个属性,需要构建构建了13元一次方程# y 是房价的估值y = data['target']# X, y = datasets.load_boston(True) 获取到X, y的值和以上的一样(三): 使用模型进行预测X_train, X_test, y_train, y_test = train_test_split(X, y) # 将数据进行分离(默认是3:1); train_test_split(X, y)函数会随机打乱顺序display(X_train.shape, X_test.shape) # (379, 13) ; (127, 13) # 声明算法linear = LinearRegression()# 训练模型linear.fit(X_train, y_train) # X_train, y_train是之前分离出来用来训练模型的数据y_ = linear.predict(X_test).round(1) # X_test是影响房价的因素,该预测模型能根据影响房价的因素预测剩余部分的房价# 预估数据和实际数据比较print(y_)print(y_test)经过估计数据和实际数据对比,说明算法模型适用于数据(四): 自建方程预测数据与使用线性模型得到的数据对比假设波士顿的房价数据符合线性回归的特性,则我们可以通过构建线性方程来预测波士顿剩余部分的房价信息根据一次线性回归方程: f(X)=Xw+bf(X) = Xw+bf(X)=Xw+b 可推导得出: f(X)=w1x1+W2x2+.+w13x13+b f(X) = w_1x_1+W_2x_2+.+w_{13}x_{13}+bf(X)=w1?x1?+W2?x2?+.+w13?x13?+b (有13个影响房价的因素)代码如下:# 通过训练模型,可从模型中得出系数ww_ = linear.coef_# 通过训练模型,可从模型中得出截距bb_ = linear.intercept_# 自建方程def fun(w_, b_, X):return np.dot(X, w_)+b_# 调用方程得到预估的房价信息fun(w_, b_, X_test).round(1) # round(1)保留一位小数array([31.3, 13.4, 28.6, 20.5, 20.4, 19.4, 32.2, 24. , 25.8, 29.5,24.5,25.2, 31.9, 8.2, 20.9, 29.3, 22.3, 35.2, 16.4, 18.5, 30.8, 41.1, 16.2, 13.7, 17.7, 23.8, 7.8, 12. , 20.5, 15.3, 29.3, 26.8, 31.8, 26. , 30.4, 39.2, 25.3, 40.7, 11.6, 27.3, 16.7, 18.8, 19.5, 19.9, 20.7, 22.8, 17.4, 21.6, 23.3, 30. , 25.2, 23.7, 34.2, 18.2, 33.5, 16. , 28.3, 14.1, 24.2, 16.2, 16.7, 23.5, 16. , 21.4, 21.8, 28.2,25.7, 31.2, 18.8, 26.4, 28.3, 21.9, 27.5, 27.1, 27.1, 15. , 26. ,26.3, 13.2, 13.3, 26.1, 20.5, 16.8, 24.3, 36.6, 21.4, 8.3, 27.8,3.6, 19.2, 27.5, 33.6, 28.4, 34.3, 28.2, 13.3, 18. , 23.5, 30.4,32.9, 23.7, 30.5, 19.8, 19.5, 18.7, 30.9, 36.3, 8. , 18.2, 13.9, 15. , 26.4, 24. , 30.2, 20. , 5.6, 21.4, 22.9, 17.6, 32.8, 22.1, 32.6, 20.9, 19.3, 23.1, 21. , 21.5])# 使用sklesrn中的线性模型得到的预估房价信息linear.predict(X_test).round(1)array([31.3, 13.4, 28.6, 20.5, 20.4, 19.4, 32.2, 24. , 25.8, 29.5,24.5,25.2, 31.9, 8.2, 20.9, 29.3, 22.3, 35.2, 16.4, 18.5, 30.8, 41.1, 16.2, 13.7, 17.7, 23.8, 7.8, 12. , 20.5, 15.3, 29.3, 26.8, 31.8, 26. , 30.4, 39.2, 25.3, 40.7, 11.6, 27.3, 16.7, 18.8, 19.5, 19.9, 20.7, 22.8, 17.4, 21.6, 23.3, 30. , 25.2, 23.7, 34.2, 18.2, 33.5, 16. , 28.3, 14.1, 24.2, 16.2, 16.7, 23.5, 16. , 21.4, 21.8, 28.2,25.7, 31.2, 18.8, 26.4, 28.3, 21.9, 27.5, 27.1, 27.1, 15. , 26. ,26.3, 13.2, 13.3, 26.1, 20.5, 16.8, 24.3, 36.6, 21.4, 8.3, 27.8,3.6, 19.2, 27.5, 33.6, 28.4, 34.3, 28.2, 13.3, 18. , 23.5, 30.4,32.9, 23.7, 30.5, 19.8, 19.5, 18.7, 30.9, 36.3, 8. , 18.2, 13.9, 15. , 26.4, 24. , 30.2, 20. , 5.6, 21.4, 22.9, 17.6, 32.8, 22.1,32.6, 20.9, 19.3, 23.1, 21. , 21.5])通过自建模型获取预估数据与使用模型获取预估数据进行比较,两组数据完全一致;(五): 使用线性回归,求解斜率和截距根据最小二乘法: min?w∣∣Xw?y∣∣22min_{w}||Xw-y||_2^2wmin?∣∣Xw?y∣∣22? 推到得出公式: w=(XTX)?1XTyw = (X^TX)^{-1}X^Tyw=(XTX)?1XTy 以上公式只能求出w,我们可以先求出w再计算出b;但此处我们有更简单的方法:根据线性回归方程f(x)=w1x1+w2x2+b f(x) = w_1x_1+w_2x_2+bf(x)=w1?x1?+w2?x2?+b 我们可以将方程中的b 看成是w3x30w_3x_3^0w3?x30?,所以可得: f(x)=w1x11+w2x21+w3x30f(x) = w_1x_1^1+w_2x_2^1+w_3x_3^0f(x)=w1?x11?+w2?x21?+w3?x3 0?代码如下:import numpy as npfrom sklearn.linear_model import LinearRegressionfrom sklearn import datasetsX, y = datasets.load_boston(True)linear = LinearRegression()linear.fit(X,y)w_ = linear.coef_b_ = linear.intercept_# 向X中插入一列全是1的数据(任何数的0次方都是1)X = np.concatenate([X, np.ones(shape = (506, 1))], axis=1) # 根据最小二乘法的推导公式:w和b的值为(最后一个值是b) w = ((np.linalg.inv(X.T.dot(X))).dot(X.T)).dot(y)# 以上w的写法过于装逼,所以分解为:# A = X.T.dot(X) 求X和转置后的X的内积(公式中的XTX)# B = np.linalg.inv(A) 求A的逆矩阵(公式中的-1次方)# C = B.dot(X.T) 求以上矩阵和X的转置矩阵的内积(公式中的XT) # w = C.dot(y) 与y求内积,得出w和b运行结果:array([-1.08011358e-01, 4.64204584e-02, 2.05586264e-02, 2.68673382e+00,-1.77666112e+01, 3.80986521e+00, 6.92224640e-04, -1.47556685e+00,3.06049479e-01, -1.23345939e-02, -9.52747232e-01,9.31168327e-03,-5.24758378e-01, 3.64594884e+01])print(b_)运行结果:36.45948838509001扩展一: 最小二乘法和向量范数min?w∣∣Xw?y∣∣22min_{w}||Xw-y||_2^2wmi n?∣∣Xw?y∣∣22?右上角的2是平方右下角的2是向量2范数竖线内的表达式是向量根据最小二乘法的公式, 推导得出w=(XTX)?1XTyw = (X^TX)^{-1}X^Tyw=(XTX)?1XTy向量的1-范数(表示各个元素的绝对值的和)∣∣X∣∣1=∑i=1n∣xi∣||X||_1 = sumlimits_{i=1}^n |x_i|∣∣X∣∣1?=i=1∑n?∣xi?∣向量的2-范数(表示每个元素的平方和再开平方)∣∣X∣∣2=∑i=1nxi2||X||_2 = sqrt{suml imits_{i=1}^n x_i^2}∣∣X∣∣2?=i=1∑n?xi2?向量的无穷范数(所有向量元素绝对值中的最大值)∣∣X∣∣∞=max?1≥i≤n∣Xi∣||X||_{infty} = maxlimits_{1 geq i leq n}|X_i|∣∣X∣∣∞?=1≥i≤nmax?∣Xi?∣扩展二: 导数, 偏导数对函数f(x)=x2+3x+8f(x) = x^2+3x+8f(x)=x2+3x+8 求导得: f(x)′=2x+3f(x)' = 2x+3f(x)′=2x+3求导规则:参数求导为0参数乘变量求导为常数变量的次方求导: xyx^yxy求导为yxy?1yx^{y-1}yxy?1复合函数求导:$$(x^2-x)^2$$求导: 先将括号看成一个整体求导, 结果再乘以括号内的求导结果$$2(x^2-x)(2x-1)$$有多个变量得函数求导:对函数: f(x,y)=x2+xy+y2f(x, y) = x^2+xy+y^2f(x,y)=x2+xy+y2 求导:求导规则: 多变量函数只能针对某一个变量求导,此时将其他变量看成常数将x看成常数a: fa(y)=a2+ay+y2f_a(y) = a^2+ay+y^2fa?(y)=a2+ay+y2求导得:fa′(y)=a+2yf_a'(y) = a+2yfa′?(y)=a+2y故求导得: ?f?y(x,y)=x+2yfrac{partial f}{partial y}(x,y)=x+2y?y?f?(x,y)=x+2y实现线性回归的两种方式:正规方程梯度下降二: 正规方程(一): 损失函数最小二乘法:min?w∣∣Xw?y∣∣22minlimits_{w}||Xw-y||_2^2wmin?∣∣Xw?y∣∣22?当X和y都是常数时,按照向量2范数将上面的最小二乘法解开:f(w)=(Xw?y)2f(w)=(Xw-y)^2f(w)=(Xw?y)2将X,y替换成常数a,bf(w)=(aw?b)2f(w)=(aw-b)^2f(w)=(aw?b)2f(w)=a2w2?2abw+b2f(w)=a^2w^2 - 2abw + b^2f(w)=a2w2?2abw+b2 ?由于最小二乘法方程的函数值都是大雨或等于0的,所以此时得到一个开口向上的抛物线(一元二次方程)此时的f(w)f(w)f(w)就是损失函数,在此时求该函数的导数(抛物线函数顶点的导数为0)就能得到该函数的最小值,也就是最小损失f′(w)=2a2w?2ab=0f'(w)=2a^2w-2ab=0f′(w)=2a2w?2ab=0(二): 矩阵常用求导公式X的转置矩阵对X矩阵求导, 求解出来是单位矩阵dXTdX=Ifrac{dX^T}{dX} = IdXdXT?=IdXdXT=Ifrac{dX}{dX^T} = IdXTdX?=IX的转置矩阵和一个常数矩阵相乘再对X矩阵求导, 求解出来就是改常数矩阵dXTAdX=Afrac{dX^TA}{dX} = AdXdXTA?=AdAXdX=ATfrac{dAX}{dX} = A^TdXdAX?=ATdXAdX=ATfrac{dXA}{dX} = A^TdXdXA?=ATdAXdXT=Afrac{dAX}{dX^T} = AdXTdAX?=A(三): 正规方程矩阵推导过程此时X,w,y都是矩阵1: 公式化简1: 最小二乘法:f(w)=∣∣Xw?y∣∣22f(w) = ||Xw-y||_2^2f(w)=∣∣Xw?y∣∣22?2: 向量2范数:∣∣X∣∣2=∑i=1nxi2||X||_2 = sqrt{sumlimits_{i = 1}^nx_i^2}∣∣X∣∣2?=i=1∑n?xi2?3: 将向量2范数的公式带入到最小二乘法中得:f(w)=((Xw?y)2)2f(w)=(sqrt{(Xw-y)^2})^2f(w)=((Xw?y)2?)2f(w)=(Xw?y)2f(w)=(Xw-y)^2f(w)=(Xw?y)2由于X, w, y都是矩阵, 运算后还是矩阵; 矩阵得乘法是一个矩阵得行和另一个矩阵得列相乘; 所以矩阵的平方就是该矩阵乘以他本身的转置矩阵f(w)=(Xw?y)T(Xw?y)f(w)=(Xw-y)^T(Xw-y)f(w)=(Xw?y)T(Xw?y) 注意: 整体转置变成每个元素都转置时,若是有乘法, 则相乘的两个矩阵要交换位置; 如下所示!f(w)=(wTXT?yT)(Xw?y)f(w)=(w^TX^T-y^T)(Xw-y)f(w)=(wTXT?yT)(Xw ?y)f(w)=wTXTXw?wTXTy?yTXw+yTyf(w)=w^TX^TXw-w^TX^Ty-y^TXw+y^Tyf( w)=wTXTXw?wTXTy?yTXw+yTy 注意: 若想交换两个相乘的矩阵在算式中的位置,则交换之后双方都需要转置一次; 如下所示!f(w)=wTXTXw?(XTy)T(wT)T?yTXw+yTyf(w)=w^TX^TXw-(X^Ty)^T(w^T)^ T-y^TXw+y^Tyf(w)=wTXTXw?(XTy)T(wT)T?yTXw+yTyf(w)=wTXTXw?yTXw?yTXw+yTyf(w)=w^TX^TXw-y^TXw-y^TXw+y^Tyf(w)= wTXTXw?yTXw?yTXw+yTyf(w)=wTXTXw?2yTXw+yTyf(w) = w^TX^TXw - 2y^TXw + y^Ty f(w)=wTXTXw?2yTXw+yTyf(w)=wTXTXw?2yTXw+yTyf(w) = w^TX^TXw - 2y^TXw + y^Ty f(w)=wTXTXw?2yTXw+yTy这里 yTyy^TyyTy 是常数求导后为02yTXw2y^TXw2yTXw 求导:d(2yTX)wdw=(2yTX)T=2XT(yT)T=2XTyfrac{d(2y^TX)w}{dw}= (2y^TX)^T=2X^T(y^T)^T=2X^Tydwd(2yTX)w?=(2yTX)T=2XT(yT)T=2XTy wTXTXww^TX^TXwwTXTXw求导:dwTXTXwdw=d(wTXTX)wdw+dwT(XTXw)dw=(wTXTX)T+XTXw=XT(XT)T(wT)T+XTXw=2XTXwfrac{dw^TX^TXw}{dw}=frac{d(w^TX^TX)w}{dw} +frac{dw^T(X^TXw)}{dw}=(w^TX^TX)^T+X^TXw=X^T(X^T)^T(w^T)^T +X^TXw=2X^TXwdwdwTXTXw?=dwd(wTXTX)w?+dwdwT(XTXw)?=(wTXTX)T+XTXw=X T(XT)T(wT)T+XT Xw=2XTXwf′(w)=2XTXw?2XTyf'(w) = 2X^TXw - 2X^Tyf′(w)=2XTXw?2XTy令f′(w)=0f'(w)=0f′(w)=0,则:2XTXw?2XTy=02X^TXw - 2X^Ty = 02XTXw?2XTy=0XTXw=XTyX^TXw=X^TyXTXw=XTy矩阵运算没有除法,可以用逆矩阵实现除法的效果等式两边同时乘以XTXX^TXXTX的逆矩阵(XTX)?1(X^TX)^{-1}(XTX)?1 (XTX)?1(XTX)w=(XTX)?1XTy(X^TX)^{-1}(X^TX)w=(X^TX)^{-1}X^Ty(X TX)?1(XTX)w=(XTX)?1XTy Iw=(XTX)?1XTyIw=(X^TX)^{-1}X^TyIw=(XTX)?1XTy I是单位矩阵得到正规方程:w=(XTX)?1XTyw=(X^TX)^{-1}X^Tyw=(XTX)?1XTy(四): 数据挖掘实例(预测2020年淘宝双十一交易额)import numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionX = np.arange(2009, 2020) # 年份X = X -2008 # 年份数值太大,差别不明显y = np.array([0.5, 9.36, 52, 191, 350, 571, 912, 1207, 1682, 2135, 2684]) # 09年到19年的交易额假设X和y之间是一元三次的关系(按照前几年的数据走势提出的假设)f(x)=w1x+w2x2+w3x3+bf(x)=w_1x+w_2x^2+w_3x^3+bf(x) =w1?x+w2?x2 +w3?x3+bf(x)=w0x0+w1x1+w2x2+w3x3f(x)=w_0x^0+w_1x^1+w_2x^ 2+w_3x^3f(x) =w0?x0+w1?x1+w2?x2+w3?x3# X_oo = np.concatenate([a,a]) # 横着级联X_train = np.c_[X**0, X**1, X**2, X**3] # 竖着级联array([[ 1, 1, 1, 1],[ 1, 2, 4, 8],[ 1, 3, 9, 27],[ 1, 4, 16, 64],[ 1, 5, 25, 125],[ 1, 6, 36, 216],[ 1, 7, 49, 343],[ 1, 8, 64, 512],[ 1, 9, 81, 729],[ 1, 10, 100, 1000],[ 1, 11, 121, 1331]], dtype=int32)linear = LinearRegression(fit_intercept=False) # 声明算法; fit_intercept=False将截距设置为0, w0就是截距linear.fit(X_train, y) # 训练w_ = linear.coef_print(linear.coef_.round(2)) # 获取系数print(linear.intercept_) # 获取截距[ 58.77 -84.06 27.95 0.13]可以得到方程:f(x)=58.77?84.06x+27.95x2+0.13x3f(x)=58.77-84.06x+27.95x^2+0 .13x^3f(x)=58.77?84.06x+27.95x2+0.13x3X_test = np.linspace(0,12,126) # 线性分割(将0,12之间分成126分)等差数列包含1和12X_test = np.c_[X_test**0, X_test**1, X_test**2, X_test**3] # 和训练数据保持一致y_ = linear.predict(X_test) # 使用模型预测plt.plot(np.linspace(0,12,126), y_, color='g') # 绘制预测方程曲线plt.scatter(np.arange(1,12), y, color='red') # 绘制每年的真实销量# 定义函数fun = lambda x : w_[0] + w_[1]*x + w_[2]*x**2 + w_[-1]*x**3 '''3294.2775757576132'''三: 梯度下降梯度下降法的基本思想可以类比为一个下山的过程。
线性回归方程推导

线性回归方程推导线性回归——正规方程推导过程线性回归——正规方程推导过程我们知道线性回归中除了利用梯度下降算法来求最优解之外,还可以通过正规方程的形式来求解。
首先看到我们的线性回归模型:f(xi)=wTxif(x_i)=w^Tx_if(xi?)=wTxi?其中w=(w0w1.wn)w=begin{pmatrix}w_0w_1.w_nend{pmatrix}w=?w0 w1. wn?,xi=(x0x1.xn)x_i=begin{pmatrix}x_0x_1.x_nend{pmatrix}xi?=?x0 ?x 1?.xn?,m表示样本数,n是特征数。
然后我们的代价函数(这里使用均方误差):J(w)=∑i=1m(f(xi)?yi)2J(w)=sum_{i=1}^m(f(x_i)-y_i)^2J(w)=i=1∑m?(f(xi?)?yi?)2接着把我的代价函数写成向量的形式:J(w)=(Xw?y)T(Xw?y)J(w)=(Xw-y)^T(Xw-y)J(w)=(Xw?y)T(Xw?y) 其中X=(1x11x12?x1n1x21x22?x2n?1xm1xm2?xmn)X=begin{pmatrix}1 x_{11} x_{12} cdots x_{1n}1 x_{21} x_{22} cdots x_{2n}vdots vdots vdots ddots vdots1 x_{m1} x_{m2} cdots x_{mn}end{pmatrix}X=?11?1?x11?x21?xm1?x12?x22?xm2?x1n?x2n xmn最后我们对w进行求导,等于0,即求出最优解。
在求导之前,先补充一下线性代数中矩阵的知识:1.左分配率:A(B+C)=AB+ACA(B+C) = AB+ACA(B+C)=AB+AC;右分配率:(B+C)A=BA+CA(B+C)A = BA+ CA(B+C)A=BA+CA2.转置和逆:(AT)?1=(A?1)T(A^T)^{-1}=(A^{-1})^T(AT)?1=(A?1)T,(AT)T=A(A^T)^T=A(AT)T=A3.矩阵转置的运算规律:(A+B)T=AT+BT(A+B)^T=A^T+B^T(A+B)T=AT+BT;(AB)T=BTAT(AB)^T=B^TA^T(AB)T=BTAT然后介绍一下常用的矩阵求导公式:1.δXTAXδX=(A+AT)Xfrac{delta X^TAX}{delta X}=(A+A^T)XδXδXTAX?=(A+AT)X2.δAXδX=ATfrac{delta AX}{delta X}=A^TδXδAX?=AT3.δXTAδX=Afrac{delta X^TA}{delta X}=AδXδXTA?=A然后我们来看一下求导的过程:1.展开原函数,利用上面的定理J(w)=(Xw?y)T(Xw?y)=((Xw)T?yT)(Xw?y)=wTXTXw?wTXTy?yTX w+yT yJ(w)=(Xw-y)^T(Xw-y)=((Xw)^T-y^T)(Xw-y)=w^TX^TXw-w^TX^Ty-y^TXw+y^TyJ(w)=(Xw?y)T(Xw?y)=((Xw)T?yT)(Xw?y)=wTXTXw? wTXTy?yT Xw+yTy2.求导,化简得,δJ(w)δw=(XTX+(XTX)T)w?XTy?(yTX)T=0?2XTXw?2XTy=0?XT Xw=X Ty?w=(XXT)?1XTyfrac{delta J(w)}{delta w}=(X^TX+(X^TX)^T)w-X^Ty-(y^TX)^T=0implies2X^TXw-2X^Ty=0implies X^TXw=X^Tyimplies w=(XX^T)^{-1}X^TyδwδJ(w)?=(XTX+(XTX)T)w?XTy?(yTX)T=0?2XTXw?2XTy=0?XTXw=XTy?w=(XXT)?1XTy最后补充一下关于矩阵求导的一些知识,不懂可以查阅:矩阵求导、几种重要的矩阵及常用的矩阵求导公式这次接着一元线性回归继续介绍多元线性回归,同样还是参靠周志华老师的《机器学习》,把其中我一开始学习时花了较大精力弄通的推导环节详细叙述一下。
高中数学:线性回归方程

高中数学:线性回归方程一、推导2个样本点的线性回归方程例1、设有两个点A(x1,y1),B(x2,y2),用最小二乘法推导其线性回归方程并进行分析。
解:由最小二乘法,设,则样本点到该直线的“距离之和”为从而可知:当时,b有最小值。
将代入“距离和”计算式中,视其为关于b的二次函数,再用配方法,可知:此时直线方程为:设AB中点为M,则上述线性回归方程为可以看出,由两个样本点推导的线性回归方程即为过这两点的直线方程。
这和我们的认识是一致的:对两个样本点,最好的拟合直线就是过这两点的直线。
上面我们是用最小二乘法对有两个样本点的线性回归直线方程进行了直接推导,主要是分别对关于a和b的二次函数进行研究,由配方法求其最值及所需条件。
实际上,由线性回归系数计算公式:可得到线性回归方程为设AB中点为M,则上述线性回归方程为。
二、求回归直线方程例2、在硝酸钠的溶解试验中,测得在不同温度下,溶解于100份水中的硝酸钠份数的数据如下0 4 10 15 21 29 36 51 6866.7 71.0 76.3 80.6 85.7 92.9 99.4 113.6 125.1描出散点图并求其回归直线方程.解:建立坐标系,绘出散点图如下:由散点图可以看出:两组数据呈线性相关性。
设回归直线方程为:由回归系数计算公式:可求得:b=0.87,a=67.52,从而回归直线方程为:y=0.87x+67.52。
三、综合应用例3、假设关于某设备的使用年限x和所支出的维修费用y(万元)有如下统计资料:(1)求回归直线方程;(2)估计使用10年时,维修费用约是多少?解:(1)设回归直线方程为:(2)将x = 10代入回归直线方程可得y = 12.38,即使用10年时的维修费用大约是12.38万元。
线 性 回 归 方 程 推 导

线性回归损失函数推导-最大似然线性回归作为一种监督学习方法,在机器学习领域中属于最基本的优化问题,即根据现有的数据集,找到一个能够最好拟合这组数据的线性函数即可,根据这个线性函数对新来的数据进行预测。
本文将会覆盖最简单的线性回归的解释和标准方程求解最优线性回归参数,至于梯度下降法求解,会有单独的另外一篇博客介绍。
什么是回归分析显而易见,线性回归就是一种回归分析,那么什么是回归分析呢?简单的说,就是找到一条能够最好的代表所有数据的函数,这个函数可以是线性的,当然也可以是非线性的。
而通常情况下数据集并不会是严格的能够使用一条函数代表,所以就会需要我们引入误差的概念,就是说最小化这个误差就行了,通常使用的方法有:最小二乘法、最大似然估计法等,后面我们会介绍到,对于线性回归来说这两种方法其实是等价的。
最小二乘法:又称为最小平方法,就是把所有误差的平方相加,获得的值为总误差,最小化这个误差就是优化目标。
什么是线性回归(Linear Regression)线性回归就是上面提到的,能够代表现有数据集的函数是线性的,如下图所示:上图中的红色点就表示二维空间的数据集,而蓝色的线就是我们要求解的线性函数。
对于一个线性函数,我们通常的表示方法是:f(x)=wxb其中w和b都是常量参数,推广到多维空间,该表示方法同样适用:f(x1,x2?xn)=w1x1w2x2?wnxnb=[x1,x2?xn]?w1w2?wn?b为了统一参数,我们可以为x维度加上一个1,为w维度增加上一个b,这样线性函数就统一成了:f(x1,x2?xn)=[x1,x2?xn,1]?w1w2?wnb?=x′w′使用标准方程法求解有了线性回归的函数表示,我们的目标自然是获得w的最优值了,根据这个最优值就可以对新来的数据进行预测了。
那么如何获得最优的w呢?我们这里可以使用最小二乘法,误差函数为:L(w)=∑i(wxi?yi)2最小化线性误差:minwL(w)=minw∑i(wxi?yi)2要获得该函数的最小值,只需要对其求w的导数,并令导数为0即可:dL(w)dw=?L(w)?w1?L(w)?w2?L(w)?wn?=2∑ixixTiw?2∑ixiyi=0即求L(w)关于w的各个维度的偏导数,然后求和即可。
线 性 回 归 方 程 推 导

线性回归之最小二乘法线性回归Linear Regression——线性回归是机器学习中有监督机器学习下的一种简单的回归算法。
分为一元线性回归(简单线性回归)和多元线性回归,其中一元线性回归是多元线性回归的一种特殊情况,我们主要讨论多元线性回归如果因变量和自变量之间的关系满足线性关系(自变量的最高幂为一次),那么我们可以用线性回归模型来拟合因变量与自变量之间的关系.简单线性回归的公式如下:y^=ax+b hat y=ax+by^?=ax+b多元线性回归的公式如下:y^=θTx hat y= theta^T x y^?=θTx上式中的θthetaθ为系数矩阵,x为单个多元样本.由训练集中的样本数据来求得系数矩阵,求解的结果就是线性回归模型,预测样本带入x就能获得预测值y^hat yy^?,求解系数矩阵的具体公式接下来会推导.推导过程推导总似然函数假设线性回归公式为y^=θxhat y= theta xy^?=θx.真实值y与预测值y^hat yy^?之间必然有误差?=y^?yepsilon=haty-y?=y^?y,按照中心极限定理(见知识储备),我们可以假定?epsilon?服从正态分布,正态分布的概率密度公式为:ρ(x)=1σ2πe?(x?μ)22σ2rho (x)=frac {1}{sigmasqrt{2pi}}e^{-frac{(x-mu)^2}{2sigma^2}}ρ(x)=σ2π1e2σ2(x?μ)2?为了模型的准确性,我们希望?epsilon?的值越小越好,所以正态分布的期望μmuμ为0.概率函数需要由概率密度函数求积分,计算太复杂,但是概率函数和概率密度函数呈正相关,当概率密度函数求得最大值时概率函数也在此时能得到最大值,因此之后会用概率密度函数代替概率函数做计算.我们就得到了单个样本的误差似然函数(μ=0,σmu=0,sigmaμ=0,σ为某个定值):ρ(?)=1σ2πe?(?0)22σ2rho (epsilon)=frac {1}{sigmasqrt{2pi}}e^{-frac{(epsilon-0)^2}{2sigma^2}}ρ(?)=σ2π?1?e?2σ2(?0)2?而一组样本的误差总似然函数即为:Lθ(?1,?,?m)=f(?1,?,?m∣μ,σ2)L_theta(epsilon_1,cdots,e psilon_m)=f(epsilon_1,cdots,epsilon_m|mu,sigma^2)Lθ?(?1?,? ,?m?)=f(?1?,?,?m?∣μ,σ2)因为我们假定了?epsilon?服从正态分布,也就是说样本之间互相独立,所以我们可以把上式写成连乘的形式:f(?1,?,?m∣μ,σ2)=f(?1∣μ,σ2)?f(?m∣μ,σ2)f(epsilon_1,cdots,epsilon_m|mu,sigma^2)=f(epsilon_1|mu,sigma^2)*cdots *f(epsilon_m|mu,sigma^2)f(?1?,?,?m?∣μ,σ2)=f(?1?∣μ,σ2)?f(?m?∣μ,σ2) Lθ(?1,?,?m)=∏i=1mf(?i∣μ,σ2)=∏i=1m1σ2πe?(?i?0)22σ2L_theta(epsilon_1,cdots,epsilon_m)=prod^m_{i=1}f(epsilon _i|mu,sigma^2)=prod^m_{i=1}frac{1}{sigmasqrt{2pi}}e^{-frac{(epsilon_i-0)^2}{2sigma^2}}Lθ? (?1?,?,?m?)=i=1∏m?f(?i?∣μ,σ2)=i=1∏m?σ2π?1?e?2σ2(?i?0)2?在线性回归中,误差函数可以写为如下形式:i=∣yiy^i∣=∣yiθTxi∣epsilon_i=|y_i-haty_i|=|y_i-theta^Tx_i|?i?=∣yi?y^?i?∣=∣yi?θTxi?∣最后可以得到在正态分布假设下的总似然估计函数如下:Lθ(?1,?,?m)=∏i=1m1σ2πe?(?i?0)22σ2=∏i=1m1σ2πe?(yi θTxi)22σ2L_theta(epsilon_1,cdots,epsilon_m)=prod^m_{i=1} frac{1}{sigmasqrt{2pi}}e^{-frac{(epsilon_i-0)^2}{2sigma^2}}=pro d^m_{i=1}frac{1}{sigmasqrt{2pi}}e^{-frac{(y_i-theta^Tx_i)^2}{2sigma^2}}L θ?(?1?,?,?m?)=i=1∏m?σ2π?1?e?2σ2(?i?0)2?=i=1∏m?σ2π?1 e2σ2(yi?θTxi?)2?推导损失函数按照最大总似然的数学思想(见知识储备),我们可以试着去求总似然的最大值.遇到连乘符号的时候,一般思路是对两边做对数运算(见知识储备),获得对数总似然函数:l(θ)=loge(Lθ(?1,?,?m))=loge(∏i=1m1σ2πe?(yi?θTxi)22σ2)l(theta)=log_e(L_theta(epsilon_1,cdots,epsilon_m))=log_ e(prod^m_{i=1}frac{1}{sigmasqrt{2pi}}e^{-frac{(y_i-theta^Tx_i)^2}{2sigma^2}}) l(θ)=loge?(Lθ?(?1?,?,?m?))=loge?(i=1∏m?σ2π?1?e?2σ2(yi θTxi?)2?)l(θ)=loge(∏i=1m1σ2πe?(yi?θTxi)22σ2)=∑i=1mloge1σ2πexp(?(yi?θTxi)22σ2)=mloge1σ2π?12σ2∑i=1m(yi?θTxi)2l (theta) = log_e(prod^m_{i=1}frac {1}{sigmasqrt{2pi}}e^{-frac{(y_i-theta^Tx_i)^2}{2sigma^2}}) = sum_{i=1}^mlog_efrac {1}{sigmasqrt{2pi}}exp({-frac{(y_i-theta^Tx_i)^2}{2sigma^2} })=mlog_efrac{1}{sigmasqrt{2pi}}-frac{1}{2sigma^2}sum^m_{i= 1}(y^i-theta^Tx^i)^2l(θ)=loge?(i=1∏m?σ2π?1?e?2σ2(yi?θTxi?)2?)=i=1∑m?loge?σ2π?1?exp(?2σ2(yi?θTxi?)2?)=mloge?σ2π?1?2σ21?i=1∑m?(yi?θTxi)2前部分是一个常数,后部分越小那么总似然值越大,后部分则称之为损失函数,则有损失函数的公式J(θ)J(theta)J(θ):J(θ)=12∑i=1m(yi?θTxi)2=12∑i=1m(yi?hθ(xi))2=12∑i=1m (hθ(xi)?yi)2J(theta)=frac{1}{2}sum^m_{i=1}(y^i-theta^Tx^i)^2=frac{1}{2} sum^m_{i=1}(y^i-h_theta(x^i))^2=frac{1}{2}sum^m_{i=1}(h_the ta(x^i)-y^i)^2J(θ)=21?i=1∑m?(yi?θTxi)2=21?i=1∑m?(yi?hθ?(xi))2=21?i=1∑m?(hθ?(xi)?yi)2解析方法求解线性回归要求的总似然最大,需要使得损失函数最小,我们可以对损失函数求导.首先对损失函数做进一步推导:J(θ)=12∑i=1m(hθ(xi)?yi)2=12(Xθ?y)T(Xθ?y)J(theta)=fr ac{1}{2}sum^m_{i=1}(h_theta(x^i)-y^i)^2=frac{1}{2}(Xtheta-y )^T(Xtheta-y)J(θ)=21?i=1∑m?(hθ?(xi)?yi)2=21?(Xθ?y)T(Xθy)注意上式中的X是一组样本形成的样本矩阵,θthetaθ是系数向量,y也是样本真实值形成的矩阵,这一步转换不能理解的话可以试着把12(Xθ?y)T(Xθ?y)frac{1}{2}(Xtheta-y)^T(Xtheta-y)21?(Xθ?y) T(Xθ?y)带入值展开试试.J(θ)=12∑i=1m(hθ(xi)?yi)2=12(Xθ?y)T(Xθ?y)=12((Xθ)T? yT)(Xθ?y)=12(θTXT?yT)(Xθ?y)=12(θTXTXθ?yTXθ?θTXTy+yTy)J(theta)=frac{1}{2}sum^m_{i=1}(h_theta(x^i)-y^i)^2=frac{1} {2}(Xtheta-y)^T(Xtheta-y)=frac{1}{2}((Xtheta)^T-y^T)(Xtheta -y)=frac{1}{2}(theta^TX^T-y^T)(Xtheta-y)=frac{1}{2}(theta^T X^TXtheta-y^TXtheta-theta^TX^Ty+y^Ty)J(θ)=21?i=1∑m?(hθ?( xi)?yi)2=21?(Xθ?y)T(Xθ?y)=21?((Xθ)T?yT)(Xθ?y)=21?(θTXT yT)(Xθ?y)=21?(θTXTXθ?yTXθ?θTXTy+yTy)根据黑塞矩阵可以判断出J(θ)J(theta)J(θ)是凸函数,即J(θ)J(theta)J(θ)的对θthetaθ的导数为零时可以求得J(θ)J(theta)J(θ)的最小值.J(θ)?θ=12(2XTXθ?(yTX)T?XTy)=12(2XTXθ?XTy?XTy)=XTXθXTyfrac{partialJ(theta)}{partialtheta}=frac{1}{2}(2X^TXtheta-(y^TX)^T-X^Ty )=frac{1}{2}(2X^TXtheta-X^Ty-X^Ty)=X^TXtheta-X^Ty?θ?J(θ)? =21?(2XTXθ?(yTX)T?XTy)=21?(2XTXθ?XTy?XTy)=XTXθ?XTy 当上式等于零时可以求得损失函数最小时对应的θthetaθ,即我们最终想要获得的系数矩阵:XTXθ?XTy=0XTXθ=XTy((XTX)?1XTX)θ=(XTX)?1XTyEθ=(XTX)?1 XTyθ=(XTX)?1XTyX^TXtheta-X^Ty=0X^TXtheta=X^Ty((X^TX)^{-1}X^TX)theta=(X^TX)^{-1}X^TyEtheta=(X^TX)^{-1}X^Tytheta=(X^TX)^{-1}X^TyXTXθ?XTy=0XT Xθ=XTy((XTX)?1XTX)θ=(XTX)?1XTyEθ=(XTX)?1XTyθ=(XTX)?1XTy (顺便附上一元线性回归的系数解析解公式:θ=∑i=1m(xi?x ̄)(yi?y ̄)∑i=1m(xi?x  ̄)2theta=frac{sum^m_{i=1}(x_i-overline{x})(y_i-overline{y} )}{sum^m_{i=1}(x_i-overline{x})^2}θ=∑i=1m?(xi?x)2∑i=1m?( xi?x)(yi?y?)?)简单实现import numpy as npimport matplotlib.pyplot as plt# 随机创建训练集,X中有一列全为'1'作为截距项X = 2 * np.random.rand(100, 1)y = 5 + 4 * X + np.random.randn(100, 1)X = np.c_[np.ones((100,1)),X]# 按上面获得的解析解来求得系数矩阵thetatheta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)# 打印结果print(theta)# 测试部分X_test = np.array([[0],X_test = np.c_[(np.ones((2, 1))), X_test]print(X_test)y_predict = X_test.dot(theta)print(y_predict)plt.plot(X_test[:,-1], y_predict, 'r-')plt.axis([0, 2, 0, 15])plt.show()sklearn实现import numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegression X = 2 * np.random.rand(100, 1)y = 5 + 4 * X + np.random.randn(100, 1)X = np.c_[np.ones((100,1)),X]# 新建线性回归模型model = LinearRegression(fit_intercept=False)# 代入训练集数据做训练model.fit(X,y)# 打印训练结果print(model.intercept_,model.coef_)X_test = np.array([[0],X_test = np.c_[(np.ones((2, 1))), X_test]print(X_test)y_predict =model.predict(X_test)print(y_predict)plt.plot(X_test[:,-1], y_predict, 'r-')plt.axis([0, 2, 0, 15])plt.show()使用解析解的公式来求得地模型是最准确的.计算量非常大,这会使得求解耗时极多,因此我们一般用的都是梯度下降法求解.知识储备距离公式机器学习中常见的距离公式 - WingPig - 博客园中心极限定理是讨论随机变量序列部分和分布渐近于正态分布的一类定理。
回归计算公式举例说明

回归计算公式举例说明回归分析是统计学中常用的一种分析方法,用于研究变量之间的关系。
回归分析可以帮助我们了解自变量和因变量之间的关系,并用于预测未来的结果。
在回归分析中,有许多不同的公式和方法,其中最常见的是简单线性回归和多元线性回归。
本文将以回归计算公式举例说明为标题,介绍简单线性回归和多元线性回归的计算公式,并通过具体的例子来说明其应用。
简单线性回归。
简单线性回归是回归分析中最基本的形式,用于研究一个自变量和一个因变量之间的关系。
其数学模型可以表示为:Y = β0 + β1X + ε。
其中,Y表示因变量,X表示自变量,β0和β1分别表示回归方程的截距和斜率,ε表示误差项。
简单线性回归的目标是通过最小化误差项来估计回归方程的参数β0和β1。
为了说明简单线性回归的计算公式,我们假设有一组数据,其中自变量X的取值为{1, 2, 3, 4, 5},对应的因变量Y的取值为{2, 4, 5, 4, 5}。
我们可以通过最小二乘法来估计回归方程的参数β0和β1。
首先,我们需要计算自变量X和因变量Y的均值,分别记为X和Ȳ。
然后,我们可以计算回归方程的斜率β1和截距β0:β1 = Σ((Xi X)(Yi Ȳ)) / Σ((Xi X)²)。
β0 = Ȳβ1X。
其中,Σ表示求和符号,Xi和Yi分别表示第i个观测数据的自变量和因变量取值。
在我们的例子中,自变量X的均值为3,因变量Y的均值为4。
根据上面的公式,我们可以计算得到回归方程的斜率β1为0.6,截距β0为2。
因此,简单线性回归的回归方程可以表示为:Y = 2 + 0.6X。
通过这个回归方程,我们可以预测自变量X取不同值时对应的因变量Y的取值。
例如,当X取值为6时,根据回归方程可以预测Y的取值为6.6。
多元线性回归。
多元线性回归是回归分析中更复杂的形式,用于研究多个自变量和一个因变量之间的关系。
其数学模型可以表示为:Y = β0 + β1X1 + β2X2 + ... + βnXn + ε。
线 性 回 归 方 程 推 导

sklearn - 线性回归(正规方程与梯度下降)一: 线性回归方程线性回归(英语:linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。
这种函数是一个或多个称为回归系数的模型参数的线性组合。
只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计。
这些模型被叫做线性模型。
最常用的线性回归建模是给定X值的y的条件均值是X的仿射函数。
不太一般的情况,线性回归模型可以是一个中位数或一些其他的给定X的条件下y的条件分布的分位数作为X的线性函数表示。
像所有形式的回归分析一样,线性回归也把焦点放在给定X值的y的条件概率分布,而不是X 和y的联合概率分布(多元分析领域)。
线性回归有很多实际用途。
分为以下两大类:如果目标是预测或者映射,线性回归可以用来对观测数据集的和X的值拟合出一个预测模型。
当完成这样一个模型以后,对于一个新增的X值,在没有给定与它相配对的y的情况下,可以用这个拟合过的模型预测出一个y给定一个变量y和一些变量X1X1.,XpXp{displaystyleX_{1}}X_1.,{displaystyle X_{p}}X_pX1?X1?.,Xp?Xp?,这些变量有可能与y相关,线性回归分析可以用来量化y与Xj之间相关性的强度,评估出与y不相关的,XjXj{displaystyle X_{j}}X_jXj?Xj?并识别出哪些XjXj{displaystyle X_{j}}X_jXj?Xj?的子集包含了关于y的冗余信息。
使用sklearn线性回归模型(jupyter)这里我们以波士顿的房价数据来进行使用分析(一): 导入sklearnimport numpy as np# 线性回归,拟合方程,求解系数, 一次幂# 线性方程:直来直去,不拐弯from sklearn.linear_model import LinearRegression# 导入数据集from sklearn import datasets# 导入数据分离的方法(获取数据后,一部分数据用来让回归模型学习,另一部分用来预测)from sklearn.model_selection import train_test_split(二): 获取波士顿房价数据# 获取的数据是numpy,ndarray类型data = datasets.load_boston()# 该数据内有完整的影响房价的因素和完整的房价信息,本次实验就是将数据分为两部分, 一部分用来训练模型,另一部分用来预测,最后将预测出来的数据和已有的完整信息进行对比,判断该模型是否适用于这组房价数据data # 查看data的数据结构data.feature_names # 查看影响房价的属性名# x是属性,特征,未知数X = data['data']X.shape # 运行结果是(506, 13), 506表示样本是506个, 每个样本采集了13个属性特征;13个属性,需要构建构建了13元一次方程# y是房价的估值y = data['target']# X, y = datasets.load_boston(True) 获取到X, y的值和以上的一样(三): 使用模型进行预测X_train, X_test, y_train, y_test = train_test_split(X, y) # 将数据进行分离(默认是3:1); train_test_split(X, y)函数会随机打乱顺序display(X_train.shape, X_test.shape) # (379, 13) ; (127, 13) # 声明算法linear = LinearRegression()# 训练模型linear.fit(X_train, y_train) # X_train, y_train是之前分离出来用来训练模型的数据y_ = linear.predict(X_test).round(1) # X_test是影响房价的因素,该预测模型能根据影响房价的因素预测剩余部分的房价# 预估数据和实际数据比较print(y_)print(y_test)经过估计数据和实际数据对比,说明算法模型适用于数据(四): 自建方程预测数据与使用线性模型得到的数据对比假设波士顿的房价数据符合线性回归的特性,则我们可以通过构建线性方程来预测波士顿剩余部分的房价信息根据一次线性回归方程: f(X)=Xw+bf(X) = Xw+bf(X)=Xw+b 可推导得出: f(X)=w1x1+W2x2+.+w13x13+b f(X) = w_1x_1+W_2x_2+.+w_{13}x_{13} +bf(X)=w1?x1?+W2?x2?+.+w13?x13?+b (有13个影响房价的因素)代码如下:# 通过训练模型,可从模型中得出系数ww_ = linear.coef_# 通过训练模型,可从模型中得出截距bb_ = linear.intercept_# 自建方程def fun(w_, b_, X):return np.dot(X, w_)+b_# 调用方程得到预估的房价信息fun(w_, b_, X_test).round(1) # round(1)保留一位小数array([31.3, 13.4, 28.6, 20.5, 20.4, 19.4, 32.2, 24. , 25.8, 29.5,24.5,25.2, 31.9, 8.2, 20.9, 29.3, 22.3, 35.2, 16.4, 18.5, 30.8, 41.1,16.2, 13.7, 17.7, 23.8, 7.8, 12. , 20.5, 15.3, 29.3, 26.8, 31.8,26. , 30.4, 39.2, 25.3, 40.7, 11.6, 27.3, 16.7, 18.8, 19.5, 19.9,20.7, 22.8, 17.4, 21.6, 23.3, 30. , 25.2, 23.7, 34.2, 18.2, 33.5,16. , 28.3, 14.1, 24.2, 16.2, 16.7, 23.5, 16. , 21.4, 21.8, 28.2,25.7, 31.2, 18.8, 26.4, 28.3, 21.9, 27.5, 27.1, 27.1, 15. , 26. ,26.3, 13.2, 13.3, 26.1, 20.5, 16.8, 24.3, 36.6, 21.4, 8.3, 27.8,3.6, 19.2, 27.5, 33.6, 28.4, 34.3, 28.2, 13.3, 18. , 23.5, 30.4,32.9, 23.7, 30.5, 19.8, 19.5, 18.7, 30.9, 36.3, 8. , 18.2, 13.9,15. , 26.4, 24. , 30.2, 20. , 5.6, 21.4, 22.9, 17.6, 32.8, 22.1,32.6, 20.9, 19.3, 23.1, 21. , 21.5])# 使用sklesrn中的线性模型得到的预估房价信息linear.predict(X_test).round(1)array([31.3, 13.4, 28.6, 20.5, 20.4, 19.4, 32.2, 24. , 25.8, 29.5,24.5,25.2, 31.9, 8.2, 20.9, 29.3, 22.3, 35.2, 16.4, 18.5, 30.8, 41.1,16.2, 13.7, 17.7, 23.8, 7.8, 12. , 20.5, 15.3, 29.3, 26.8, 31.8,26. , 30.4, 39.2, 25.3, 40.7, 11.6, 27.3, 16.7, 18.8, 19.5, 19.9,20.7, 22.8, 17.4, 21.6, 23.3, 30. , 25.2, 23.7, 34.2, 18.2, 33.5,16. , 28.3, 14.1, 24.2, 16.2, 16.7, 23.5, 16. , 21.4, 21.8, 28.2,25.7, 31.2, 18.8, 26.4, 28.3, 21.9, 27.5, 27.1, 27.1, 15. , 26. ,26.3, 13.2, 13.3, 26.1, 20.5, 16.8, 24.3, 36.6, 21.4, 8.3, 27.8,3.6, 19.2, 27.5, 33.6, 28.4, 34.3, 28.2, 13.3, 18. , 23.5, 30.4,32.9, 23.7, 30.5, 19.8, 19.5, 18.7, 30.9, 36.3, 8. , 18.2, 13.9,15. , 26.4, 24. , 30.2, 20. , 5.6, 21.4, 22.9, 17.6, 32.8, 22.1,32.6, 20.9, 19.3, 23.1, 21. , 21.5])通过自建模型获取预估数据与使用模型获取预估数据进行比较,两组数据完全一致;(五): 使用线性回归,求解斜率和截距根据最小二乘法: min?w∣∣Xw?y∣∣22min_{w}||Xw-y||_2^2wmin?∣∣Xw?y∣∣22? 推到得出公式: w=(XTX)?1XTyw = (X^TX)^{-1}X^Tyw=(XTX)?1XTy 以上公式只能求出w,我们可以先求出w再计算出b;但此处我们有更简单的方法:根据线性回归方程f(x)=w1x1+w2x2+b f(x) = w_1x_1+w_2x_2+bf(x)=w1?x1?+w2?x2?+b 我们可以将方程中的b看成是w3x30w_3x_3^0w3?x30?,所以可得: f(x)=w1x11+w2x21+w3x30f(x) = w_1x_1^1+w_2x_2^1+w_3x_3^0f(x)=w1?x11?+w2?x21?+w3?x30?代码如下:import numpy as npfrom sklearn.linear_model import LinearRegressionfrom sklearn import datasetsX, y = datasets.load_boston(True)linear = LinearRegression()linear.fit(X,y)w_ = linear.coef_b_ = linear.intercept_# 向X中插入一列全是1的数据(任何数的0次方都是1)X = np.concatenate([X, np.ones(shape = (506, 1))], axis=1) # 根据最小二乘法的推导公式:w和b的值为(最后一个值是b)w = ((np.linalg.inv(X.T.dot(X))).dot(X.T)).dot(y)# 以上w的写法过于装逼,所以分解为:# A = X.T.dot(X) 求X和转置后的X的内积(公式中的XTX)# B = np.linalg.inv(A) 求A的逆矩阵(公式中的-1次方)# C = B.dot(X.T) 求以上矩阵和X的转置矩阵的内积(公式中的XT) # w = C.dot(y) 与y求内积,得出w和b运行结果:array([-1.08011358e-01, 4.64204584e-02, 2.05586264e-02, 2.68673382e+00,-1.77666112e+01, 3.80986521e+00, 6.92224640e-04, -1.47556685e+00,3.06049479e-01, -1.23345939e-02, -9.52747232e-01,9.31168327e-03,-5.24758378e-01, 3.64594884e+01])print(b_)运行结果:36.45948838509001扩展一: 最小二乘法和向量范数min?w∣∣Xw?y∣∣22min_{w}||Xw-y||_2^2wmi n?∣∣Xw?y∣∣22?右上角的2是平方右下角的2是向量2范数竖线内的表达式是向量根据最小二乘法的公式, 推导得出w=(XTX)?1XTyw = (X^TX)^{-1}X^Tyw=(XTX)?1XTy向量的1-范数(表示各个元素的绝对值的和)∣∣X∣∣1=∑i=1n∣xi∣||X||_1 = sumlimits_{i=1}^n |x_i|∣∣X∣∣1?=i=1∑n?∣xi?∣向量的2-范数(表示每个元素的平方和再开平方)∣∣X∣∣2=∑i=1nxi2||X||_2 = sqrt{suml imits_{i=1}^n x_i^2}∣∣X∣∣2?=i=1∑n?xi2?向量的无穷范数(所有向量元素绝对值中的最大值)∣∣X∣∣∞=max?1≥i≤n∣Xi∣||X||_{infty} = maxlimits_{1 geq i leq n}|X_i|∣∣X∣∣∞?=1≥i≤nmax?∣Xi?∣扩展二: 导数, 偏导数对函数f(x)=x2+3x+8f(x) = x^2+3x+8f(x)=x2+3x+8 求导得: f(x)′=2x+3f(x)' = 2x+3f(x)′=2x+3求导规则:参数求导为0参数乘变量求导为常数变量的次方求导: xyx^yxy求导为yxy?1yx^{y-1}yxy?1复合函数求导:$$(x^2-x)^2$$求导: 先将括号看成一个整体求导, 结果再乘以括号内的求导结果$$2(x^2-x)(2x-1)$$有多个变量得函数求导:对函数: f(x,y)=x2+xy+y2f(x, y) = x^2+xy+y^2f(x,y)=x2+xy+y2 求导:求导规则: 多变量函数只能针对某一个变量求导,此时将其他变量看成常数将x看成常数a: fa(y)=a2+ay+y2f_a(y) = a^2+ay+y^2fa?(y)=a2+ay+y2求导得:fa′(y)=a+2yf_a'(y) = a+2yfa′?(y)=a+2y故求导得: ?f?y(x,y)=x+2yfrac{partial f}{partial y}(x,y)=x+2y?y?f?(x,y)=x+2y实现线性回归的两种方式:正规方程梯度下降二: 正规方程(一): 损失函数最小二乘法:min?w∣∣Xw?y∣∣22minlimits_{w}||Xw-y||_2^2wmin?∣∣Xw?y∣∣22?当X和y都是常数时,按照向量2范数将上面的最小二乘法解开:f(w)=(Xw?y)2f(w)=(Xw-y)^2f(w)=(Xw?y)2将X,y替换成常数a,bf(w)=(aw?b)2f(w)=(aw-b)^2f(w)=(aw?b)2f(w)=a2w2?2abw+b2f(w)=a^2w^2 - 2abw + b^2f(w)=a2w2?2abw+b2 由于最小二乘法方程的函数值都是大雨或等于0的,所以此时得到一个开口向上的抛物线(一元二次方程)此时的f(w)f(w)f(w)就是损失函数,在此时求该函数的导数(抛物线函数顶点的导数为0)就能得到该函数的最小值,也就是最小损失f′(w)=2a2w?2ab=0f'(w)=2a^2w-2ab=0f′(w)=2a2w?2ab=0(二): 矩阵常用求导公式X的转置矩阵对X矩阵求导, 求解出来是单位矩阵dXTdX=Ifrac{dX^T}{dX} = IdXdXT?=IdXdXT=Ifrac{dX}{dX^T} = IdXTdX?=IX的转置矩阵和一个常数矩阵相乘再对X矩阵求导, 求解出来就是改常数矩阵dXTAdX=Afrac{dX^TA}{dX} = AdXdXTA?=AdAXdX=ATfrac{dAX}{dX} = A^TdXdAX?=ATdXAdX=ATfrac{dXA}{dX} = A^TdXdXA?=ATdAXdXT=Afrac{dAX}{dX^T} = AdXTdAX?=A(三): 正规方程矩阵推导过程此时X,w,y都是矩阵1: 公式化简1: 最小二乘法:f(w)=∣∣Xw?y∣∣22f(w) = ||Xw-y||_2^2f(w)=∣∣Xw?y∣∣22?2: 向量2范数:∣∣X∣∣2=∑i=1nxi2||X||_2 = sqrt{sumlimits_{i = 1}^nx_i^2}∣∣X∣∣2?=i=1∑n?xi2?3: 将向量2范数的公式带入到最小二乘法中得:f(w)=((Xw?y)2)2f(w)=(sqrt{(Xw-y)^2})^2f(w)=((Xw?y)2?)2f(w)=(Xw?y)2f(w)=(Xw-y)^2f(w)=(Xw?y)2由于X, w, y都是矩阵, 运算后还是矩阵; 矩阵得乘法是一个矩阵得行和另一个矩阵得列相乘; 所以矩阵的平方就是该矩阵乘以他本身的转置矩阵f(w)=(Xw?y)T(Xw?y)f(w)=(Xw-y)^T(Xw-y)f(w)=(Xw?y)T(Xw?y)注意: 整体转置变成每个元素都转置时,若是有乘法, 则相乘的两个矩阵要交换位置; 如下所示!f(w)=(wTXT?yT)(Xw?y)f(w)=(w^TX^T-y^T)(Xw-y)f(w)=(wTXT?yT)(Xw y)f(w)=wTXTXw?wTXTy?yTXw+yTyf(w)=w^TX^TXw-w^TX^Ty-y^TXw+y^Tyf( w)=wTXTXw?wTXTy?yTXw+yTy注意: 若想交换两个相乘的矩阵在算式中的位置,则交换之后双方都需要转置一次; 如下所示!f(w)=wTXTXw?(XTy)T(wT)T?yTXw+yTyf(w)=w^TX^TXw-(X^Ty)^T(w^T)^ T-y^TXw+y^Tyf(w)=wTXTXw?(XTy)T(wT)T?yTXw+yTyf(w)=wTXTXw?yTXw?yTXw+yTyf(w)=w^TX^TXw-y^TXw-y^TXw+y^Tyf(w)= wTXTXw?yTXw?yTXw+yTyf(w)=wTXTXw?2yTXw+yTyf(w) = w^TX^TXw - 2y^TXw + y^Ty f(w)=wTXTXw?2yTXw+yTyf(w)=wTXTXw?2yTXw+yTyf(w) = w^TX^TXw - 2y^TXw + y^Ty f(w)=wTXTXw?2yTXw+yTy这里 yTyy^TyyTy 是常数求导后为02yTXw2y^TXw2yTXw 求导:d(2yTX)wdw=(2yTX)T=2XT(yT)T=2XTyfrac{d(2y^TX)w}{dw}=(2y^TX)^ T=2X^T(y^T)^T=2X^Tydwd(2yTX)w?=(2yTX)T=2XT(yT)T=2XTy wTXTXww^TX^TXwwTXTXw求导:dwTXTXwdw=d(wTXTX)wdw+dwT(XTXw)dw=(wTXTX)T+XTXw=XT(XT)T(wT)T +XTXw=2XTXwfrac{dw^TX^TXw}{dw}=frac{d(w^TX^TX)w}{dw}+frac{dw^T(X^TXw)}{dw}=(w^TX^TX)^T+X^TXw=X^T(X^T)^T(w^T)^T+X^TXw=2X^TXwdwd wTXTXw?=dwd(wTXTX)w?+dwdwT(XTXw)?=(wTXTX)T+XTXw=XT(XT)T(wT)T+XT Xw=2XTXwf′(w)=2XTXw?2XTyf'(w) = 2X^TXw - 2X^Tyf′(w)=2XTXw?2XTy令f′(w)=0f'(w)=0f′(w)=0,则:2XTXw?2XTy=02X^TXw - 2X^Ty = 02XTXw?2XTy=0XTXw=XTyX^TXw=X^TyXTXw=XTy矩阵运算没有除法,可以用逆矩阵实现除法的效果等式两边同时乘以XTXX^TXXTX的逆矩阵(XTX)?1(X^TX)^{-1}(XTX)?1 (XTX)?1(XTX)w=(XTX)?1XTy(X^TX)^{-1}(X^TX)w=(X^TX)^{-1}X^Ty(X TX)?1(XTX)w=(XTX)?1XTyIw=(XTX)?1XTyIw=(X^TX)^{-1}X^TyIw=(XTX)?1XTy I是单位矩阵得到正规方程:w=(XTX)?1XTyw=(X^TX)^{-1}X^Tyw=(XTX)?1XTy(四): 数据挖掘实例(预测2020年淘宝双十一交易额)import numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionX = np.arange(2009, 2020) # 年份X = X -2008 # 年份数值太大,差别不明显y = np.array([0.5, 9.36, 52, 191, 350, 571, 912, 1207, 1682, 2135, 2684]) # 09年到19年的交易额假设X和y之间是一元三次的关系(按照前几年的数据走势提出的假设)f(x)=w1x+w2x2+w3x3+bf(x)=w_1x+w_2x^2+w_3x^3+bf(x)=w1?x+w2?x2 +w3?x3+bf(x)=w0x0+w1x1+w2x2+w3x3f(x)=w_0x^0+w_1x^1+w_2x^2+w_3x^3f(x) =w0?x0+w1?x1+w2?x2+w3?x3# X_oo = np.concatenate([a,a]) # 横着级联X_train = np.c_[X**0, X**1, X**2, X**3] # 竖着级联array([[ 1, 1, 1, 1],[ 1, 2, 4, 8],[ 1, 3, 9, 27],[ 1, 4, 16, 64],[ 1, 5, 25, 125],[ 1, 6, 36, 216],[ 1, 7, 49, 343],[ 1, 8, 64, 512],[ 1, 9, 81, 729],[ 1, 10, 100, 1000],[ 1, 11, 121, 1331]], dtype=int32)linear = LinearRegression(fit_intercept=False) # 声明算法; fit_intercept=False将截距设置为0, w0就是截距linear.fit(X_train, y) # 训练w_ = linear.coef_print(linear.coef_.round(2)) # 获取系数print(linear.intercept_) # 获取截距[ 58.77 -84.06 27.95 0.13]可以得到方程:f(x)=58.77?84.06x+27.95x2+0.13x3f(x)=58.77-84.06x+27.95x^2+0 .13x^3f(x)=58.77?84.06x+27.95x2+0.13x3X_test = np.linspace(0,12,126) # 线性分割(将0,12之间分成126分)等差数列包含1和12X_test = np.c_[X_test**0, X_test**1, X_test**2, X_test**3] # 和训练数据保持一致y_ = linear.predict(X_test) # 使用模型预测plt.plot(np.linspace(0,12,126), y_, color='g') # 绘制预测方程曲线plt.scatter(np.arange(1,12), y, color='red') # 绘制每年的真实销量# 定义函数fun = lambda x : w_[0] + w_[1]*x + w_[2]*x**2 + w_[-1]*x**3 '''3294.2775757576132'''三: 梯度下降梯度下降法的基本思想可以类比为一个下山的过程。
线性回归计算方法及公式PPT课件

(y = ax + b)
解释
其中(y)是因变量,(a)是斜率,(x)是自变量,(b)是截距。
实例二:多元线性回归分析
总结词
多个自变量的线性关系
详细描述
多元线性回归分析研究因变量与多个自变量之间的线性关 系。通过引入多个自变量,可以更全面地描述因变量的变 化规律。
公式
(y = a_1x_1 + a_2x_2 + ... + a_nx_n + b)
加权最小二乘法的公式
加权最小二乘法的公式是:(ŷ=β₀+β₁x₁+β₂x₂+...+βₙxₙ)其中,(w_i)是加权因 子,用于对不同观测值赋予不同的权重。
加权最小二乘法适用于数据存在异方差性的情况,通过给不同观测值赋予不同的 权重,能够更好地拟合数据。
主成分回归的公式
主成分回归的公式是:(ŷ=β₀+β₁z₁+β₂z₂+...+βₙzₙ)其中, (z_i)是主成分得分,通过对原始自变量进行线性变换得到。
误差项独立同分布
误差项被假设是相互独立的,并且具有相 同的分布(通常是正态分布)。
误差项无系统偏差
自变量无多重共线性
误差项被假设没有系统偏差,即它们不随 着自变量或因变量的值而变化。
自变量之间被假设没有多重共线性,即它 们是独立的或相关性很低。
02
线性回归模型
模型建立
确定因变量和自变量
首先需要确定研究的因变量和自变量, 以便建立线性回归模型。
以提供更稳定和准确的估 计。
(y = (X^T X + lambda I)^{1}X^T y)
其中(y)是因变量,(X)是自变量 矩阵,(lambda)是正则化参数
线性回归的原理和典型应用

线性回归的原理和典型应用线性回归是一种广泛应用于数据分析和预测的统计模型。
其原理是通过找到一条最佳拟合曲线来描述自变量和因变量之间的线性关系。
这条曲线可以用来预测新的因变量值。
线性回归模型的数学表示如下:y = β0 + β1*x1 + β2*x2 + ... + βn*xn + ε其中,y表示因变量,x1, x2, ..., xn表示自变量,β0, β1,β2, ..., βn表示回归系数,ε表示误差项。
线性回归的原理是通过最小化残差平方和来确定回归系数。
残差是实际观测值与预测值之间的差异,残差平方和则是所有残差平方之和。
通过最小化残差平方和,可以得到最佳的回归系数,使得预测值与实际观测值之间的差异最小化。
1.经济学:线性回归可以用来分析经济领域的因果关系。
例如,研究工资与教育水平、工作经验、性别等因素之间的关系,可以通过线性回归来预测工资水平。
2.市场营销:线性回归可以用来分析市场营销策略对销售额、市场份额等关键指标的影响。
例如,通过线性回归可以确定广告投入与销售额之间的关系,从而制定合适的广告预算。
3.医学研究:线性回归可以用来研究疾病与生活方式、遗传因素等因素之间的关系。
例如,通过线性回归可以分析吸烟与癌症风险的关系,以及其他疾病风险的预测。
4.社会科学:线性回归可以用来研究社会科学领域的因果关系,例如心理学、教育学等。
例如,通过线性回归可以研究学生的学习成绩与学习时间、动机等因素之间的关系。
总之,线性回归是一种常用的统计模型,可以用于各种领域的数据分析和预测。
它的原理是寻找一条最佳拟合曲线来描述自变量和因变量之间的线性关系,并通过最小化残差平方和来确定回归系数。
线性回归的典型应用包括经济学、市场营销、医学研究和社会科学等领域。
通过线性回归,我们可以了解因变量与自变量之间的关系,并进行预测和决策。
线性回归数学推导

线性回归数学推导⼀、数学基础似然函数概率(probability):描述已知参数时的随机变量的输出结果;似然函数(likelihood):⽤来描述已知随机变量输出结果时,未知参数的可能取值。
\[L(\theta | x) = f(x | \theta) \]似然函数和密度函数是完全不同的两个数学对象,前者是关于\(\theta\)的函数,后者是关于\(x\)的函数。
⾼斯分布数学期望(mean):试验中,每次可能结果的概率乘以其结果的总和。
(伯努利)⼤数定律:当试验次数⾜够多时,事件发⽣的频率⽆穷接近于该事件发⽣的概率。
伯努利试验:设试验E只可能有两种结果:“A”和“⾮A”n重伯努利试验:将E独⽴的重复地进⾏n次,则称这⼀穿重复的独⽴试验为n重伯努利试验⼆项分布(伯努利分布):将⼀伯努利试验重复了n次,在这n次试验中成功次数k,k为随机变量,称为⼆次随机变量,其分布称为⼆项分布\[P(X = k) = C_n^kp^k(1-p)^{n-k} , k = 1,2,...,n \]正态分布:⼜称“⾼斯分布”\[f(x) = \frac 1 {\sqrt{2 \pi }\sigma} e ^ {- \frac {(x^2-\mu^2)} {2\sigma^2}} \]对数公式\[\log AB = \log A + \log B \]矩阵计算矩阵转置:⾏变列,列变⾏。
矩阵乘法:A的列数必须与B的⾏数相等\[A = \left[ \begin{matrix} a & b & c \end{matrix} \right] \\\\ B = \left[ \begin{matrix} e & f & g \end{matrix} \right] \\\\ A^T B = ae + bf + cg \]矩阵求导\[\frac {d( { x ^ T A X } )} {d(x)} = 2Ax \\\\ \frac {d( { x ^ T A } )} {d(x)} = A \\\\ \frac {d( { A x} )} {d(x)} = {A ^ T} \]⼆、推导线性回归公式\[y = wx + b \]当存在多个特征参数的时候,不同的特征参数对⽬标函数值有不同的权重参数。
线 性 回 归 方 程 推 导

线性回归方程推导理论推导机器学习所针对的问题有两种:一种是回归,一种是分类。
回归是解决连续数据的预测问题,而分类是解决离散数据的预测问题。
线性回归是一个典型的回归问题。
其实我们在中学时期就接触过,叫最小二乘法。
线性回归试图学得一个线性模型以尽可能准确地预测输出结果。
?先从简单的模型看起:?首先,我们只考虑单组变量的情况,有:?使得?假设有m个数据,我们希望通过x预测的结果f(x)来估计y。
其中w和b都是线性回归模型的参数。
?为了能更好地预测出结果,我们希望自己预测的结果f(x)与y 的差值尽可能地小,所以我们可以写出代价函数(cost function)如下:?接着代入f(x)的公式可以得到:?不难看出,这里的代价函数表示的是预测值f(x)与实际值y之间的误差的平方。
它对应了常用的欧几里得距离简称“欧氏距离”。
基于均方误差最小化来求解模型的方法我们叫做“最小二乘法”。
在线性回归中,最小二乘法实质上就是找到一条直线,使所有样本数据到该直线的欧式距离之和最小,即误差最小。
?我们希望这个代价函数能有最小值,那么就分别对其求w和b的偏导,使其等于0,求解方程。
?先求偏导,得到下面两个式子:?很明显,公式中的参数m,b,w都与i无关,简化时可以直接提出来。
?另这两个偏导等于0:?求解方程组,解得:?这样根据数据集中给出的x和y,我们可以求出w和b来构建简单的线性模型来预测结果。
接下来,推广到更一般的情况:?我们假设数据集中共有m个样本,每个样本有n个特征,用X矩阵表示样本和特征,是一个m×n的矩阵:?用Y矩阵表示标签,是一个m×1的矩阵:?为了构建线性模型,我们还需要假设一些参数:?(有时还要加一个偏差(bias)也就是,为了推导方便没加,实际上结果是一样的)好了,我们可以表示出线性模型了:?h(x)表示假设,即hypothesis。
通过矩阵乘法,我们知道结果是一个n×1的矩阵。
线 性 回 归 方 程 推 导 ( 2 0 2 0 )

用python求解多元线性回归方程的权重和残差最近学金融的妹妹要处理数据写论文,对一个文科妹子来说,数学学不会,公式看不懂怎么破~作为姐姐的我看在眼里,疼在心里,打算帮妹妹解决掉数据计算这方面的问题。
原来就是求三元线性回归的残差啊,害,这有什么难的,妹妹就是不会算权重,一直在网上寻找已经算好权重的数据,为此特意开通了什么会员,咱也不知道咱也不敢问。
于是乎,利用自己所学的python,写下了这个程序。
简单介绍一下什么是线性回归?答:线性回归是通过一个或多个自变量与因变量之间进行建模的回归分析。
其中可以为一个或多个自变量之间的线性组合。
一元线性回归涉及到的变量只有一个;多元线性回归涉及到的变量有两个及两个以上。
线性关系模型为:w 为权重,b 为偏置项,其中 w 、x 为矩阵。
转换成矩阵如下:话不多说,上案例。
妹妹论文中的公式是:可简化为:根据推导得到:典型的多元线性回归方程,具体推导就不详细说明了,大家自行百度。
接下来上代码。
如果不怕麻烦想试一下’.txt’文件转‘.csv’ 文件,就看方法一,想直接用.xlsx转.csv的看方法二。
方法一:先将excel表转换成.txt文件接下来打开.txt文件,另存为’utf-8’格式,如果不是,会报错。
from numpy.linalg import inv # 矩阵求逆from numpy import dot # 求矩阵点乘import numpy as npimport pandas as pdtxt = np.loadtxt('file.txt')txtDF = pd.DataFrame(txt)txtDF.to_csv('file.csv', index=False)data = pd.read_csv('file.csv')dataset = pd.DataFrame(data,copy = True)test = dataset.iloc[:, 0:4]test = test.copy()X = test.iloc[:, [1,2,3]]Y = test.iloc[:, 0]theta = dot(dot(inv(dot(X.T, X)), X.T), Y)y = dot(theta, X.T)print('权重',theta) # 权重loss = np.array(Y-y) # 残差print('残差',loss)运行结果:权重和残差都可以算出来了。
线性回归案例分析

线性回归案例分析【篇一:线性回归案例分析】散布图—练习总评估价某建筑公司想了解位于某街区的住宅地产的销房产 79,760售价格y与总评估价x之 98,480间的相关程度到底有多 110,655大?于是从该街区去年 96,859售出的住宅中随机抽10 94,798的总评估价和销售资料 139,850如右表 170,34110 corporatecommunication 28.05.2007 corporatecommunication 28.05.2007 相关分析案例justin tao 销售价格y美元 95,000 116,500 156,900 111,000 110,110 100,000 130,000 170,400 211,500 185,000 绘制散布图,观察其相关关系输入数据点击graph scatterplot 弹出对话框,依次对应x、y输入变量列点击ok 散布图及关系分析从散布图可以看出:总评估价值x与销售价格y存在线性正相关,相关程度较大;随x增大,y有增长趋corporatecommunication 28.05.2007 corporatecommunication 28.05.2007 计算相关系数输入数据点击stat basic statistics correlation… 弹出对话框,输入x、y变量列点击ok 散布图(相关分析)案例下面是表示某公司广告费用和销售额之间关系的资试求这家公司的广告费和销售额的相关系数广告费 (10万) 销售额 (100万) 2022 15 17 23 18 25 10 20 得出相关系数及检验p值corporatecommunication 28.05.2007 corporatecommunication 28.05.2007 0.002 0.05 (留意水准) ,广告费和销售额的相关关系是有影响的 corporatecommunication 28.05.2007 corporatecommunication 28.05.2007 回归分析案例通过下例观察回归分析和决定系数。
线 性 回 归 方 程 推 导

线性回归及其变式Q1:线性回归的原理Q2:线性回归损失函数的推导过程Q3:求解线性回归损失函数的方法有哪些Q4:如何解决共线性(待补充)Q5:如何防止过拟合Q6:分布式训练怎么做(待补充)Q7:正则化的目的和方法Q8:为什么L1正则化能产生稀疏解,L2则不可以Q1:线性回归的原理线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
其表达形式为y = w'x+e,e 为误差服从均值为0的正态分布。
可以利用梯度下降法等方法求出权重w'的值。
Q2:线性回归损失函数的推导过程首先线性回归有3个假设:(1)误差存在且为;(2)误差的分布基本符合正态分布,因为通常我们不知道是什么分布的时候,根据经验来说正态分布往往效果不错。
(3)每一个样本的误差都是独立同分布的,且满足随机性。
于是我们可以得到第个样本的误差为的概率是:然后,?是真实值与预测值之间的误差,于是把这两个值代进去。
这是一个似然函数,我们希望它的值越大越好!常规操作取一个log,于是就有由此可以得到线性回归的损失函数或者说目标函数就是之所以有1-2这么个系数,只是因为后续用到梯度下降的时候,求导可以把它约掉,方便计算而已,这不会影响最终的结果。
而且注意噢,这里可是没有除以m的!!!!Q3:求解线性回归损失函数的方法有哪些(1)梯度下降法梯度下降又可以是批梯度下降,也可以是随机梯度下降。
下面是只有一个样本的时候的批梯度下降的公式推导。
当有m个样本时,在学习速率后面做一个累加即可。
如果是随机梯度下降,每次只需要用到一个样本就行了。
(2)正规方程组上一个简单的推导过程。
Q4:如何解决共线性Q5:如何防止过拟合通过添加正则化项来防止过拟合。
(1)Lasso回归使用L1正则化(2)Ridge回归使用L2正则化(3)ElasticNet回归使用L1+L2正则化Lasso回归可以将系数收缩到0,从而达到变量选择的效果,这是一种非常流行的变量选择方法。
线 性 回 归 方 程 推 导 ( 2 0 2 0 )

多元线性回归推导过程常用算法一多元线性回归详解1此次我们来学习人工智能的第一个算法:多元线性回归.文章会包含必要的数学知识回顾,大部分比较简单,数学功底好的朋友只需要浏览标题,简单了解需要哪些数学知识即可.本章主要包括以下内容数学基础知识回顾什么是多元线性回归多元线性回归的推导过程详解如何求得最优解详解数学基础知识回顾我们知道,y=ax+b这个一元一次函数的图像是一条直线.当x=0时,y=b,所以直线经过点(0,b),我们把当x=0时直线与y轴交点到x轴的距离称为直线y=ax+b图像在x轴上的截距,其实截距就是这个常数b.(有点拗口,多读两遍)截距在数学中的定义是:直线的截距分为横截距和纵截距,横截距是直线与X轴交点的横坐标,纵截距是直线与Y轴交点的纵坐标。
根据上边的例子可以看出,我们一般讨论的截距默认指纵截距.既然已知y=ax+b中b是截距,为了不考虑常数b的影响,我们让b=0,则函数变为y=ax.注意变换后表达式的图像.当a=1时,y=ax的图像是经过原点,与x轴呈45°夹角的直线(第一,三象限的角平分线),当a的值发生变化时,y=ax 的图像与x轴和y轴的夹角也都会相应变化,我们称为这条直线y=ax的倾斜程度在发生变化,又因为a是决定直线倾斜程度的唯一的量(即便b不等于0也不影响倾斜程度),那么我们就称a为直线y=ax+b的斜率.斜率在数学中的解释是表示一条直线(或曲线的切线)关于(横)坐标轴倾斜程度的量.还是y=ax+b,我们知道这个函数的图像是一条直线,每个不同的x对应着直线上一点y.那么当自变量x的值变化的时候,y值也会随之变化.数学中我们把x的变化量成为Δx,把对应的y的变化量成为Δy,自变量的变化量Δx与因变量的变化量Δy的比值称为导数.记作y'.y'=Δy-Δx常用的求导公式在这部分不涉及,我们用到一个记住一个即可.4-矩阵和向量什么是向量:向量就是一个数组.比如[1,2,3]是一个有三个元素的向量.有行向量和列向量之分,行向量就是数字横向排列:X=[1,2,3],列向量是数字竖向排列,如下图什么是矩阵:矩阵就是元素是数组的数组,也就是多维数组,比如[[1,2,3],[4,5,6]]是一个两行三列的矩阵,也叫2*3的矩阵. 行代表内层数组的个数,列代表内层数组的元素数.一个矩阵中的所有数组元素相同.5-向量的运算:一个数乘以一个向量等于这个数同向量中的每个元素相乘,结果还是一个向量.2 * [1,2,3] = [2,4,6]一个行向量乘以一个列向量,是两个向量对位相乘再相加,结果是一个实数.= 11 + 22 + 3*3 = 14附加:转置转置用数学符号T来表示,比如W向量的转置表示为.转置就是将向量或者矩阵旋转九十度.一个行向量的转置是列向量,列向量的转置是行向量.一个m*n的矩阵转置是n*m的矩阵.注:以上概念完全是为了读者能容易理解,并不严谨,若想知道上述名词的严谨解释,请自行百度.什么是多元线性回归我们知道y=ax+b是一元一次方程,y=ax1+bx2+c(1和2是角标,原谅我的懒)是二元一次方程.其中,"次"指的是未知数的最大幂数,"元"指的是表达式中未知数的个数(这里就是x的个数).那么"多元"的意思可想而知,就是表达式中x(或者叫自变量,也叫属性)有很多个.当b=0时,我们说y=ax,y和x的大小始终符合y-x=a,图像上任意一点的坐标,y值都是x值的a倍.我们把这种横纵坐标始终呈固定倍数的关系叫做"线性".线性函数的图像是一条直线.所以我们知道了多元线性回归函数的图像一定也是一条直线.现在我们知道了多元线性回归的多元和线性,而回归的概念我们在人工智能开篇(很简短,请点搜索"回归"查看概念)中有讲述,所以多元线性回归就是:用多个x(变量或属性)与结果y的关系式来描述一些散列点之间的共同特性.这些x和一个y关系的图像并不完全满足任意两点之间的关系(两点一线),但这条直线是综合所有的点,最适合描述他们共同特性的,因为他到所有点的距离之和最小也就是总体误差最小.所以多元线性回归的表达式可以写成:y= w0x0 + w1x1 + w2x2 + . + wnxn (0到n都是下标哦)我们知道y=ax+b这个线性函数中,b表示截距.我们又不能确定多元线性回归函数中预测出的回归函数图像经过原点,所以在多元线性回归函数中,需要保留一项常数为截距.所以我们规定 y= w0x0 + w1x1 + w2x2 + . + wnxn中,x0=1,这样多元线性回归函数就变成了: y= w0 + w1x1 + w2x2 + . + wnxn,w0项为截距.如果没有w0项,我们 y= w0x0 + w1x1 + w2x2 + . + wnxn就是一个由n+1个自变量所构成的图像经过原点的直线函数.那么就会导致我们一直在用一条经过原点的直线来概括描述一些散列点的分布规律.这样显然增大了局限性,造成的结果就是预测出的结果函数准确率大幅度下降.有的朋友还会纠结为什么是x0=1而不是x2,其实不管是哪个自变量等于1,我们的目的是让函数 y= w0x0 + w1x1 + w2x2 + . + wnxn编程一个包含常数项的线性函数.选取任何一个x都可以.选x0是因为他位置刚好且容易理解.多元线性回归的推导过程详解1-向量表达形式我们前边回顾了向量的概念,向量就是一个数组,就是一堆数.那么表达式y= w0x0 + w1x1 + w2x2 + . + wnxn是否可以写成两个向量相乘的形式呢?让我们来尝试一下.假设向量W= [w1,w2.wn]是行向量,向量X= [x1,x2.xn],行向量和列向量相乘的法则是对位相乘再相加, 结果是一个实数.符合我们的逾期结果等于y,所以可以将表达式写成y=W * X.但是设定两个向量一个是行向量一个是列向量又容易混淆,所以我们不如规定W和X都为列向量.所以表达式可以写成 (还是行向量)与向量X 相乘.所以最终的表达式为:y= * X,其中也经常用θ(theta的转置,t是上标)表示.此处,如果将两个表达式都设为行向量,y=W * 也是一样的,只是大家为了统一表达形式,选择第一种形式而已.2-最大似然估计最大似然估计的意思就是最大可能性估计,其内容为:如果两件事A,B 相互独立,那么A和B同时发生的概率满足公式P(A , B) = P(A) * P(B)P(x)表示事件x发生的概率.如何来理解独立呢?两件事独立是说这两件事不想关,比如我们随机抽取两个人A和B,这两个人有一个共同特性就是在同一个公司,那么抽取这两个人A和B的件事就不独立,如果A和B没有任何关系,那么这两件事就是独立的.我们使用多元线性回归的目的是总结一些不想关元素的规律,比如以前提到的散列点的表达式,这些点是随机的,所以我们认为这些点没有相关性,也就是独立的.总结不相关事件发生的规律也可以认为是总结所有事件同时发生的概率,所有事情发生的概率越大,那么我们预测到的规律就越准确.这里重复下以前我们提到的观点.回归的意思是用一条直线来概括所有点的分布规律,并不是来描述所有点的函数,因为不可能存在一条直线连接所有的散列点.所以我们计算出的值是有误差的,或者说我们回归出的这条直线是有误差的.我们回归出的这条线的目的是用来预测下一个点的位置.考虑一下,一件事情我们规律总结的不准,原因是什么?是不是因为我们观察的不够细或者说观察的维度不够多呢?当我们掷一个骰子,我们清楚的知道他掷出的高度,落地的角度,反弹的力度等等信息,那上帝视角的我们是一定可以知道他每次得到的点数的.我们观测不到所有的信息,所以我们认为每次投骰子得到的点数是不确定的,是符合一定概率的,未观测到的信息我们称为误差.一个事件已经观察到的维度发生的概率越大,那么对应的未观测到的维度发生的概率就会越小.可以说我们总结的规律就越准确.根据最大似然估计P(y) = P(x1,x2 . xn)= P(x1) * P(x2) . P(xn)当所有事情发生的概率为最大时,我们认为总结出的函数最符合这些事件的实际规律.所以我们把总结这些点的分布规律问题转变为了求得P(x1,x2 . xn)= P(x1) * P(x2) . P(xn)的发生概率最大.3-概率密度函数数学中并没有一种方法来直接求得什么情况下几个事件同时发生的概率最大.所以引用概率密度函数.首先引入一点概念:一个随机变量发生的概率符合高斯分布(也叫正太分布).此处为单纯的数学概念,记住即可.高斯分布的概率密度函数还是高斯分布.公式如下:公式中x为实际值,u为预测值.在多元线性回归中,x就是实际的y,u 就是θ * X.既然说我们要总结的事件是相互独立的,那么这里的每个事件肯定都是一个随机事件,也叫随机变量.所以我们要归纳的每个事件的发生概率都符合高斯分布.什么是概率密度函数呢?它指的就是一个事件发生的概率有多大,当事件x带入上面公式得到的值越大,证明其发生的概率也越大.需要注意,得到的并不是事件x发生的概率,而只是知道公式的值同发生的概率呈正比而已.如果将y= θT* X中的每个x带入这个公式,得到如下函数求得所有的时间发生概率最大就是求得所有的事件概率密度函数结果的乘积最大,则得到:求得最大时W的值,则总结出了所有事件符合的规律.求解过程如下(这里记住,我们求得的是什么情况下函数的值最大,并不是求得函数的解):公式中,m为样本的个数,π和σ为常数,不影响表达式的大小.所以去掉所有的常数项得到公式:因为得到的公式是一个常数减去这个公式,所以求得概率密度函数的最大值就是求得这个公式的最小值.这个公式是一个数的平方,在我国数学资料中把他叫做最小二乘公式.所以多元线性回归的本质就是最小二乘.J(w)′=2(Y?Xw)TXJ(w)^{#x27;}=2(Y-Xtextbf{w})^TXJ(w)′=2(Y?Xw )TXSystem.out.print("("+xy[0]+",");X为自变量向量或矩阵,X维度为N,为了能和W0对应,X需要在第一行插入一个全是1的列。
线性回归-例子

h( x) h ( x) 0 1 x1 2 x2 n xn
g ( x)
T
1
T x
1 e 1 g ( z) z 1 e
13
西北工业大学
logistic回归c回归模型 多分类Logistic回归模型
14
西北工业大学
logistic回归
6
西北工业大学
梯度下降-实例(1)
函数,如下
曲面图:
7
西北工业大学
梯度下降-实例(1)
等高线图:
8
西北工业大学
梯度下降回归-----缺陷
靠近极小值时速度减慢。 可能会'之字型'地下降。
9
西北工业大学
梯度下降-实例(2)
表达式
Where is 最小值? 远离(1,1)点 和 在(1,1)点领域内的变化缓急?
z
18
西北工业大学
logistic回归系数的意义
以x1的回归系数 1 为例 一个暴露因素:暴露为1,非暴露为0。
P ln(Odds ) ln( ) 0 1 x1 2 x2 1 P
除x1,固定其它自变量
1
1
2
1
2
19 西北工业大学
logistic回归—实例(1)
饮酒(x=1),患病概率和未患病概率分别为
exp( 0 1 ) P 1 exp( 0 1 )
1 P 1 exp( 0 1 )
不饮酒(x=0),患病概率和未患病概率分别为
exp( 0 ) P 1 exp( 0 )
1 P 1 exp( 0 )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据点基本落在一条直线附近。
这告诉我们,变量X与Y的关系大致可看作是线性关系,即它们之间的相互关系可以用线性关系来描述。
但是由于并非所有的数据点完全落在一条直线上,因此X与Y的关系并没有确切到可以唯一地由一个X值确定一个Y值的程度。
其它因素,诸如其它微量元素的含量以及测试误差等都会影响Y的测试结果。
如果我们要研究X与Y的关系,可以作线性拟合(2-1-1)我们称(2-1-1)式为回归方程,a与b是待定常数,称为回归系数。
从理论上讲,(2-1-1)式有无穷多组解,回归分析的任务是求出其最佳的线性拟合。
二、最小二乘法原理如果把用回归方程计算得到的i值(i=1,2,…n)称为回归值,那么实际测量值y i与回归值i之间存在着偏差,我们把这种偏差称为残差,记为e i(i=1,2,3,…,n)。
这样,我们就可以用残差平方和来度量测量值与回归直线的接近或偏差程度。
残差平方和定义为:(2-1-2)所谓最小二乘法,就是选择a和b使Q(a,b)最小,即用最小二乘法得到的回归直线是在所有直线中与测量值残差平方和Q最小的一条。
由(2-1-2)式可知Q是关于a,b的二次函数,所以它的最小值总是存在的。
下面讨论的a和b的求法。
三、正规方程组根据微分中求极值的方法可知,Q(a,b)取得最小值应满足(2-1-3)由(2-1-2)式,并考虑上述条件,则(2-1-4)(2-1-4)式称为正规方程组。
解这一方程组可得(2-1-5) 其中(2-1-6)(2-1-7) 式中,L xy称为xy的协方差之和,L xx称为x的平方差之和。
如果改写(2-1-1)式,可得(2-1-8) 或(2-1-9)由此可见,回归直线是通过点的,即通过由所有实验测量值的平均值组成的点。
从力学观点看,即是N个散点的重心位置。
现在我们来建立关于例1的回归关系式。
将表2-1-1的结果代入(2-1-5)式至(2-1-7)式,得出a=1231.65b=-2236.63因此,在例1中灰铸铁初生奥氏体析出温度(y)与氮含量(x)的回归关系式为y=1231.65-2236.63x四、一元线性回归的统计学原理如果X和Y都是相关的随机变量,在确定x的条件下,对应的y值并不确定,而是形成一个分布。
当X 取确定的值时,Y的数学期望值也就确定了,因此Y的数学期望是x的函数,即E(Y|X=x)=f(x) (2-1-10) 这里方程f(x)称为Y对X的回归方程。
如果回归方程是线性的,则E(Y|X=x)=α+βx (2-1-11) 或Y=α+βx+ε(2-1-12) 其中ε―随机误差从样本中我们只能得到关于特征数的估计,并不能精确地求出特征数。
因此只能用f(x)的估计式来取代(2-1-11)式,用参数a和b分别作为α和β的估计量。
那么,这两个估计量是否能够满足要求呢?1. 无偏性把(x,y)的n组观测值作为一个样本,由样本只能得到总体参数α和β的估计值。
可以证明,当满足下列条件:(1)(x i,y i)是n个相互独立的观测值(2)εi是服从分布的随机变量则由最小二乘法得到的a与b分别是总体参数α和β的无偏估计,即E(a)= αE(b)=β由此可推知E()=E(y)即y是回归值在某点的数学期望值。
2. a和b的方差可以证明,当n组观测值(x i,y i)相互独立,并且D(y i)=σ2,时,a和b的方差为(2-1-13)(2-1-14)以上两式表明,a和b的方差均与x i的变动有关,x i分布越宽,则a和b的方差越小。
另外a的方差还与观测点的数量有关,数据越多,a的方差越小。
因此,为提高估计量的准确性,x i的分布应尽量宽,观测点数量应尽量多。
建立多元线性回归方程,实际上是对多元线性模型(2-2-4)进行估计,寻求估计式(2-2-3)的过程。
与一元线性回归分析相同,其基本思想是根据最小二乘原理,求解使全部观测值与回归值的残差平方和达到最小值。
由于残差平方和(2-2-5)是的非负二次式,所以它的最小值一定存在。
根据极值原理,当Q取得极值时,应满足由(2-2-5)式,即满足(2-2-6) (2-2-6)式称为正规方程组。
它可以化为以下形式(2-2-7)如果用A表示上述方程组的系数矩阵可以看出A是对称矩阵。
则有(2-2-8)式中X是多元线性回归模型中数据的结构矩阵,是结构矩阵X的转置矩阵。
(2-2-7)式右端常数项也可用矩阵D来表示即因此(2-2-7)式可写成Ab=D (2-2-10)或(2-2-11)如果A满秩(即A的行列式)那么A的逆矩阵A-1存在,则由(2-10)式和(2-11)式得的最小二乘估计为(2-2-12)也就是多元线性回归方程的回归系数。
为了计算方便往往并不先求,再求b,而是通过解线性方程组(2-2-7)来求b。
(2-2-7)是一个有p+1个未知量的线性方程组,它的第一个方程可化为(2-2-13)式中(2-2-14)将(2-2-13)式代入(2-2-7)式中的其余各方程,得(2-2-15)其中(2-2-16)将方程组(2-2-15)式用矩阵表示,则有Lb=F (2-2-17)其中于是b=L-1F (2-2-18)因此求解多元线性回归方程的系数可由(2-2-16)式先求出L,然后将其代回(2-2-17)式中求解。
求b时,可用克莱姆法则求解,也可通过高斯变换求解。
如果把b直接代入(2-2-18)式,由于要先求出L的逆矩阵,因而相对复杂一些。
例2-2-1 表2-2-1为某地区土壤含植物可给态磷(y)与土壤所含无机磷浓度(x1)、土壤溶于K2CO3溶液并受溴化物水解的有机磷浓度(x2)以及土壤溶于K2CO3溶液但不溶于溴化物的有机磷(x3)的观察数据。
求y 对x1,x2,x3的线性回归方程。
表2-2-1 土壤含磷情况观察数据计算如下:由(2-2-16)式代入(2-2-15)式得(2-2-19)若用克莱姆法则解上述方程组,则其解为(2-2-20)其中计算得b1=1.7848,b2=-0.0834,b3=0.1611回归方程为应用克莱姆法则求解线性方程组计算量偏大,下面介绍更实用的方法——高斯消去法和消去变换。
在上一节所介绍的非线性回归分析,首先要求我们对回归方程的函数模型做出判断。
虽然在一些特定的情况下我们可以比较容易地做到这一点,但是在许多实际问题上常常会令我们不知所措。
根据高等数学知识我们知道,任何曲线可以近似地用多项式表示,所以在这种情况下我们可以用多项式进行逼近,即多项式回归分析。
一、多项式回归方法假设变量y与x的关系为p次多项式,且在x i处对y的随机误差(i=1,2,…,n)服从正态分布N(0,),则令x i1=x i, x i2=x i2,…,x ip=x i p则上述非线性的多项式模型就转化为多元线性模型,即这样我们就可以用前面介绍的多元线性回归分析的方法来解决上述问题了。
其系数矩阵、结构矩阵、常数项矩阵分别为(2-4-11)(2-4-12)(2-4-13) 回归方程系数的最小二乘估计为(2-4-14)需要说明的是,在多项式回归分析中,检验b j是否显著,实质上就是判断x的j次项x j对y是否有显著影响。
对于多元多项式回归问题,也可以化为多元线性回归问题来解决。
例如,对于(2-4-15) 令x i1=Z i1, x i2=Z i2, x i3=Z i12, x i4=Z i1Z i2, x i5=Z i22则(2-4-15)式转化为转化后就可以按照多元线性回归分析的方法解决了。
下面我们通过一个实例来进一步说明多项式回归分析方法。
一、应用举例例2-4-2 某种合金中的主要成分为元素A和B,试验发现这两种元素之和与合金膨胀系数之间有一定的数量关系,试根据表2-4-3给出的试验数据找出y与x之间的回归关系。
表2-4-3 例2-4-2试验数据首先画出散点图(图2-4-3)。
从散点图可以看出,y与x的关系可以用一个二次多项式来描述:i=1,2,3…,13图2-4-3 例2-4-2的散点图令x i1=x i,x i2=x i2,则现在我们就可以用本篇第二章介绍的方法求出的最小二乘估计。
由表2-4-3给出的数据,求出由(2-2-16)式由此可列出二元线性方程组将这个方程组写成矩阵形式,并通过初等变换求b1,b2和系数矩阵L的逆矩阵L-1:于是b1=-13.3854b2=0.16598b0=2.3323+13.385440-0.165981603.5=271.599因此下面对回归方程作显著性检验:由(2-2-43)式S回=由(2-2-42)式S总=S残=L yy- S回=0.2572将上述结果代入表2-2-2中制成方差分析表如下:表2-4-4 方差分析表查F检验表,F0。
01(2,10)=7.56, F>F0.01(2 ,10),说明回归方程是高度显著的。
下面对回归系数作显著性检验由前面的计算结果可知:b1=-13.3854 b2=0.16598c11=51.125 c22=7.991610-3由(2-2-54)式由(2-2-53)式检验结果说明的x一次及二次项对y都有显著影响。