精华内容
下载资源
问答
  • 最小二乘法公式

    千次阅读 2020-10-20 19:30:08
    最小二乘法公式 最小二乘法公式是一个数学的公式,在数学上称为曲线拟合,此处所讲最小二乘法,专指线性回归方程!最小二乘法公式为a=y(平均)-b*x(平均)。 1.简介: 最小二乘法公式: 设拟合直线的公式为, 其中:...

    最小二乘法公式

    最小二乘法公式是一个数学的公式,在数学上称为曲线拟合,此处所讲最小二乘法,专指线性回归方程!最小二乘法公式为a=y(平均)-b*x(平均)。

    1.简介:

    最小二乘法公式:
    设拟合直线的公式为,
    其中:拟合直线的斜率为:;计算出斜率后,根据和已经确定的斜率k,利用待定系数法求出截距b。
    在这里插入图片描述

    2.基本思路

    最小二乘法是解决曲线拟合问题最常用的方法。其基本思路是:令
    在这里插入图片描述
    在这里插入图片描述

    3.基本原理

    设(x,y)是一对观测量,在这里插入图片描述
    且 满足以下的理论函数 :
    在这里插入图片描述
    其中 在这里插入图片描述
    为待定参数。
    为了寻找函数在这里插入图片描述
    的参数在这里插入图片描述
    的最优估计值,对于给定m 组(通常 m>n)观测数据在这里插入图片描述
    ,求解目标函数在这里插入图片描述
    取最小值的参数在这里插入图片描述
    。求解的这类问题称为最小二乘问题,求解该问题的方法的几何语言称为最小二乘拟合。
    对于无约束最优化问题,最小二乘法的一般形式为 :
    在这里插入图片描述

    其中在这里插入图片描述
    称为残差函数。当在这里插入图片描述
    是x的线性函数时,称为线性最小二乘问题,否则称为非线性最小二乘问题 。

    4.最小二乘优化问题

    在无约束最优化问题中,有些重要的特殊情形,比如目标函数由若干个函数的平方和构成,这类函数一般可以写成:
    在这里插入图片描述

    其中 在这里插入图片描述
    ,通常要求m≥n,我们把极小化这类函数的问题:
    在这里插入图片描述

    称为最小二乘优化问题。最小二乘优化是一类比较特殊的优化问题 。

    展开全文
  • 最小二乘法公式推导

    2018-03-24 16:24:00
    最小二乘法公式推导 https://blog.csdn.net/lql0716/article/details/70165695 转载于:https://www.cnblogs.com/Aaron12/p/8639574.html

    最小二乘法公式推导

    https://blog.csdn.net/lql0716/article/details/70165695

    转载于:https://www.cnblogs.com/Aaron12/p/8639574.html

    展开全文
  • 单变量线性回归的最小二乘法公式单变量线性回归线性回归系数的确定导数方法配方法简单程序验证 单变量线性回归 假设有nnn个点 (x1, y1), (x2, y2),⋯ , (xn, yn)(x_1, \, y_1), \, (x_2, \, y_2), \cdots, \, ...

    单变量线性回归

    假设有nn个点 (x1,y1),(x2,y2),,(xn,yn)(x_1, \, y_1), \, (x_2, \, y_2), \cdots, \, (x_n, \, y_n), 我们希望用一个线性关系y=β0+β1xy = \beta_0 + \beta_1 x 来拟合这nn个点。β0\beta_0β1\beta_1的值须要通过使 RSS=i=1n(yi(β0+β1xi))2\displaystyle \text{RSS} = \sum_{i = 1}^n \left( y_i - (\beta_0 + \beta_1 x_i) \right)^2最小来确定。这里RSSRSS 是residual sum of squares,即残差的平方和。这个方法即最小二乘法。

    线性回归系数的确定

    导数方法

    对于如何求出 β0\beta_0β1\beta_1的值,在众多教科书中已有广泛得描述。其中最普遍的方法是把 RSS 对 β0\beta_0β1\beta_1 进行求偏导。取使得两个偏导数为0的β0\beta_0β1\beta_1的值。具体如下:
    { RSSβ0=2nβ0+2xiβ12yi=0 RSSβ1=2xi2β1+2xiβ02xiyi=0 \begin{cases} & \frac{\partial \text{ RSS}}{\partial \beta_0} = 2 n \beta_0 + 2 \sum x_i \beta_1 - 2 \sum y_i = 0 \\ & \frac{\partial \text{ RSS}}{\partial \beta_1} = 2 \sum x_i^2 \beta_1 + 2 \sum x_i \beta_0 - 2 \sum x_i y_i = 0 \\ \end{cases}
    这里的求和符号\sum 均表示从i=1i = 1i=ni = n。通过求解这个二元一次线性方程组,我们可以得到:
    {β1=(xixˉ)(yiyˉ)(xixˉ)2β0=yˉβ1xˉ \begin{cases} & \beta_1 = \frac{\sum (x_i - \bar{x} ) (y_i - \bar{y})}{\sum (x_i - \bar{x} )^2 } \\ & \beta_0 = \bar{y} - \beta_1 \bar{x} \\ \end{cases}
    这里求和符号\sum 依然均表示从i=1i = 1i=ni = nxˉ=i=1nxin\bar{x} = \frac{\sum_{i = 1}^n x_i}{n}, yˉ=i=1nyin\bar{y} = \frac{\sum_{i = 1}^n y_i}{n}。除此之外,我们须要验证二次导数大于0,来确定这个极值点是最小值。

    配方法

    我们把RSS 的表达式展开,有
    RSS(β0,β1)=nβ02+xi2β12+yi2+2xiβ0β12yiβ02xiyiβ1\text{RSS} (\beta_0, \, \beta_1) = n \beta_0^2 + \sum x_i^2 \, \beta_1^2 + \sum y_i^2 + 2 \sum x_i \, \beta_0 \beta_1 - 2 \sum y_i \, \beta_0 - 2 \sum x_i y_i \, \beta_1
    因为 RSS(β0,β1)\text{RSS} (\beta_0, \, \beta_1) 只是β0\beta_0β1\beta_1 的二次函数,我们可以通过配方法来找到使得 RSS(β0,β1)\text{RSS} (\beta_0, \, \beta_1) 最小的 β0\beta_0β1\beta_1 的值。

    先化简一下,RSS(β0,β1)/n=β02+xi2nβ12+yi2n+2xinβ0β12yinβ02xiyinβ1\text{RSS} (\beta_0, \, \beta_1) / n= \beta_0^2 + \frac{\sum x_i^2}{n} \, \beta_1^2 + \frac{\sum y_i^2}{n} + 2 \frac{\sum x_i}{n} \, \beta_0 \beta_1 - 2 \frac{\sum y_i}{n} \, \beta_0 - 2 \frac{\sum x_i y_i}{n} \, \beta_1

    我们先通过配方法匹配掉 β02\beta_0^2β0\beta_0,和 β0β1\beta_0 \beta_1 这三项。具体计算如下:
    RSS/n=(β0+xinβ1yin)2(xin)2β12+xi2nβ12+yi2n(yin)2+2xinyinβ12xiyinβ1\text{RSS} / n = \left(\beta_0 + \frac{\sum x_i}{n} \, \beta_1 - \frac{\sum y_i}{n} \right)^2 - ( \frac{\sum x_i}{n} )^2 \beta_1^2 + \frac{\sum x_i^2}{n} \beta_1^2 + \frac{\sum y_i^2}{n} -(\frac{\sum y_i}{n} )^2 + 2 \frac{\sum x_i}{n} \frac{\sum y_i}{n} \beta_1 - 2 \frac{\sum x_i y_i}{n} \, \beta_1

    经过第一步配方,我们得到了(β0+xinβ1yin)2\displaystyle \left(\beta_0 + \frac{\sum x_i}{n} \, \beta_1 - \frac{\sum y_i}{n} \right)^2这一项。接下来,我们再匹配掉 β12\beta_1^2β1\beta_1 这两项。我们有具体的计算如下:

    RSS/n=(β0+xinβ1yin)2+(xi2n(xin)2)[β12+2xinyin2xiyinxi2n(xin)2β1+(xinyinxiyinxi2n(xin)2)2]+yi2n(yin)2(xinyinxiyin)2xi2n(xin)2=(β0+xinβ1yin)2+(xi2n(xin)2)[β1+xinyinxiyinxi2n(xin)2]2+yi2n(yin)2(xinyinxiyin)2xi2n(xin)2\begin{aligned} \text{RSS} / n &= \left(\beta_0 + \frac{\sum x_i}{n} \, \beta_1 - \frac{\sum y_i}{n} \right)^2 + \\ & \left(\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2 \right) \left[ \beta_1^2 + \frac{2 \frac{\sum x_i}{n} \frac{\sum y_i}{n} - 2\frac{\sum x_i y_i}{n}}{\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2 } \beta_1 + \left( \frac{\frac{\sum x_i}{n} \frac{\sum y_i}{n} - \frac{\sum x_i y_i}{n}}{\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2} \right)^2 \right] \\ & \qquad + \frac{\sum y_i^2}{n} - (\frac{\sum y_i}{n} )^2 - \frac{ \left( \frac{\sum x_i}{n} \frac{\sum y_i}{n} - \frac{\sum x_i y_i}{n} \right)^2}{\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2} \\ &= \left(\beta_0 + \frac{\sum x_i}{n} \, \beta_1 - \frac{\sum y_i}{n} \right)^2 + \left(\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2 \right) \left[ \beta_1 + \frac{ \frac{\sum x_i}{n} \frac{\sum y_i}{n} - \frac{\sum x_i y_i}{n} }{\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2} \right]^2 \\ & \qquad + \frac{\sum y_i^2}{n} - (\frac{\sum y_i}{n} )^2 - \frac{ \left( \frac{\sum x_i}{n} \frac{\sum y_i}{n} - \frac{\sum x_i y_i}{n} \right)^2}{\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2} \\ \end{aligned}

    经过两次配方,我们得到了两个平方项。而剩下的项并不依赖于β0\beta_0β1\beta_1。我们可以看到,要使得RSS/n\text{RSS} / n 最小,我们须要有
    {β1=xiyinxinyinxi2n(xin)2β0=yˉβ1xˉ \begin{cases} & \beta_1 = \frac{ \frac{\sum x_i y_i}{n} - \frac{\sum x_i}{n} \frac{\sum y_i}{n} }{\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2} \\ & \beta_0 = \bar{y} - \beta_1 \bar{x} \\ \end{cases}

    经过化简计算,我们可以验证 xiyinxinyinxi2n(xin)2=(xixˉ)(yiyˉ)(xixˉ)2\displaystyle \frac{ \frac{\sum x_i y_i}{n} - \frac{\sum x_i}{n} \frac{\sum y_i}{n} }{\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2} = \frac{\sum (x_i - \bar{x} ) (y_i - \bar{y})}{\sum (x_i - \bar{x} )^2 }。所以,用配方法和用求导的方法获得的 β0\beta_0β1\beta_1 的值是一样的。

    通过上述计算,我们可以发现配方法的过程要比求导数的方法繁琐很多。并且配方法不易于对多变量(multivariate)回归情形的推广。

    另一方面,配方法的一个好处是避免了求导这个步骤。此外,配方法的一个直接结果就是我们可以得到最小的 RSS 的值。即当 β0\beta_0β1\beta_1 按照最优解取值时,我们有
    RSS/n=yi2n(yin)2(xinyinxiyin)2xi2n(xin)2\displaystyle \text{RSS} / n = \frac{\sum y_i^2}{n} - (\frac{\sum y_i}{n} )^2 - \frac{ \left( \frac{\sum x_i}{n} \frac{\sum y_i}{n} - \frac{\sum x_i y_i}{n} \right)^2}{\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2},即

    RSS=yi2n(yin)2n(xinyinxiyin)2xi2n(xin)2\displaystyle \text{RSS} = \sum y_i^2 - n (\frac{\sum y_i}{n} )^2 - n \frac{ \left( \frac{\sum x_i}{n} \frac{\sum y_i}{n} - \frac{\sum x_i y_i}{n} \right)^2}{\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2}

    简单程序验证

    我们用一个简单的程序来验证用
    yi2n(yin)2n(xinyinxiyin)2xi2n(xin)2\displaystyle \sum y_i^2 - n (\frac{\sum y_i}{n} )^2 - n \frac{ \left( \frac{\sum x_i}{n} \frac{\sum y_i}{n} - \frac{\sum x_i y_i}{n} \right)^2}{\frac{\sum x_i^2}{n} - ( \frac{\sum x_i}{n} )^2}
    求得的 RSS 与sklearn 包中提供的函数是一致的。

    import numpy as np
    from scipy.stats import norm
    import matplotlib.pyplot as plt
    import pandas as pd
    from sklearn.linear_model import LinearRegression
    
    class least_square_singleVariable:
        
        def __init__(self):
            return
        
        def find_beta_1_and_beta_0(self, train_x: 'pd.Series', train_y: 'pd.Series') -> 'tuple(float, float)':
            """
            Given the independent variable train_x and the dependent variable train_y, find the value for 
            beta_1 and beta_0
            """
            x_bar = np.mean(train_x)
            y_bar = np.mean(train_y)
            beta_1 = np.dot(train_x - x_bar, train_y - y_bar) / (np.sum((train_x - x_bar) ** 2))
            beta_0 = y_bar - beta_1 * x_bar
            return beta_1, beta_0
            
        def find_optimal_RSS(self, train_x: "numpy.ndarray", train_y: "numpy.ndarray") -> float:
            """
            Calculate the residual sum of squares (RSS) using the formula derived in the text above.
            """
            n = len(train_x)
            x_bar = np.mean(train_x)
            y_bar = np.mean(train_y)
            sum_xi_square = np.sum(train_x ** 2)
            sum_yi_square = np.sum(train_y ** 2)
            TSS = np.sum((train_y - y_bar) ** 2)
            sum_xiyi = np.dot(train_x, train_y)
            res = sum_yi_square - n * y_bar ** 2 - \
                    n * (x_bar * y_bar - sum_xiyi / n) ** 2 / (sum_xi_square / n - x_bar ** 2)
            return res
        
        def get_optimal_RSS_sklearn(self, train_x: "numpy.ndarray", train_y: "numpy.ndarray") -> float:
            """
            Calculate the residual sum of squares using the LinearRegression() model in sklearn. 
            The result should be the same as the result returned by the function find_optimal_RSS
            """
            n = len(train_x)
            model =  LinearRegression()
            model.fit(train_x.reshape(n, 1), train_y)
            R_square = model.score(train_x.reshape(n, 1), train_y)
            y_bar = np.mean(train_y)
            TSS = np.sum((train_y - y_bar) ** 2)
            RSS = (1 - R_square) * TSS
            return RSS
    

    我们来验证利用上述公式计算得到的 RSS 是否与 sklearn 包中 LinearRegression() 给出的 RSS 相等。

    a = least_square_singleVariable()
    num_points = 100
    train_x = np.linspace(0, 10, num_points)
    train_y = 2 * train_x + 3 + np.random.normal(0, 1, num_points)
    beta_1, beta_0 = (a.find_beta_1_and_beta_0(train_x, train_y))
    print(a.find_optimal_RSS(train_x, train_y))
    print(a.get_optimal_RSS_sklearn(train_x, train_y))
    

    输出的结果如下:

    89.00851265874053
    89.00851265873582
    

    我们发现利用我们推导出来的公式计算得到的RSS 值与sklearn 中利用R-square 来计算得到的 RSS 是一致的。

    作图如下:

    plt.figure(figsize=(8, 6), dpi=100)
    plt.scatter(train_x, train_y)
    plt.plot(train_x, beta_1 * train_x + beta_0, color='red', linewidth=4)
    plt.xlabel("x value", fontsize=20)
    plt.ylabel("y value", fontsize=20)
    plt.xticks(fontsize=20)
    plt.yticks(fontsize=20)
    plt.legend(['linear model', 'training data'], fontsize=15)
    

    在这里插入图片描述

    展开全文
  • 线性回归最小二乘法公式推导

    千次阅读 多人点赞 2019-03-11 11:04:23
    1. 符号表示 首先我们...( X T X ) − 1 X T Y W = {(X^{T}X)}^{-1}X^{T}Y W=(XTX)−1XTY   后记:其实求非线性回归的时候也可以使用该最小二乘法来计算多项式系数 w w w,只要把高次项添加到原始的 X X X后面即可。

    1. 符号表示

    首先我们将训练样本的特征矩阵X进行表示,其中N为样本个数,p为特征个数,每一行表示为每个样本,每一列表示特征的每个维度:
    X=(x11x12...x1px21x22...x2p............xN1xN2...xNp)Np X= \begin{gathered} \begin{pmatrix} x_{11} & x_{12} & ... & x_{1p} \\ x_{21} & x_{22} & ... & x_{2p} \\ ... & ... &... &... \\ x_{N1} & x_{N2} & ... & x_{Np} \end{pmatrix} \quad \end{gathered}_{N\cdot p}

    然后我们对训练样本的标签向量Y权重向量w进行表示,其中权重向量指的是线性回归中各个系数形成的向量。
    Y=(y1y2...yN) Y = \begin{gathered} \begin{pmatrix} y_{1} \\ y_{2} \\ ... \\ y_{N} \end{pmatrix} \quad \end{gathered}

    w=(w1w2...wp) w = \begin{gathered} \begin{pmatrix} w_{1} \\ w_{2} \\ ... \\ w_{p} \end{pmatrix} \quad \end{gathered}
    为了方便运算,我们把yi=xiw+by_{i} = x_{i}w + b中的b也并入到w和x中。则上述的符号表示则为:

    X=(x10x11x12...x1px20x21x22...x2p...............xN0xN1xN2...xNp)Np X= \begin{gathered} \begin{pmatrix} x_{10} & x_{11} & x_{12} & ... & x_{1p} \\ x_{20} & x_{21} & x_{22} & ... & x_{2p} \\ ... & ... &... &... &... \\ x_{N0} & x_{N1} & x_{N2} & ... & x_{Np} \end{pmatrix} \quad \end{gathered}_{N\cdot p}

    w=(w0w1w2...wp) w = \begin{gathered} \begin{pmatrix} w_{0} \\ w_{1} \\ w_{2} \\ ... \\ w_{p} \end{pmatrix} \quad \end{gathered}

    2. 公式推导

    L(w)=i=1N(xiwyi)2L(w) = \sum^{N}_{i =1 } (x_{i}w - y_{i})^{2}
    w=argminL(w)=argmini=1N(xiwyi)2w = \operatorname { arg } \operatorname { min }L(w) = \operatorname { arg } \operatorname { min } \sum^{N}_{i =1 } (x_{i}w - y_{i})^{2}
    为什么是转置乘以原矩阵,这是由于Y是列向量,则(XWY)(XW - Y)则也是列向量。根据矩阵乘法的定义,只有行向量乘以列向量,最终结果才是一个常数。
    L(w)=(XWY)T(XWY)L(w) = (XW-Y)^{T} (XW-Y)

    L(w)=(WTXTYT)(XWY)L(w) = (W^{T}X^{T} - Y^{T})(XW-Y)

    L(w)=(WTXTXW2WTXTY+YTY)L(w) = (W^{T}X^{T}XW-2W^{T}X^{T}Y+Y^{T}Y)

    L(w)w=2XTXW2XTY=0\frac { \partial L(w)} {\partial w} = 2X^{T}XW - 2X^{T}Y = 0

    W=(XTX)1XTYW = {(X^{T}X)}^{-1}X^{T}Y

      后记:其实求非线性回归的时候也可以使用该最小二乘法来计算多项式系数ww,只要把高次项添加到原始的XX后面即可。

    展开全文
  • 二元线性回归最小二乘法公式推导

    万次阅读 2017-02-28 21:23:23
    手动推导用最小二乘法进行线性回归,求参数
  • 线性回归和最小二乘法 周志华西瓜书3.2、P55公式推导 公式推导如下 对应的需要有些矩阵求导的公式: 其中我们约定,大写字母表示矩阵,小写字母表示标量,小写字母加粗表示向量,大部分书中都是这么约定,不过...
  • 最小二乘法的主要思想是通过确定未知参数θ\thetaθ(通常是一个参数矩阵),来使得真实值和预测值的误差(也称残差)平方和最小,其计算公式为E=∑i=0nei2=∑i=1n(yi−yi^)E=\sum_{i=0}^ne_i^2=\sum_{i=1}^n(y_i-\...
  • 简单线性回归-最小二乘法公式推导

    千次阅读 2018-03-26 11:54:22
    附python代码:(网上很多版本bo计算公式有误)import numpy as np def LSmethod(x,y): n=len(x) numerator = 0#分子 dinominator=0#分母 for i in range(0,n): numerator +=(x[i]-np.mean(x))*(y[i]-np.mean(y...
  • xishu polfit2(Hisnum his[], int n)//最小二乘 二次多项式拟合 y=A1+A2*x+A3*x*x x为灰度 y为灰度数量 { //-----------------公式--------------------------- //n A1 + sumX A2 + sumXX A3 = sumY //sumX A1 +...
  • 求和分解出的第一个公式 求和分解出的第二个公式 求和分解出的第三个公式 求和分解出的第四个公式 向量化推导结果 对w求导 求导分解出的第一个公式 求导分解出的第二个公式 ...
  • 用一步完成最小二乘法、递推最小二乘法、增广最小二乘法、广义最小二乘法、辅助变量法、二步法辨识如下模型的参数: ...然后利用各最小二乘法公式,进行迭代求解: 增广最小二乘(辨识结果) ..
  • 最小二乘法

    2017-04-15 00:03:02
    最小二乘法公式推导
  • 最小二乘法-公式推导 关于最小二乘法公式
  • 递推最小二乘法RLS公式详细推导

    千次阅读 2020-04-24 23:55:11
    递推最小二乘法RLS详细推导 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的...
  • 最小二乘法拟合圆公式推导及matlab实现 最小二乘法(least squares analysis)是一种数学优化技术它通过 最小化误差的平方和找到一组数据的最佳函数匹配最小二乘法是用最 简的方法求得一些绝对不可知的真值而令误差...
  • 介绍了具体最小二乘法的数学推导,有兴趣学习和编码实现最小二乘法的可以看看
  • 最小二乘法-公式推导

    2018-05-20 11:36:47
    求出这样一些未知参数使得样本点和拟合线的总误差(距离)最小 最直观的感受如下图(图引用自知乎某作者) 而这个误差(距离)可以直接相减,但是直接相减会有正有负,相互抵消了,所以就用差的平方 推导过程 1 ...
  • 普通最小二乘法(OLS)

    千次阅读 2016-12-10 09:04:15
    最小二乘法公式推导过程
  • 关于最小二乘法求解,目的是求得最小解,以下以三阶最小二乘法为例。 求矩阵方程,即可得出系数a,b,c,d得值。
  • 最小二乘法拟合圆公式推导及其实现

    万次阅读 热门讨论 2017-04-21 15:04:49
    最小二乘法是用最简的方法求得一些绝对不可知的真值,而令误差平方之和为最小来寻找一组数据的最佳匹配函数的计算方法,最小二乘法通常用于曲线拟合 (least squares fitting) 。最小二乘圆拟合方法是一种基于统计的...
  • 最小二乘法公式是一个数学的公式,在数学上称为曲线拟合,此处所讲最小二乘法,专指线性回归方程,最小二乘法公式为a=y(平均)-b*x(平均)。 有一组数据(1,6),(3,5),(5,7),(6,12),要找出一条与这几...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 815
精华内容 326
关键字:

最小二乘法公式