1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 机器学习(六)多元线性回归之最小二乘法

机器学习(六)多元线性回归之最小二乘法

时间:2019-10-25 03:18:56

相关推荐

机器学习(六)多元线性回归之最小二乘法

线性回归的原理

多元回归的一般式

y ^ ( θ , x ) = θ 0 + θ 1 x 1 + … + θ p x p \hat{y}(\theta, x)=\theta_{0}+\theta_{1} x_{1}+\ldots+\theta_{p} x_{p} y^​(θ,x)=θ0​+θ1​x1​+…+θp​xp​

其中:

y ^ \hat{y} y^​:预测值

θ 0 , θ 1 , … θ p \theta_{0}, \theta_{1}, \ldots \theta_{p} θ0​,θ1​,…θp​:参数

x 0 , x 1 , … x p x_{0}, x_{1}, \ldots x_{p} x0​,x1​,…xp​:自变量

方程的拟合思路

最小二乘法

通过求导求极值解法

下面通过一元线性回归模型做推导:

样本回归模型:

y ^ i = β ^ 0 + β ^ 1 x i \hat{y}_{i}=\hat{\beta}_{0}+\hat{\beta}_{1} x_{i} y^​i​=β^​0​+β^​1​xi​

残差平方和(损失函数):

Q = ∑ i = 1 n e i 2 = ∑ i = 1 n ( y i − y ^ i ) 2 = ∑ i = 1 n ( y i − β ^ 0 − β ^ 1 x i ) 2 Q=\sum_{i=1}^{n} e_{i}^{2}=\sum_{i=1}^{n}\left(y_{i}-\hat{y}_{i}\right)^{2}=\sum_{i=1}^{n}\left(y_{i}-\hat{\beta}_{0}-\hat{\beta}_{1} x_{i}\right)^{2} Q=i=1∑n​ei2​=i=1∑n​(yi​−y^​i​)2=i=1∑n​(yi​−β^​0​−β^​1​xi​)2

通过使得Q最小时的参数确定直线,即把它们看作是Q的函数,就变成了一个求极值的问题,可以通过求导数得到。求Q对两个待估参数的偏导数

