精华内容
下载资源
问答
  • 正规方程回归算法Python实现 原始数据 假设关系为 y=3+x+2z ==== y=a+bx+cz 。。。 canshu=(bianliang.T*bianliang).I*bianliang.T*y #.T转置,.I逆矩阵,*矩阵相乘
  • Python代码包含了Advertising.csv数据包 ###线性回归#### # 读取数据 data = pd.read_csv('Advertising.csv', index_col=0) #前五条数据 data.head() #后五条数据 data.tail() # 画散点图 import seaborn as sns ...
  • 梯度下降法是机器学习算法更新模型参数的常用的方法之一。 相关概念 梯度 : 表示某一函数在一点处变化率最快的方向向量(可理解为这点的导数/偏导数) 样本 : 实际观测到的数据集,包括输入和输出(本文的样本数量用 m ...
  • 可用于曲线拟合
  • 使用正规方程组的方法实现最小二乘: 1、 方程组Ax=b,其中A为m行n列的系数矩阵,其转置矩阵为n行m列的矩阵,使A的转置矩阵和A自身相乘可得到一个n行n列的系数矩阵,同时等号右侧也让A的转置矩阵和n维的向量b相乘...
  • 正规方程

    2019-07-08 10:09:11
    1.正规方程 使用正规方程求只需要一步就可以得到的最优值,那么现在假设训练样本集中的m=4,可以得到下面一个表格, 在这个表格中,最终我们得到用矩阵x和向量y来计算的方式 下面讲了当有m个训练样本时的情况,...

    目录

    1.正规方程

    2.该如何选择使用哪个方法,他们的优缺点是什么?

    3.正规方程在不可逆情况下的解决办法


    1.正规方程

    使用正规方程求\theta只需要一步就可以得到\theta的最优值,那么现在假设训练样本集中的m=4,可以得到下面一个表格,

    在这个表格中,最终我们得到用矩阵x和向量y来计算\theta的方式

    下面讲了当有m个训练样本时的情况,那么构建X即设计矩阵的方式如下

    那么,在Octave中用这条语句来实现求最优化\theta即pinv(X'*X)*X'*y,其中X'代表的是X的转置

    2.该如何选择使用哪个方法,他们的优缺点是什么?

    使用正规方程是不需要特征缩放的

    假如你有m个训练样本和n个特征变量时,使用梯度下降算法要选择学习速率a,通常要运行很多次,尝试不同的学习速率a找到运行效果最好的那个

    同时使用梯度下降算法需要很多次的迭代,可能会使计算速度很慢。

    而对于正规方程来说,不需要选择学习速率,很方便而且容易实现。但是如果特征变量的数量n很大的话,那么计算量就很大,速度就会变慢,

    所以如果当n很大时,使用梯度下降法会比较快,但如果n比较小,那么使用正规方程就会比较好。

    如果n超过一万,那么使用正规方程可能就会变慢。

    3.正规方程在不可逆情况下的解决办法

    如果你的X'X是一个不可逆的矩阵,那么你首先需要看你的特征向量里面有没有多余的特征,例如这种X1和X2是线性相关的,或者互为线性函数,如果有多余的向量可以删除两者之一,将会解决不可逆的问题。如果没有多余的特征需要检查是否存在过多的特征向量,如果不影响可以删除少数特征,解决这个问题。

     

     

     

    展开全文
  • 如何理解正规方程

    千次阅读 2019-02-09 18:34:32
    在理解线性回归时,我们提到了使用梯度下降来求解最小二乘问题,但在线性回归中,还有一种不需要迭代的方法来求解最小二乘问题,这就是正规方程。这是基于矩阵求导来及计算的 还是上次的数据 x = [[1, 1, 1, 1, 1]...

    在《如何理解线性回归》中,我们提到了使用梯度下降来求解最小二乘问题,但在线性回归中,还有一种不需要迭代的方法来求解最小二乘问题,这就是正规方程。这是基于矩阵求导来及计算的
    还是上次的数据

    x = [[1, 1, 1, 1, 1], [1, 2, 3, 4, 5]]
    y = [4.8, 7.2, 8.8, 11.2, 12.8]
    plt.scatter(x[1], y)
    plt.xlim(0,6)
    plt.ylim(0,14)
    plt.show()
    

    在这里插入图片描述

    和线性回归前半部分的理解一样,我们的目标是最小化 J J J,只是这里使用的 J J J J = 1 2 ∑ ( y − y h ) 2 J=\frac{1}{2}\sum(y-y_h)^2 J=21(yyh)2(我们用 y y y表示真实值, y h y_h yh表示预测值),标准的写法是这样的,之前我们在用梯度下降时 J J J没有 1 / 2 1/2 1/2也没有关系。那么现在我们就要用矩阵的形式来表示 J J J,并取它的导数,当导数等于零时,也就可以得到最终的正规方程,下面是 J J J的矩阵表示

    J = 1 2 ∑ ( y − y h ) 2 = 1 2 t r [ ( X θ − Y ) T ( X θ − Y ) ] \begin{aligned} J & = \frac{1}{2}∑(y - y_h)^2 \\ & = \frac{1}{2}tr[(Xθ - Y)^T (Xθ - Y)] \end{aligned} J=21(yyh)2=21tr[(XθY)T(XθY)]

    t r tr tr是什么, t r tr tr表示矩阵的迹,也就是矩阵主对角线元素的和,表示为 t r A = ∑ a i i trA=∑a_{ii} trA=aii,其中有些重要的定理

    1. t r ( A B ) = t r ( B A ) 2. t r ( A + B ) = t r ( A ) + t r ( B ) 3. d ( t r ( A B ) ) / d ( A ) = B T 4. d ( t r ( A T B ) ) / d ( A ) = B 5. t r ( A ) = t r ( A T ) 6. t r ( a ) = a ( a ∈ R ) 7. d ( t r ( A B A T C ) ) / d ( A ) = C A B + C T A B T \begin{aligned} &{1.}tr(AB) = tr(BA)\\ &{2.}tr(A+B) = tr(A) + tr(B)\\ &{3.}d(tr(AB))/d(A) = B^T\\ &{4.}d(tr(A^TB))/d(A) = B\\ &{5.}tr(A) = tr(A^T)\\ &{6.}tr(a) = a(a ∈ R)\\ &{7.}d(tr(ABA^TC))/d(A) = CAB+C^TAB^T\\ \end{aligned} 1.tr(AB)=tr(BA)2.tr(A+B)=tr(A)+tr(B)3.d(tr(AB))/d(A)=BT4.d(tr(ATB))/d(A)=B5.tr(A)=tr(AT)6.tr(a)=aaR7.d(tr(ABATC))/d(A)=CAB+CTABT

    就这个问题,我们可以有如下的表示

    (1) x i = ( 1 x ) 这 里 的 x 就 是 上 面 的 [ 1 , 2 , 3 , 4 , 5 ] x_i= \left( \begin{matrix} 1\\ x \end{matrix} \right)\tag{1}这里的x就是上面的[1, 2, 3, 4, 5] xi=(1x)x[1,2,3,4,5](1) (2) θ = ( b a ) 这 是 y = a x + b 的 参 数 θ= \left( \begin{matrix} b\\ a \end{matrix} \right)\tag{2}这是y=ax+b的参数 θ=(ba)y=ax+b(2) (3) X = ( x 0 T x 1 T x 2 T x 3 T x 4 T ) X= \left( \begin{matrix} x_0^T\\ x_1^T\\ x_2^T\\ x_3^T\\ x_4^T \end{matrix} \right)\tag{3} X=x0Tx1Tx2Tx3Tx4T(3) (4) Y = ( y 0 y 1 y 2 y 3 y 4 ) 这 里 的 y i 就 是 上 面 的 [ 4.8 , 7.2 , 8.8 , 11.2 , 12.8 ] Y= \left( \begin{matrix} y_0\\ y_1\\ y_2\\ y_3\\ y_4\\ \end{matrix} \right)\tag{4}这里的y_i就是上面的[4.8, 7.2, 8.8, 11.2, 12.8] Y=y0y1y2y3y4yi[4.8,7.2,8.8,11.2,12.8](4)

    上面的 x x x是一个 2 × 1 2\times1 2×1的向量,这样 x T θ x^Tθ xTθ就是一个 1 × 2 1\times2 1×2的向量乘一个 2 × 1 2\times1 2×1,就得到一个答案,就是 a x + b ax+b ax+b,这个很眼熟吧。所以 X T θ − Y X^Tθ-Y XTθY就包含了所有的 y − y h = a x + b − y h y-y_h=ax+b-y_h yyh=ax+byh,转置相乘再去迹就可以得到所有式子的平方和。这个式子比较好理解
    麻烦的就是下面 d ( J ) / d ( θ ) d(J)/d(θ) d(J)/d(θ)。首先暴力拆开 ( X θ − Y ) T ( X θ − Y ) (Xθ-Y)^T(Xθ-Y) (XθY)T(XθY)

    ( X θ − Y ) T ( X θ − Y ) = ( θ T X T − Y T ) ( X θ − Y ) = θ T X T X θ − θ T X T Y − Y T X θ + Y T Y \begin{aligned} (Xθ - Y)^T (Xθ - Y) & = (θ^TX^T - Y^T)(Xθ - Y)\\ &= θ^TX^TXθ - θ^TX^TY - Y^TXθ + Y^TY \end{aligned} (XθY)T(XθY)=(θTXTYT)(XθY)=θTXTXθθTXTYYTXθ+YTY

    所以这时要解 d ( J ) / d ( θ ) d(J)/d(θ) d(J)/d(θ),我们算一下维度看, θ T X T X θ θ^TX^TXθ θTXTXθ ( 1 × 2 × 2 × 5 × 5 × 2 × 2 × 1 ) = ( 1 × 1 ) (1\times2 \times 2\times5 \times 5\times2 \times 2\times1)=(1\times1) (1×2×2×5×5×2×2×1)=(1×1) θ T X T Y θ^TX^TY θTXTY ( 1 × 2 × 2 × 5 × 5 × 1 ) = ( 1 × 1 ) (1\times2 \times 2\times5 \times 5\times1)=(1\times1) (1×2×2×5×5×1)=(1×1),还有 Y T X θ Y^TXθ YTXθ ( 1 × 5 × 5 × 2 × 2 × 1 ) = ( 1 × 1 ) (1\times5 \times 5\times2 \times 2\times1)=(1\times1) (1×5×5×2×2×1)=(1×1) Y T Y Y^TY YTY ( 1 × 5 × 5 × 1 ) = ( 1 × 1 ) (1\times5 \times 5\times1)=(1\times1) (1×5×5×1)=(1×1),都是些 1 × 1 1\times1 1×1的阵。苦逼没学过矩阵的求导,只有马上去学了,至少可以看出最后的 Y T Y Y^TY YTY θ θ θ半毛钱关系都没有,所以就可以忽略了,得到下面的式子

    d ( J ) / d ( θ ) = 1 2 d ( t r ( θ T X T X θ − θ T X T Y − Y T X θ + Y T Y ) ) / d ( θ ) = 1 2 d ( t r ( θ T X T X θ − θ T X T Y − Y T X θ ) ) / d ( θ ) \begin{aligned} d(J)/d(θ) &= \frac{1}{2}d(tr(θ^TX^TXθ - θ^TX^TY - Y^TXθ + Y^TY)) / d(θ)\\ &=\frac{1}{2}d(tr(θ^TX^TXθ - θ^TX^TY - Y^TXθ)) / d(θ) \end{aligned} d(J)/d(θ)=21d(tr(θTXTXθθTXTYYTXθ+YTY))/d(θ)=21d(tr(θTXTXθθTXTYYTXθ))/d(θ)

    然后可以发现 θ T X T Y θ^TX^TY θTXTY Y T X θ Y^TXθ YTXθ的转置,也就是 ( Y T X θ ) T = θ T X T Y (Y^TXθ)^T=θ^TX^TY (YTXθ)T=θTXTY。由迹的一些定理(上面的2和5),我们可以这样处理一下

    d ( J ) / d ( θ ) = 1 2 d ( t r ( θ T X T X θ − θ T X T Y − Y T X θ + Y T Y ) ) / d ( θ ) = 1 2 d ( t r ( θ T X T X θ − θ T X T Y − Y T X θ ) ) / d ( θ ) = 1 2 ( d ( t r ( θ T X T X θ ) / d ( θ ) − d ( t r ( θ T X T Y ) / d ( θ ) − d ( t r ( Y T X θ ) / d ( θ ) ) = 1 2 ( d ( t r ( θ T X T X θ ) / d ( θ ) − 2 d ( t r ( θ T X T Y ) / d ( θ ) ) \begin{aligned} d(J)/d(θ) &= \frac{1}{2}d(tr(θ^TX^TXθ - θ^TX^TY - Y^TXθ + Y^TY)) / d(θ)\\ &=\frac{1}{2}d(tr(θ^TX^TXθ - θ^TX^TY - Y^TXθ)) / d(θ)\\ &=\frac{1}{2}(d(tr(θ^TX^TXθ) / d(θ) - d(tr(θ^TX^TY) / d(θ) - d(tr(Y^TXθ) / d(θ))\\ &=\frac{1}{2}(d(tr(θ^TX^TXθ) / d(θ) - 2d(tr(θ^TX^TY) / d(θ)) \end{aligned} d(J)/d(θ)=21d(tr(θTXTXθθTXTYYTXθ+YTY))/d(θ)=21d(tr(θTXTXθθTXTYYTXθ))/d(θ)=21(d(tr(θTXTXθ)/d(θ)d(tr(θTXTY)/d(θ)d(tr(YTXθ)/d(θ))=21(d(tr(θTXTXθ)/d(θ)2d(tr(θTXTY)/d(θ))

    然后现在需要求导了,这里有一些有用的求导的定理
    1. d ( a ) / d ( x ) = 0 2. d ( x ) / d ( x ) = I ( I 是 单 位 矩 阵 ) 3. d ( A x ) / d ( x ) = A T 4. d ( x T A ) / d ( x ) = A 5. d ( A T B A ) / d ( A ) = ( B + B T ) A \begin{aligned} &{1.}d(a)/d(x) = 0\\ &{2.}d(x)/d(x) = I (I是单位矩阵)\\ &{3.}d(Ax)/d(x) = A^T\\ &{4.} d(x^TA)/d(x) = A\\ &{5.}d(A^TBA)/d(A) = (B+B^T)A\\ \end{aligned} 1.d(a)/d(x)=02.d(x)/d(x)=II3.d(Ax)/d(x)=AT4.d(xTA)/d(x)=A5.d(ATBA)/d(A)=(B+BT)A
    现在就可以继续向下做了,由求导的5和迹的4可以得到如下的结果

    d ( J ) / d ( θ ) = 1 2 d ( t r ( θ T X T X θ − θ T X T Y − Y T X θ + Y T Y ) ) / d ( θ ) = 1 2 d ( t r ( θ T X T X θ − θ T X T Y − Y T X θ ) ) / d ( θ ) = 1 2 ( d ( t r ( θ T X T X θ ) / d ( θ ) − d ( t r ( θ T X T Y ) / d ( θ ) − d ( t r ( Y T X θ ) / d ( θ ) ) = 1 2 ( d ( t r ( θ T X T X θ ) / d ( θ ) − 2 d ( t r ( θ T X T Y ) / d ( θ ) ) = 1 2 ( 2 X T X θ − 2 X T Y ) = X T X θ − X T Y \begin{aligned} d(J)/d(θ) &= \frac{1}{2}d(tr(θ^TX^TXθ - θ^TX^TY - Y^TXθ + Y^TY)) / d(θ)\\ &=\frac{1}{2}d(tr(θ^TX^TXθ - θ^TX^TY - Y^TXθ)) / d(θ)\\ &=\frac{1}{2}(d(tr(θ^TX^TXθ) / d(θ) - d(tr(θ^TX^TY) / d(θ) - d(tr(Y^TXθ) / d(θ))\\ &=\frac{1}{2}(d(tr(θ^TX^TXθ) / d(θ) - 2d(tr(θ^TX^TY) / d(θ))\\ &=\frac{1}{2}(2X^TXθ - 2X^TY)\\ &=X^TXθ - X^TY \end{aligned} d(J)/d(θ)=21d(tr(θTXTXθθTXTYYTXθ+YTY))/d(θ)=21d(tr(θTXTXθθTXTYYTXθ))/d(θ)=21(d(tr(θTXTXθ)/d(θ)d(tr(θTXTY)/d(θ)d(tr(YTXθ)/d(θ))=21(d(tr(θTXTXθ)/d(θ)2d(tr(θTXTY)/d(θ))=21(2XTXθ2XTY)=XTXθXTY

    这是让 d ( J ) / d ( θ ) = 0 d(J)/d(θ)=0 d(J)/d(θ)=0,就是导数等于零,我们知道在 J J J最小时拟合最佳,而 J J J的导数为零时对应 J J J的一个极小值,这里就是它的最小值,得到

    d ( J ) / d ( θ ) = 0 X T X θ − X T Y = 0 X T X θ = X T Y θ = ( X T X ) − 1 X T Y \begin{aligned} d(J)/d(θ)& = 0\\ X^TXθ - X^TY& = 0\\ X^TXθ& = X^TY\\ θ& = (X^TX)^{-1}X^TY\\ \end{aligned} d(J)/d(θ)XTXθXTYXTXθθ=0=0=XTY=(XTX)1XTY

    这样就得到了正规方程 θ = ( X T X ) − 1 X T Y θ=(X^TX)^{-1}X^TY θ=(XTX)1XTY,这里我们算算 θ θ θ的维度, ( X T X ) − 1 X T Y (X^TX)^{-1}X^TY (XTX)1XTY得到 ( 2 × 5 × 5 × 2 × 2 × 5 × 5 × 1 ) = ( 2 × 1 ) (2\times5 \times 5\times2 \times 2\times5 \times 5\times1)=(2\times1) (2×5×5×2×2×5×5×1)=(2×1),可以看到这里的 θ θ θ就是一个 2 × 1 2\times1 2×1的向量,里面包含了所有参数的值,这里只有 a a a b b b,所以这里的 θ [ 0 ] = b θ[0]=b θ[0]=b,而 θ [ 1 ] = a θ[1]=a θ[1]=a
    我们回到开头的那个问题,看看数据和数据的维度

    th = np.zeros((2, 1))  # 这是θ
    X = np.array(x).T
    Y = np.array(y).reshape(5, 1)
    print(th.shape)
    print(X.shape)
    print(Y.shape)
    

    这里的输出是

    (2, 1)
    (5, 2)
    (5, 1)
    

    现在我们构造这个正规方程并且计算,在python-numpy中,np.dot()是矩阵相乘,np.linalg.inv()是求逆矩阵,现在输出看看

    th = np.dot(np.dot(np.linalg.inv(np.dot(X.T, X)), X.T), Y)
    print('a='+str(th[1])+' b='+str(th[0]))
    

    结果为,也就是 y = 2 x + 2.96 y=2x+2.96 y=2x+2.96

    a=[2.] b=[2.96]
    

    我们画个图看看

    plt.scatter(x[1], y)
    x2 = np.linspace(0, 6, 100)
    fy = th[1]*x2+th[0]
    plt.plot(x2, fy)
    plt.xlim(0,6)
    plt.ylim(0,14)
    plt.show()
    

    在这里插入图片描述

    这个数据是按照 y = 2 x + 3 y=2x+3 y=2x+3构造的,这个结果和梯度下降的结果是差不多的,这就是矩阵求导最小二乘的解法
    梯度下降和正规方程都适用于求最小二乘的一种方法,相同点在于它们都求了导数,目标都是最小化J;不同在于梯度下降需要设定学习率和需要多次迭代,而正规方程不需要。一般使用时,n<10000时且为线性模型我们可以用正规方程,当n>10000时由于逆矩阵的运算复杂度高,效率很低;而且正规方程只适用于线性模型,梯度下降法则可以适用各种模型,是更常用的做法

    展开全文
  • 正规方程组通过计算成本函数对每个θj的偏导数,求出偏导为零的点来成本函数的最小值。为了不必写大量的代数式和矩阵导数,让我们约定一些矩阵计算的符号
  • W表示所有的系数(包含0w0),是一维向量,根据向量乘法规律,可以这么写:   ̂=y^=WTX 1 2、正规方程 1.1 2.1、最小二乘法矩阵表示   最小二乘法可以将误差方程转化为有确定解的代数方程组(其方程式数目...

      1.3、简单线性回归

      前面提到过,算法说白了就是公式,简单线性回归属于一个算法,它所对应的公式。

      𝑦=𝑤𝑥+𝑏y=wx+b

      这个公式中,y 是目标变量即未来要预测的值,x 是影响 y 的因素,w,b 是公式上的参数即要求的模型。其实 b 就是咱们的截距,w 就是斜率嘛! 所以很明显如果模型求出来了,未来影响 y 值的未知数就是一个 x 值,也可以说影响 y 值 的因素只有一个,所以这是就叫简单线性回归的原因。

      同时可以发现从 x 到 y 的计算,x 只是一次方,所以这是算法叫线性回归的原因。 其实,大家上小学时就已经会解这种一元一次方程了。为什么那个时候不叫人工智能算法呢?因为人工智能算法要求的是最优解!

    1.4、最优解

      Actual value:真实值,一般使用 y 表示。

      Predicted value:预测值,是把已知的 x 带入到公式里面和出来的参数 w,b 计算得到的,一般使用 𝑦̂y^ 表示。

       Error:误差,预测值和真实值的差距,一般使用 𝜀ε 表示。

      最优解:尽可能的找到一个模型使得整体的误差最小,整体的误差通常叫做损失 Loss。

      Loss:整体的误差,Loss 通过损失函数 Loss function 计算得到。

    0.2  1.5、多元线性回归

      现实生活中,往往影响结果 y 的因素不止一个,这时 x 就从一个变成了 n 个,𝑋1X1...𝑋𝑛Xn 同时简单线性回归的公式也就不在适用了。多元线性回归公式如下:

      𝑦̂=𝑤1𝑋1+𝑤2𝑋2+……+𝑤𝑛𝑋𝑛+𝑏y^=w1X1+w2X2+……+wnXn+b

      b是截距,也可以使用𝑤0w0来表示

      𝑦̂=𝑤1𝑋1+𝑤2𝑋2+……+𝑤𝑛𝑋𝑛+𝑤0y^=w1X1+w2X2+……+wnXn+w0

      𝑦̂=𝑤1𝑋1+𝑤2𝑋2+……+𝑤𝑛𝑋𝑛+𝑤0∗1y^=w1X1+w2X2+……+wnXn+w0∗1

      使用向量来表示,X表示所有的变量,是一维向量;W表示所有的系数(包含𝑤0w0),是一维向量,根据向量乘法规律,可以这么写:

      𝑦̂=𝑊𝑇𝑋y^=WTX

    1  2、正规方程


    1.1  2.1、最小二乘法矩阵表示

      最小二乘法可以将误差方程转化为有确定解的代数方程组(其方程式数目正好等于未知数的个数),从而可求解出这些未知参数。这个有确定解的代数方程组称为最小二乘法估计的正规方程。公式如下:

    𝜃=(𝑋𝑇𝑋)−1𝑋𝑇𝑦θ=(XTX)−1XTy 或者 𝑊=(𝑋𝑇𝑋)−1𝑋𝑇𝑦W=(XTX)−1XTy ,其中的𝑊、𝜃W、θ 即使方程的解!

    公式是如何推导的?

    最小二乘法公式如下:

    𝐽(𝜃)=12∑𝑖=0𝑛(ℎ𝜃(𝑥𝑖)−𝑦𝑖)2J(θ)=12∑i=0n(hθ(xi)−yi)2

    使用矩阵表示:

    𝐽(𝜃)=12∑𝑖=0𝑛(ℎ𝜃(𝑥𝑖)−𝑦)(ℎ𝜃(𝑥𝑖)−𝑦)J(θ)=12∑i=0n(hθ(xi)−y)(hθ(xi)−y)

    𝐽(𝜃)=12(𝑋𝜃−𝑦)𝑇(𝑋𝜃−𝑦)J(θ)=12(Xθ−y)T(Xθ−y)

    之所以要使用转置T,是因为,矩阵运算规律是:矩阵A的一行乘以矩阵B的一列

    1.2  2.2、多元一次方程举例

    1、二元一次方程

    {𝑥+𝑦=142𝑥−𝑦=10{x+y=142x−y=10

    2、三元一次方程

    𝑥−𝑦+𝑧=1002𝑥+𝑦−𝑧=803𝑥−2𝑦+6𝑧=256{x−y+z=1002x+y−z=803x−2y+6z=256

    3、八元一次方程

    # 上面八元一次方程对应的X数据
    X = np.array([[  0 ,14 , 8 ,  0 ,  5,  -2,   9,  -3],
     [ -4 , 10 ,  6 ,  4 ,-14 , -2 ,-14  , 8],
     [ -1 , -6  , 5 ,-12 ,  3 , -3 ,  2 , -2],
     [  5 , -2  , 3 , 10  , 5 , 11 ,  4  ,-8],
     [-15 ,-15  ,-8 ,-15 ,  7 , -4, -12 ,  2],
     [ 11 ,-10 , -2 ,  4  , 3 , -9 , -6 ,  7],
     [-14 ,  0 ,  4 , -3  , 5 , 10 , 13 ,  7],
     [ -3 , -7 , -2 , -8  , 0 , -6 , -5 , -9]])
    # 对应的y
    y = np.array([ 339 ,-114  , 30 , 126, -395 , -87 , 422, -309])
    display(X,y)

    1.4  求解八元一次方程

    x=np.array([[  0 ,14 , 8 ,  0 ,  5,  -2,   9,  -3],
     [ -4 , 10 ,  6 ,  4 ,-14 , -2 ,-14  , 8],
     [ -1 , -6  , 5 ,-12 ,  3 , -3 ,  2 , -2],
     [  5 , -2  , 3 , 10  , 5 , 11 ,  4  ,-8],
     [-15 ,-15  ,-8 ,-15 ,  7 , -4, -12 ,  2],
     [ 11 ,-10 , -2 ,  4  , 3 , -9 , -6 ,  7],
     [-14 ,  0 ,  4 , -3  , 5 , 10 , 13 ,  7],
     [ -3 , -7 , -2 , -8  , 0 , -6 , -5 , -9]])
    y=np.array([ 339 ,-114  , 30 , 126, -395 , -87 , 422, -309])
    
    
    a=x.T.dot(x)
    b=np.linalg.inv(a).dot(x.T).dot(y)
    b
    #输出:array([ 1.,  5., 15.,  3.,  8.,  4., 17., 12.])

     1.5  可以使用sklearn方法来代替正规函数的运算过程

    from sklearn.linear_model import LinearRegression#导入包

    #fit_intercept=False不设置默认截距
    model=LinearRegression(fit_intercept=False)
    #fit()函数,对模型训练
    #x数据,y目标值
    model.fit(x,y)
    #coef_ ,结果,返回值
    model.coef_ 

    #输出:

    array([ 1.,  5., 15.,  3.,  8.,  4., 17., 12.])

    1  2.3、矩阵转置公式与求导公式:

    转置公式如下:

    • (𝑚𝐴)𝑇=𝑚𝐴𝑇(mA)T=mAT,其中m是常数

    • (𝐴+𝐵)𝑇=𝐴𝑇+𝐵𝑇(A+B)T=AT+BT

    • (𝐴𝐵)𝑇=𝐵𝑇𝐴𝑇(AB)T=BTAT

    • (𝐴𝑇)𝑇=𝐴(AT)T=A

    求导公式如下:

    3  2.5、凸函数判定

    判定损失函数是凸函数的好处在于我们可能很肯定的知道我们求得的极值即最优解,一定是全局最优解。

    如果是非凸函数,那就不一定可以获取全局最优解~

    来一个更加立体的效果图:

    判定凸函数的方式: 判定凸函数的方式非常多,其中一个方法是看黑塞矩阵是否是半正定的。 

    黑塞矩阵(hessian matrix)是由目标函数在点 X 处的二阶偏导数组成的对称矩阵。

    对于我们的式子来说就是在导函数的基础上再次对θ来求偏导,结果就是 𝑋𝑇𝑋XTX。所谓正定就是 𝑋𝑇𝑋XTX 的特征值全为正数,半正定就是 𝑋𝑇𝑋XTX 的特征值大于等于 0, 就是半正定。

     

    这里我们对 𝐽(𝜃)J(θ) 损失函数求二阶导数的黑塞矩阵是 𝑋𝑇𝑋XTX ,得到的一定是半正定的,自己和自己做点乘嘛!这里不用数学推导证明这一点。在机器学习中往往损失函数都是凸函数,到深度学习中损失函数往往是非凸函数,即找到的解未必是全局最优,只要模型堪用就好!机器学习特点是:不强调模型 100% 正确,只要是有价值的,堪用的,就Okay!

     

     

     

    1  3、线性回归算法推导

    1.1  3.1、深入理解回归

      回归简单来说就是“回归平均值”(regression to the mean)。但是这里的 mean 并不是把 历史数据直接当成未来的预测值,而是会把期望值当作预测值。 追根溯源回归这个词是一个叫高尔顿的人发明的,他通过大量观察数据发现:父亲比较高,儿子也比较高;父亲比较矮,那么儿子也比较矮!正所谓“龙生龙凤生凤老鼠的儿子会打洞”!但是会存在一定偏差~

      父亲是 1.98,儿子肯定很高,但有可能不会达到1.98   父亲是 1.69,儿子肯定不高,但是有可能比 1.69 高

      大自然让我们回归到一定的区间之内,这就是大自然神奇的力量。

      高尔顿是谁?达尔文的表弟,这下可以相信他说的十有八九是对的了吧!

      人类社会很多事情都被大自然这种神奇的力量只配置:身高、体重、智商、相貌……

      这种神秘的力量就叫正态分布。大数学家高斯,深入研究了正态分布,最终推导出了线性回归的原理:最小二乘法

      接下来,我们跟着高斯的足迹继续向下走~

    1.2  3.2、误差分析

      误差 𝜀𝑖εi 等于第 i 个样本实际的值 𝑦𝑖yi 减去预测的值 𝑦̂y^ ,公式可以表达为如下:

      𝜀𝑖=|𝑦𝑖−𝑦̂|εi=|yi−y^|

      𝜀𝑖=|𝑦𝑖−𝑊𝑇𝑥𝑖|εi=|yi−WTxi|

      假定所有的样本的误差都是独立的,有上下的震荡,震荡认为是随机变量,足够多的随机变量叠加之后形成的分布,它服从的就是正态分布,因为它是正常状态下的分布,也就是高斯分布!均值是某一个值,方差是某一个值。 方差我们先不管,均值我们总有办法让它去等于零 0 的,因为我们这里是有截距b, 所有误差我们就可以认为是独立分布的,1<=i<=n,服从均值为 0,方差为某定值的高斯分布。机器学习中我们假设误差符合均值为0,方差为定值的正态分布!!!

    1.3  3.3、最大似然估计

      最大似然估计(maximum likelihood estimation, MLE)一种重要而普遍的求估计量的方法。最大似然估计明确地使用概率模型,其目标是寻找能够以较高概率产生观察数据的系统发生树。最大似然估计是一类完全基于统计的系统发生树重建方法的代表。

      是不是,有点看不懂,太学术了,我们举例说明~

      假如有一个罐子,里面有黑白两种颜色的球,数目多少不知,两种颜色的比例也不知。我们想知道罐中白球和黑球的比例,但我们不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中黑白球的比例。假如在前面的一百次重复记录中,有七十次是白球,请问罐中白球所占的比例最有可能是多少?

    请告诉我答案!

    很多小伙伴,甚至不用算,凭感觉,就能给出答案:70%

     

    下面是详细推导过程:

    • 最大似然估计,计算

    • 白球概率是p,黑球是1-p(罐子中非黑即白)

    • 罐子中取一个请问是白球的概率是多少?

      • 𝑝p

    • 罐子中取两个球,两个球都是白色,概率是多少?

      • 𝑝2p2

    • 罐子中取5个球都是白色,概率是多少?

      • 𝑝5p5

    • 罐子中取10个球,9个是白色,一个是黑色,概率是多少呢?

      • 𝐶110=𝐶110C101=C101 这个两个排列组合公式是相等的~
      • 𝐶910𝑝9(1−𝑝)=𝐶110𝑝9(1−𝑝)C109p9(1−p)=C101p9(1−p)

    • 罐子取100个球,70次是白球,30次是黑球,概率是多少?

      • 𝑃=𝐶30100𝑝70(1−𝑝)30P=C10030p70(1−p)30

    • 最大似然估计,什么时候P最大呢?

      𝐶30100C10030是常量,可以去掉

      p > 0,1- p > 0,所以上面概率想要求最大值,那么求导数即可!

    • 𝑃′=70∗𝑝69∗(1−𝑝)30+𝑝70∗30∗(1−𝑝)29∗(−1)P′=70∗p69∗(1−p)30+p70∗30∗(1−p)29∗(−1)

      令导数为0:

    • 0=70∗𝑝69∗(1−𝑝)30+𝑝70∗30∗(1−𝑝)29∗(−1)0=70∗p69∗(1−p)30+p70∗30∗(1−p)29∗(−1)

      公式化简:

    • 0=70∗(1−𝑝)−𝑝∗300=70∗(1−p)−p∗30

    • 0=70−100∗𝑝0=70−100∗p

    • p = 70%

    1.4  3.4、高斯分布-概率密度函数

    最常见的连续概率分布是正态分布,也叫高斯分布,而这正是我们所需要的,其概率密度函数如下:

    公式如下:

    现在问题,就变换成了,求最大似然问题了!不过,等等~

    累乘的最大似然,求解是非常麻烦的!

    接下来,我们通过,求对数累乘问题,转变为累加问题(加法问题,无论多复杂,都难不倒我了!)

     

     

    1.7  3.7、归纳总结升华

      这种最小二乘法估计,其实我们就可以认为,假定了误差服从正太分布,认为样本误差的出现是随机的,独立的,使用最大似然估计思想,利用损失函数最小化 MSE 就能求出最优解!所以反过来说,如果我们的数据误差不是互相独立的,或者不是随机出现的,那么就不适合去假设为正太分布,就不能去用正太分布的概率密度函数带入到总似然的函数中,故而就不能用 MSE 作为损失函数去求解最优解了!所以,最小二乘法不是万能的~

      还有譬如假设误差服从泊松分布,或其他分布那就得用其他分布的概率密度函数去推导出损失函数了。

      所以有时我们也可以把线性回归看成是广义线性回归。比如,逻辑回归,泊松回归都属于广义线性回归的一种,这里我们线性回归可以说是最小二乘线性回归。

    2  4、线性回归实战

    2.1  4.1、使用正规方程进行求解

    2.1.1  4.1.1、简单线性回归

    一元一次方程,在机器学习中一元表示一个特征,b表示截距,y表示目标值。

    import numpy as np
    import matplotlib.pyplot as plt
    # 转化成矩阵
    X = np.linspace(0,10,num = 30).reshape(-1,1)
    # 斜率和截距,随机生成
    w = np.random.randint(1,5,size = 1)
    b = np.random.randint(1,10,size = 1)
    # 根据一元一次方程计算目标值y,并加上“噪声”,数据有上下波动~
    y = X * w + b + np.random.randn(30,1)
    plt.scatter(X,y)
    # 重新构造X,b截距,相当于系数w0,前面统一乘以1
    X = np.concatenate([X,np.full(shape = (30,1),fill_value= 1)],axis = 1)
    # 正规方程求解
    θ = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y).round(2)
    print('一元一次方程真实的斜率和截距是:',w, b)
    print('通过正规方程求解的斜率和截距是:',θ)
    # 根据求解的斜率和截距绘制线性回归线型图
    plt.plot(X[:,0],X.dot(θ),color = 'green')

    效果如下(random.randn是随机生成正太分布数据,所以每次执行图形会有所不同):

     2.1.2  4.1.2、多元线性回归

    二元一次方程,𝑥1、𝑥2x1、x2 相当于两个特征,b是方程截距

    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d.axes3d import Axes3D # 绘制三维图像
    # 转化成矩阵
    x1 = np.random.randint(-150,150,size = (300,1))
    x2 = np.random.randint(0,300,size = (300,1))
    # 斜率和截距,随机生成
    w = np.random.randint(1,5,size = 2)
    b = np.random.randint(1,10,size = 1)
    # 根据二元一次方程计算目标值y,并加上“噪声”,数据有上下波动~
    y = x1 * w[0] + x2 * w[1] + b + np.random.randn(300,1)
    fig = plt.figure(figsize=(9,6))
    ax = Axes3D(fig)
    ax.scatter(x1,x2,y) # 三维散点图
    ax.view_init(elev=10, azim=-20) # 调整视角
    # 重新构造X,将x1、x2以及截距b,相当于系数w0,前面统一乘以1进行数据合并
    X = np.concatenate([x1,x2,np.full(shape = (300,1),fill_value=1)],axis = 1)
    w = np.concatenate([w,b])
    # 正规方程求解
    θ = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y).round(2)
    print('二元一次方程真实的斜率和截距是:',w)
    print('通过正规方程求解的斜率和截距是:',θ.reshape(-1))
    # # 根据求解的斜率和截距绘制线性回归线型图
    x = np.linspace(-150,150,100)
    y = np.linspace(0,300,100)
    z = x * θ[0] + y * θ[1] + θ[2]
    ax.plot(x,y,z ,color = 'red')

    2.2  4.2、机器学习库scikit-learn

    2.2.1  4.2.1、scikit-learn简介

    2.2.2  4.2.2、scikit-learn实现简单线性回归

    from sklearn.linear_model import LinearRegression
    import numpy as np
    import matplotlib.pyplot as plt
    # 转化成矩阵
    X = np.linspace(0,10,num = 30).reshape(-1,1)
    # 斜率和截距,随机生成
    w = np.random.randint(1,5,size = 1)
    b = np.random.randint(1,10,size = 1)
    # 根据一元一次方程计算目标值y,并加上“噪声”,数据有上下波动~
    y = X * w + b + np.random.randn(30,1)
    plt.scatter(X,y)
    # 使用scikit-learn中的线性回归求解
    model = LinearRegression()
    model.fit(X,y)
    w_ = model.coef_
    b_ = model.intercept_
    print('一元一次方程真实的斜率和截距是:',w, b)
    print('通过scikit-learn求解的斜率和截距是:',w_,b_)
    plt.plot(X,X.dot(w_) + b_,color = 'green')

    2.2.3  4.2.3、scikit-learn实现多元线性回归

    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d.axes3d import Axes3D
    # 转化成矩阵
    x1 = np.random.randint(-150,150,size = (300,1))
    x2 = np.random.randint(0,300,size = (300,1))
    # 斜率和截距,随机生成
    w = np.random.randint(1,5,size = 2)
    b = np.random.randint(1,10,size = 1)
    # 根据二元一次方程计算目标值y,并加上“噪声”,数据有上下波动~
    y = x1 * w[0] + x2 * w[1] + b + np.random.randn(300,1)
    fig = plt.figure(figsize=(9,6))
    ax = Axes3D(fig)
    ax.scatter(x1,x2,y) # 三维散点图
    ax.view_init(elev=10, azim=-20) # 调整视角
    # 重新构造X,将x1、x2以及截距b,相当于系数w0,前面统一乘以1进行数据合并
    X = np.concatenate([x1,x2],axis = 1)
    # 使用scikit-learn中的线性回归求解
    model = LinearRegression()
    model.fit(X,y)
    w_ = model.coef_.reshape(-1)
    b_ = model.intercept_
    print('二元一次方程真实的斜率和截距是:',w,b)
    print('通过scikit-learn求解的斜率和截距是:',w_,b_)
    # # 根据求解的斜率和截距绘制线性回归线型图
    x = np.linspace(-150,150,100)
    y = np.linspace(0,300,100)
    z = x * w_[0] + y * w_[1] + b_
    ax.plot(x,y,z ,color = 'green')

     

     

     

     

     

     

    展开全文
  • 线性回归的正规方程

    千次阅读 2018-10-27 11:33:16
    线性回归的正规方程 本文阐述线性回归的正规方程推导过程,为满足广义性,采用多变量的线性回归代价函数进行推导。 多变量线性回归的梯度下降算法是用来求其代价函数最小值的算法,但是对于某些线性回归问题,可以...

    线性回归的正规方程

    • 本文阐述线性回归的正规方程推导过程,为满足广义性,采用多变量的线性回归代价函数进行推导。

    多变量线性回归的梯度下降算法是用来求其代价函数最小值的算法,但是对于某些线性回归问题,可以直接使用正规方程的方法来找出使得代价函数最小的参数,即 ∂ ∂ θ j J ( θ ) = 0 \frac{\partial}{\partial\theta_j}J(\theta)=0 θjJ(θ)=0
    梯度下降与正规方程的比较:

    优缺点梯度下降正规方程(标准方程)
    是否需要引入其他参数需要选择学习率 α \alpha α不需要
    迭代或运算次数需要多次迭代一次运算得出
    特征数量是否有影响当特征数量 n n n大时也能较好适用需要计算 ( X T X ) − 1 (X^TX)^{-1} (XTX)1如果特征数量 n n n较大则运算代价大,因为矩阵逆的计算时间复杂度为 O ( n 3 ) O(n^3) O(n3),通常来说 n n n小于10000时还是可以接受的
    适用模型类适用于各种类型的模型只适用于线性模型,不适合逻辑回归模型等其他模型

    首先给出线性回归的**代价函数(Cost Function)**的向量化表示:
    J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m}\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2
    其中假设函数 h θ ( x ) = θ T X = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_\theta(x) = \theta^TX=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n hθ(x)=θTX=θ0+θ1x1+θ2x2+...+θnxn
    m m m为样本总数,参数 θ \theta θ与特征矩阵 X X X均为 n + 1 n+1 n+1维列向量。

    将假设函数代入,并将向量表达式转化为矩阵表达式,即将 ∑ i = 1 m \sum\limits_{i=1}^m i=1m写成矩阵相乘的形式:
    J ( θ ) = 1 2 ( X θ − y ) 2 J(\theta) = \frac{1}{2}(X\theta-y)^2 J(θ)=21(Xθy)2
    其中 X X X m m m n + 1 n+1 n+1列的矩阵, m m m为样本个数, n + 1 n+1 n+1为特征个数, θ \theta θ n + 1 n+1 n+1维行向量, y y y m m m维行向量。
    由于 X X X非方阵,不存在逆矩阵,固对 J ( θ ) J(\theta) J(θ)进行如下变换:

    J ( θ ) = 1 2 ( X θ − y ) T ( X θ − y ) J(\theta) = \frac{1}{2}(X\theta-y)^T(X\theta-y) J(θ)=21(Xθy)T(Xθy)
    = 1 2 [ ( X θ ) T − y T ] ( X θ − y ) = \frac{1}{2}[(X\theta)^T-y^T](X\theta-y) =21[(Xθ)TyT](Xθy)
    = 1 2 ( θ T X T − y T ) ( X θ − y ) = \frac{1}{2}(\theta^TX^T-y^T)(X\theta-y) =21(θTXTyT)(Xθy)
    = 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) = \frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta+y^Ty) =21(θTXTXθθTXTyyTXθ+yTy)

    接下来对 J ( θ ) J(\theta) J(θ)求偏导,需要用到以下几个矩阵对矩阵的分母布局求导法则:
    d A X d X = A T \frac{dAX}{dX}=A^T dXdAX=AT
    d X T A X d X = 2 A X \frac{dX^TAX}{dX}=2AX dXdXTAX=2AX
    d X T A d X = A \frac{dX^TA}{dX}=A dXdXTA=A

    首先化简 ∂ ∂ θ J ( θ ) \frac{\partial}{\partial\theta}J(\theta) θJ(θ)
    ∂ ∂ θ J ( θ ) = 1 2 [ 2 X T X θ − X T y − ( y T X ) T + 0 ] \frac{\partial}{\partial\theta}J(\theta)=\frac{1}{2}[2X^TX\theta-X^Ty-(y^TX)^T+0] θJ(θ)=21[2XTXθXTy(yTX)T+0]
    = 1 2 [ 2 X T X θ − X T y − X T y + 0 ] =\frac{1}{2}[2X^TX\theta-X^Ty-X^Ty+0] =21[2XTXθXTyXTy+0]
    = X T X θ − X T y =X^TX\theta-X^Ty =XTXθXTy

    再令 ∂ ∂ θ J ( θ ) = X T X θ − X T y = 0 \frac{\partial}{\partial\theta}J(\theta)=X^TX\theta-X^Ty=0 θJ(θ)=XTXθXTy=0
    X T X θ − X T y = 0 X^TX\theta-X^Ty=0 XTXθXTy=0
    X T X θ = X T y X^TX\theta=X^Ty XTXθ=XTy

    不难发现, ( X T X ) (X^TX) (XTX)为方阵,则有 ( X T X ) (X^TX) (XTX)的逆矩阵 ( X T X ) − 1 (X^TX)^{-1} (XTX)1,固在等式两边同时左乘 ( X T X ) − 1 (X^TX)^{-1} (XTX)1,并求出 θ \theta θ
    ( X T X ) − 1 X T X θ = ( X T X ) − 1 X T y (X^TX)^{-1}X^TX\theta=(X^TX)^{-1}X^Ty (XTX)1XTXθ=(XTX)1XTy
    ( X T X ) − 1 ( X T X ) θ = ( X T X ) − 1 X T y (X^TX)^{-1}(X^TX)\theta=(X^TX)^{-1}X^Ty (XTX)1(XTX)θ=(XTX)1XTy
    E θ = ( X T X ) − 1 X T y E\theta=(X^TX)^{-1}X^Ty Eθ=(XTX)1XTy
    θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)1XTy
    至此,完成线性回归的正规方程推导。

    展开全文
  • 正规方程 公式

    2019-06-15 22:20:34
    对于某些线性回归问题,正规方程能给我们更好的方法来求得参数θ的最优值。 1.前面讲解中一直在使用的线性回归算法是梯度下降法(迭代算法),目的是为了最小化代价函数J(θ)。使用这种梯度下降法(迭代算法)需要...
  • 线性回归——正规方程推导过程 我们知道线性回归中除了利用梯度下降算法来求最优解之外,还可以通过正规方程的形式来求解。 首先看到我们的线性回归模型: f(xi)=wTxif(x_i)=w^Tx_if(xi​)=wTxi​ 其中w=(w0w1...wn)...
  • 正规方程 正规方程是通过求解下面的方程来找出使得代价函数最小的参数的: ∂∂θjJ(θi)=0\frac{\partial}{\partial \theta_j} J(\theta_i) = 0∂θj​∂​J(θi​)=0 假设我们的训练集特征矩阵为 XXX(包含了
  • 正规方程前言一、批量梯度下降(Batch Gradient Descent)1.算法介绍2.Python代码二、正规方程(Normal Equation)1.算法介绍2.Python代码三、二者比较 前言 对于求解线性回归问题,尤其是多变量线性回归,可以使用...
  • 最小二乘法正规方程推导过程线性回归岭回归:添加 L2L_2L2​ 正则项 输入样本 X∈Rm×n\textbf{X}\in \mathbb{R}^{m\times n}X∈Rm×n,输出 y∈Rm×1\textbf{y}\in\mathbb{R}^{m\times 1}y∈Rm×1,需要学习的参数 ...
  • 正规方程法 问题:矩阵XTXX^TXXTX不可逆(奇异矩阵)的2种常见原因: 1、特征之间存在线性关系。如:x2=x1∗3.14x_2 = x_1 * 3.14x2​=x1​∗3.14,解决办法:删除一个 2、样本数量m小于等于特征数量n。解决办法:...
  • 一、正规方程的引入 当我们求解线性回归问题时引入梯度下降算法的目的是,为了找到代价函数的最小值,也就是代价函数曲线的最低点,如图: 那么当对于某些线性回归问题,我们可不可以直接让代价函数对参数θ求的偏...
  • 五、计算正规方程 正规方程就是利用特征矩阵x和y计算出模型中的权重值w #正规方程求theta的值 def normal_equation(x,y): return np.linalg.inv(x.T*x)*x.T*y 六、画图观察拟合效果 利用求正规方程的函数求出权重值w...
  • python解正规方程

    2018-11-06 18:20:13
    正规方程解出向量
  • 目录前言问题重述方法正规方程线性方程组问题所在解决问题一维投影二维投影奇怪的事情写在最后 前言 几次接触机器学习的第一部分(像我背单词只记得abandoned一样),都会被线性模型中直接求解的这个正规方程...
  • 正规方程推导

    2019-11-24 11:06:23
    正规方程是通过求解下面的方程来找出使得代价函数最小的参数: 设有m个训练实例,每个实例有n个特征,则训练实例集为: 其中表示第i个实例第j个特征。 特征参数为: 输出变量为: 故代价函数为: ...
  • 正规方程法是通过求解某个方程来找出使得代价函数最小的参数的方法,本文对比了梯度下降和正规方程两种方法。
  • python实现正规方程

    2020-02-16 16:53:45
    用python实现正规方程 我们需要使用numpy,这是一个很方便的数学运算库,没有的话可以打开cmd输入装一个 pip install numpy 然后我们只需要导入numpy import numpy as np 那么求解可逆矩阵的逆我们可以用 numpy....
  • 一: 线性回归方程 ​ 线性回归(英语:linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量 之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性...
  • 正规方程 需要选择学习率???? 不需要 多次迭代 一次运算得出 当特征数量????大时也能较好适用 需要计算(????????????)−1 如果特征数量????较大则 ...
  • 初学者学习线性回归时, 对于正规方程解和梯度下降法的性能没有直观的认认识, 这里做了一下对比
  • 在Ng机器学习课程上介绍了除梯度下降求最优值的另外一种方法“正规方程”,但是Ng没有给出具体的推导过程。于是,参考多方资料并结合自己的理解,现给出三种方法的推导。 引用:《矩阵分析引论》、《数理统计与多元...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,845
精华内容 3,538
关键字:

正规方程