线 性 回 归 方 程 推 导
- 格式:pdf
- 大小:225.71 KB
- 文档页数:7
第二节一元线性回归方程的建立一元线性回归分析是处理两个变量之间关系的最简单模型,它所研究的对象是两个变量之间的线性相关关系。
通过对这个模型的讨论,我们不仅可以掌握有关一元线性回归的知识,而且可以从中了解回归分析方法的基本思想、方法和应用。
一、问题的提出例2-1-1 为了研究氮含量对铁合金溶液初生奥氏体析出温度的影响,测定了不同氮含量时铁合金溶液初生奥氏体析出温度,得到表2-1-1给出的5组数据。
表2-1-1 氮含量与灰铸铁初生奥氏体析出温度测试数据如果把氮含量作为横坐标,把初生奥氏体析出温度作为纵坐标,将这些数据标在平面直角坐标上,则得图2-1-1,这个图称为散点图。
从图2-1-1可以看出,数据点基本落在一条直线附近。
这告诉我们,变量X与Y的关系大致可看作是线性关系,即它们之间的相互关系可以用线性关系来描述。
但是由于并非所有的数据点完全落在一条直线上,因此X与Y的关系并没有确切到可以唯一地由一个X值确定一个Y值的程度。
其它因素,诸如其它微量元素的含量以及测试误差等都会影响Y 的测试结果。
如果我们要研究X与Y的关系,可以作线性拟合(2-1-1)二、最小二乘法原理如果把用回归方程计算得到的i值(i=1,2,…n)称为回归值,那么实际测量值y i与回归值i之间存在着偏差,我们把这(i=1,2,3,…,n)。
这样,我们就可以用残差平种偏差称为残差,记为e i方和来度量测量值与回归直线的接近或偏差程度。
残差平方和定义为: (2-1-2) 所谓最小二乘法,就是选择a和b使Q(a,b)最小,即用最小二乘法得到的回归直线是在所有直线中与测量值残差平方和Q最小的一条。
由(2-1-2)式可知Q是关于a,b的二次函数,所以它的最小值总是存在的。
下面讨论的a和b的求法。
线性回归——正规方程推导过程线性回归——正规方程推导过程我们知道线性回归中除了利用梯度下降算法来求最优解之外,还可以通过正规方程的形式来求解。
首先看到我们的线性回归模型: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最后补充一下关于矩阵求导的一些知识,不懂可以查阅:矩阵求导、几种重要的矩阵及常用的矩阵求导公式这次接着一元线性回归继续介绍多元线性回归,同样还是参靠周志华老师的《机器学习》,把其中我一开始学习时花了较大精力弄通的推导环节详细叙述一下。
线性回归算法推导线性回归之最小二乘法推导及python实现前言线性模型基本形式模型评估寻找最优解python实现最小二乘法本文章为个人的学习笔记。
学习书籍《机器学习》(周志华著,俗称西瓜书)。
线性模型基本形式首先是最基本的线性模型:f(x)=w1x1+w2x2+w3x3+.+wnxn+bf( textbf{x} )=w_1x_1+w_2x_2+w_3x_3+.+w_nx_n+bf(x)=w1?x1?+w 2?x2?+w3?x3?+.+wn?xn?+b化简成向量形式f(x)=xw+bf( textbf{x})= textbf{x}textbf{w} +b f(x)=xw+bf(x)≈yf( textbf{x})approx yf(x)≈y其中x=(x1,x2,x3.,xn)textbf{x}=(x_1,x_2,x_3.,x_n)x=(x1?,x2?,x3?. ,xn?),xix_ixi? 代表xtextbf{x}x的第i个属性。
而w=(w1;w2;w3;.;wn)textbf{w}=(w_1;w_2;w_3;.;w_n)w=(w1?;w2?;w3 ;.;wn)对应于 xtextbf{x}x 不同属性的系数。
其中yyy代表了数据xtextbf{x}x的真实情况,而f(x)f(bf{x})f(x)得到的是对xtextbf{x}x的预测值,我们通过(y,x)(y,textbf{x})(y,x)对模型进行训练,力求通过线性模型f(x)f(bf{x})f(x)来对yyy未知的数据进行预测。
为了计算方便,令:x=(x1,x2,x3.,xn,1)textbf{x}=(x_1,x_2,x_3.,x_n,1)x=(x1?,x 2?,x3?.,xn?,1)w=(w1;w2;w3;.;wn;b)textbf{w}=(w_1;w_2;w_3;.;w _n;b)w=(w1?;w2?;w3?;.;wn?;b)线性模型就写成如下形式:f(x)=wxf( textbf{x})= textbf{w} textbf{x} f(x)=wx模型评估线性回归的目标就是要找到一个最合适的模型来使得预测的准确度最大化。
线性回归之最小二乘法线性回归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 - 博客园中心极限定理是讨论随机变量序列部分和分布渐近于正态分布的一类定理。
线性回归方程推导理论推导机器学习所针对的问题有两种:一种是回归,一种是分类。
回归是解决连续数据的预测问题,而分类是解决离散数据的预测问题。
线性回归是一个典型的回归问题。
其实我们在中学时期就接触过,叫最小二乘法。
线性回归试图学得一个线性模型以尽可能准确地预测输出结果。
?先从简单的模型看起:?首先,我们只考虑单组变量的情况,有:?使得?假设有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的矩阵。
线性回归损失函数推导-最大似然
线性回归作为一种监督学习方法,在机器学习领域中属于最基本的优化问题,即根据现有的数据集,找到一个能够最好拟合这组数据的线性函数即可,根据这个线性函数对新来的数据进行预测。
本文将会覆盖最简单的线性回归的解释和标准方程求解最优线性回归参数,至于梯度下降法求解,会有单独的另外一篇博客介绍。
什么是回归分析
显而易见,线性回归就是一种回归分析,那么什么是回归分析呢?
简单的说,就是找到一条能够最好的代表所有数据的函数,这个函数可以是线性的,当然也可以是非线性的。
而通常情况下数据集并不会是严格的能够使用一条函数代表,所以就会需要我们引入误差的概念,就是说最小化这个误差就行了,通常使用的方法有:最小二乘法、最大似然估计法等,后面我们会介绍到,对于线性回归来说这两种方法其实是等价的。
最小二乘法:又称为最小平方法,就是把所有误差的平方相加,获得的值为总误差,最小化这个误差就是优化目标。
什么是线性回归(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的各个维度的偏导数,然后求和即可。
为了表示方便,我们假设有n个样本,这些样本的属性集合,以及他们的结果值的集合分别为:
X=?x1x2?xn?,Y=?y1y2?yn?
即上面的导数可以重新写为:
dL(w)dw=2∑ixixTiw?2∑ixiyi=2XTXw?2XTY=0
由于矩阵的逆与原矩阵相乘为1,所以上式求解可得:
w?=(XTX)?1XTY
w?即为我们要求的最优值了。
第一个问题
有了上面的求解w*公式,我们只需要遍历所有训练数据集,将数据读出来后进行矩阵运算即可。
也正因为如此,第一个问题来了,假如我们的数据维度特别高,那么这种矩阵运算是十分耗费时间的,即便使用一些如分治法的策略,也只能很有限的降低计算复杂度。
所以标准方程的方式,只适合于数据量和数据维度不是非常大的情况,否则更建议使用梯度下降法进行计算,关于梯度下降法,后面我会再写一篇文章专门介绍。
第二个问题
不可逆怎么办,这个问题比较关键,为了解决这个问题,研究者为求解w*的函数引入了对角矩阵作为参数来保证
XTX可逆,即原求解公式变为:
w?=(XTXλI)?1XTY
其中λI为形如下列格式的单位对角矩阵:
λ?1000010000100001?
这种方法求出的w*一定是最优的。
那么,引入这么一个参数,必然要有其具体的函数意义,比如高斯分
不中引入噪声、SVM中引入松弛变量,那么这里的
λI表示什么含义呢。
概率解释
标准方程获得的结果可以从很多个角度来解释其意义,我们可以选择从概率的角度来看(但这个式子并非是从概率论推出来的,具体如何来的笔者也暂不知道……只是前辈告诉我就是突然出现这么一个式子比较合理,从各个角度都能解释的通)。
我们这里从三个不同的角度来看待线性回归的参数估计问题,他们分别是:最大似然估计、贝叶斯估计和最大后验估计。
一)最大似然估计
最大似然估计比较简单,它假定要估计的模型参数w虽然是未知的,但应该当确定值,然后找到符合对数似然最大分布的参数值。
首先,我们假设线性模型为:
其中δ是线性样本上的噪声数据,我们假设噪声符合高斯分布,即ε∼N(0,δ2)
在确定w和x的情况下,我们可以看到y与ε分布相同,也就是说对于每一个数据点:
p(yi|xi;w)=p(ε)=12π?√δexp(?ε22δ2)
由于ε=y?wx,所以:
p(yi|xi;w)=12π?√δexp(?(yi?wxi)22δ2)
对于所有的样本X,以及他们所有的预测结果Y有:
P(Y|X;w)=∏p(yi|xi;w)
最大化这个概率,求出w就是我们的目标,为了方便计算,我们把上式的连乘转换为负对数最大似然求极小值问题,把p值代入即可得:
L(w)=?∑ilog(p(yi|xi;w))=12δ2∑i(yi?wxi)2C
由于δ、C都是常数,所以最小化这个L(w)与最小二乘法的结果一样。
现在我们知道了为什么标准方程中使用差平方的和是合理的,而不是使用其他的误差计算方式。
二)贝叶斯最大后验估计
贝叶斯估计的特点是,假设已知样本处于分布D上(如高斯分布),根据已有样本计算在分布D上概率最大的参数w。
给定X、Y推导w的贝叶斯后验概率:
p(w|X,Y)=p(w,Y|X)p(Y|X)
由于贝叶斯的特点就是假设样本分布于D上,所以我们这里假设该分布为高斯分布,那么参数w在该分布上的概率为w|X∼N(0,γ2),即:p(w|X)=1γ2π?√exp(?w22γ2)
则,贝叶斯后验概率可以转换为:
p(w|Y,X)=p(w,Y|X)p(Y|X)=p(Y|w,X)p(w|X)∫p(Y|w,X)p(w|X)dw
根据贝叶斯定理和条件概率的基本性质(维基百科),我们可以把上市做一些转换,因为我们已经预先假设了p(w|X),所以要转换结果有它。
最大化p(w|Y,X)可以表示为:
maxwp(w|Y,X)=maxwp(w,Y|X)p(Y|X)=p(Y|w,X)p(w|X)p(Y|X)
由于p(Y|X)为常数,所以上式等价于maxwp(Y|w,X)p(w|X)
最小化其负对数后验概率:
minw?log(p(Y|w,X)p(w|X))=minw?log(p(Y|w,X))?log(p(w|X))
=?∑log(p(yi|w,xi))?log(p(w|X))
=1δ2∑(yi?wxi)21γ2w2
如果我们令λ=δ2γ2,则上式等价于:
minw∑(yi?wxi)2λw2
令其全导数为零,则最优解为:
w?=(XTXλI)?12XTY
我们发现贝叶斯最大后验概率与标准方程形式相同,从概率的角度是有意义的。
λI
的含义,其中I是单位对角矩阵,
一个简单的线性回归,里面涉及的知识还是很深的,不时回头回顾总能发现新的东西,学无止境啊。
当所有事情发生的概率为最大时,我们认为总结出的函数最符合这些事件的实际规律.所以我们把总结这些点的分布规律问题转变为了求得P(x1,x2 . xn)= P(x1) * P(x2) . P(xn)的发生概率最大.
对数似然: 对数似然相对于似然函数的有点在于运算方便。
似然函数求取的方法是迭乘, 数字较大时会很不方便;对数似然求取的方法是迭加。
(相比于似然函数而言, 对数似然较为实用)
params = gradient_descent(X, y)
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+CA
(wTXTXw)w=(wTAw)w,①=?wT?wAw+?(Aw)T?ww,②=?wT?wAw+?(wTAT)?ww,③=(A+AT)w=2Aw=2ATw,
线性回归的目标就是要找到一个最合适的模型来使得预测的准确度最大化。
此时就需要找到最合适的wtextbf{w}w来使模型的到的预测值尽可能的接近真实值yyy。
我们这里从三个不同的角度来看待线性回归的参数估计问题,他们分别是:最大似然估计、贝叶斯估计和最大后验估计。
但实际上,有一点我必须要澄清,虽然上面的代码只有几行,非常方便,但是在实际使用线性回归的场景当中,我们并不会直接通过公式来计算(theta),而是会使用其他的方法迭代来优化。
Ux = attr(XScale, "scaled:center")
return np.loadtxt(filePath, delimiter=contentDelimiter, usecols=contentCols,。