{ ∂ Q ∂ β ^ 0 = 2 ∑ i = 1 n ( y i − β ^ 0 − β ^ 1 x i ) ( − 1 ) = 0 ∂ Q ∂ β ^ 1 = 2 ∑ i = 1 n ( y i − β ^ 0 − β ^ 1 x i ) ( − x i ) = 0 \left\{\begin{aligned} \frac{\partial Q}{\partial \hat{\beta}_{0}} &=2 \sum_{i=1}^{n}\left(y_{i}-\hat{\beta}_{0}-\hat{\beta}_{1} x_{i}\right)(-1)=0 \\ \frac{\partial Q}{\partial \hat{\beta}_{1}} &=2 \sum_{i=1}^{n}\left(y_{i}-\hat{\beta}_{0}-\hat{\beta}_{1} x_{i}\right)\left(-x_{i}\right)=0 \end{aligned}\right. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​∂β^​0​∂Q​∂β^​1​∂Q​​=2i=1∑n​(yi​−β^​0​−β^​1​xi​)(−1)=0=2i=1∑n​(yi​−β^​0​−β^​1​xi​)(−xi​)=0​

解得:

β ^ 1 = n ∑ x i y i − ∑ x i ∑ y i n ∑ x i 2 − ( ∑ x i ) 2 \hat{\beta}_{1}=\frac{n \sum x_{i} y_{i}-\sum x_{i} \sum y_{i}}{n \sum x_{i}^{2}-\left(\sum x_{i}\right)^{2}} β^​1​=n∑xi2​−(∑xi​)2n∑xi​yi​−∑xi​∑yi​​

β ^ 0 = ∑ x i 2 ∑ y i − ∑ x i ∑ x i y i n ∑ x i 2 − ( ∑ x i ) 2 \hat{\beta}_{0}=\frac{\sum x_{i}^{2} \sum y_{i}-\sum x_{i} \sum x_{i} y_{i}}{n \sum x_{i}^{2}-\left(\sum x_{i}\right)^{2}} β^​0​=n∑xi2​−(∑xi​)2∑xi2​∑yi​−∑xi​∑xi​yi​​

其中:

β ^ 0 = y ˉ − β ^ 1 x ˉ \hat{\beta}_{0}=\bar{y}-\hat{\beta}_1 \bar{x} β^​0​=yˉ​−β^​1​xˉ

β ^ 1 = ∑ i = 1 n x i y i − n x y ‾ ∑ i = 1 n x i 2 − n x ˉ 2 \hat{\beta}_{1}=\frac{\sum_{i=1}^{n} x_{i} y_{i}-n \overline{x y}}{\sum_{i=1}^{n} x_{i}^2-n \bar{x}^{2}} β^​1​=∑i=1n​xi2​−nxˉ2∑i=1n​xi​yi​−nxy​​

通过矩阵求解

定义:

h θ ( x 1 , x 2 , … x n − 1 ) = θ 0 + θ 1 x 1 + … + θ n x n − 1 h_{\theta}\left(x_{1}, x_{2}, \ldots x_{n-1}\right)=\theta_{0}+\theta_{1} x_{1}+\ldots+\theta_{n} x_{n-1} hθ​(x1​,x2​,…xn−1​)=θ0​+θ1​x1​+…+θn​xn−1​

现在有m个样本,每个样本有n−1维特征将所有样本点代入模型中得:

h 1 = θ 0 + θ 1 x 1 , 1 + θ 2 x 1 , 2 + … + θ n − 1 x 1 , n − 1 h 2 = θ 0 + θ 1 x 2 , 1 + θ 2 x 2 , 2 + … + θ n − 1 x 2 , n − 1 ⋮ h m = θ 0 + θ 1 x m , 1 + θ 2 x m , 2 + … + θ n − 1 x m , n − 1 \begin{array}{l} h_{1}=\theta_{0}+\theta_{1} x_{1,1}+\theta_{2} x_{1,2}+\ldots+\theta_{n-1} x_{1, n-1} \\ h_{2}=\theta_{0}+\theta_{1} x_{2,1}+\theta_{2} x_{2,2}+\ldots+\theta_{n-1} x_{2, n-1} \\ \vdots \\ h_{m}=\theta_{0}+\theta_{1} x_{m, 1}+\theta_{2} x_{m, 2}+\ldots+\theta_{n-1} x_{m, n-1} \end{array} h1​=θ0​+θ1​x1,1​+θ2​x1,2​+…+θn−1​x1,n−1​h2​=θ0​+θ1​x2,1​+θ2​x2,2​+…+θn−1​x2,n−1​⋮hm​=θ0​+θ1​xm,1​+θ2​xm,2​+…+θn−1​xm,n−1​​

为方便用矩阵表示令 x 0 = 1 x_0 = 1 x0​=1于是上述方程可以用矩阵表示为:

h = X θ \mathbf{h}=\mathbf{X} \theta h=Xθ

其中,h为m x 1的向量, 代表模型的理论值,θ 为n x 1的向量,X为 m x n维的矩阵,m代表样本的个数,n代表样本的特征数,于是目标损失函数用矩阵表示为:

J ( θ ) = ∥ h − Y ∥ 2 = ∥ X θ − Y ∥ 2 = ( X θ − Y ) T ( X θ − Y ) J(\theta)=\|\mathbf{h}-\mathbf{Y}\|^{2}=\|\mathbf{X} \theta-\mathbf{Y}\|^{2}=(\mathbf{X} \theta-\mathbf{Y})^{T}(\mathbf{X} \theta-\mathbf{Y}) J(θ)=∥h−Y∥2=∥Xθ−Y∥2=(Xθ−Y)T(Xθ−Y)

关于矩阵的求导补充以下知识点:

∂ x T a ∂ x = ∂ a T x ∂ x = a ∂ x T A x ∂ x = A x + A T x \begin{aligned} \frac{\partial x^{T} a}{\partial x} &=\frac{\partial a^{T} x}{\partial x}=a \\ \frac{\partial x^{T} A x}{\partial x} &=A x+A^{T} x \end{aligned} ∂x∂xTa​∂x∂xTAx​​=∂x∂aTx​=a=Ax+ATx​

又由于如果矩阵A是对称的:

A x + A T x = 2 A x A x+A^{T} x=2 A x Ax+ATx=2Ax

对目标函数化简:

J ( θ ) = θ T X T X θ − θ T X T Y − Y T X θ + Y T Y J(\theta)=\theta^{T} X^{T} X \theta-\theta^{T} X^{T} Y-Y^{T} X \theta+Y^{T} Y J(θ)=θTXTXθ−θTXTY−YTXθ+YTY

则θ最小值:

θ ^ = argmin ⁡ θ L ( θ ) ⟶ ∂ ∂ θ L ( θ ) = 0 ⟶ 2 X T X θ ^ − 2 X T Y = 0 ⟶ θ ^ = ( X T X ) − 1 X T Y = X + Y \begin{aligned} \hat{\theta}=\underset{\theta}{\operatorname{argmin}} L(\theta) & \longrightarrow \frac{\partial}{\partial \theta} L(\theta)=0 \\ & \longrightarrow 2 X^{T} X \hat{\theta}-2 X^{T} Y=0 \\ & \longrightarrow \hat{\theta}=\left(X^{T} X\right)^{-1} X^{T} Y=X^{+} Y \end{aligned} θ^=θargmin​L(θ)​⟶∂θ∂​L(θ)=0⟶2XTXθ^−2XTY=0⟶θ^=(XTX)−1XTY=X+Y​

这个式子中 ( X T X ) − 1 X T \left(X^{T} X\right)^{-1} X^{T} (XTX)−1XT又被称为伪逆写作 X + X^{+} X+,对于行满秩或者列满秩的X ,可以直接求解。

几何意义法求解

求解 b 在A的列向量空间中的投影。

在几何上,最小二乘法相当于模型(这里就是直线)和试验值的距离的平方求和,假设我们的试验样本张成一个 维空间(满秩的情况)模型写成 f ( w ) = X β f(w)=X \beta f(w)=Xβ而最小二乘法就是说希望 Y 和这个模型距离越小越好,于是它们的差应该与这个张成的空间垂直:

X T ⋅ ( Y − X β ) = 0 ⟶ β = ( X T X ) − 1 X T Y X^{T} \cdot(Y-X \beta)=0 \longrightarrow \beta=\left(X^{T} X\right)^{-1} X^{T} Y XT⋅(Y−Xβ)=0⟶β=(XTX)−1XTY

python实现最小二乘法(通过矩阵求解)

class LinearRegression:'''使用Python实现的线性回归.(最小二乘法)'''def fit(self,X,y):'''根据提提供的训练数据X,对模型进行训练。Parameters------X :类数组类型。形状:[样本数量,特征数量]特征矩阵,用来对模型进行训练y = 类数组类型,形状:[样本数量]'''# 如果X是数组对象的一部分,而不是完整的对象数据(eg:切片)则无法完成矩阵的转换X = np.asmatrix(X.copy()) #这里创建X的拷贝对象,避免转换成矩阵时候失败# y 为一维结构(行向量或列向量)没有限制,可以不用拷贝# 注意:现在要进行矩阵的运算,需要是二维结构,通过reshape方法进行转换y = np.asmatrix(y).reshape(-1,1) # (-1,1)意思:把数组转换为一列,依据数据自定义行的矩阵# 通过最小二乘公式,求解出最佳的权重值self.w_ = (X.T * X ).I * X.T * ydef predict(self,X):'''根据参数传递的样本X,delattr样本数据进行预测。Parameters------X:类数组类型。形状[样本数量,特征数量]待预测的样本特征(属性)Returns------result:数组类型预测的结果'''# 将X转换为矩阵 注意:需要对X进行拷贝X = np.asmatrix(X.copy())result = X * self.w_# 将矩阵转换为ndarray数组 ,进行扁平化处理 ,然后返回结果return np.array(result).ravel()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。