美文网首页
单线性回归-步骤原理-实例

单线性回归-步骤原理-实例

作者: 小事儿9527 | 来源:发表于2018-08-23 11:56 被阅读0次

    XXX研究了好几天的单线性回归,终于有些明白了,但是其中很多原理(公式)的东西还是不太懂。这里做下总结,希望能让刚开始学习机器学习的小伙伴少走些弯路吧。下面开始!!!

    先从一个臭了大街的公式开始吧

    Y = a + bX

    没错就是它,此处略过10000个草泥马。

    好这里先说一下这个公式的作用,就是根据把X带入单线性回归的公式求出Y的坐标。

    Y是什么?X是什么?a是什么?b又是什么?我相信很多数学不好的小伙伴和我一样开始都是一脸懵逼。

    Y是坐标系上y的值,是结果

    X是坐标系上x的值,是我们自己给的数(参数)

    a是截距(在这里就是线的起点)

    b是回归系数(我在网上查了一下,就是线角度的正切值)

    那么a,b是哪来的?这TM两个值是算出来的,当然向python里面的很多库提供方法很方便,但是我这里主要说的是这两个值是在没算出来的。

    这里我们使用用最小二乘法来计算

    来吧,说下最重要的运算步骤了。

    这里需要两组数据,我这里把这两组数据分别转成矩阵用表示xx和yy吧,它们分别对应x和y的值,同时它们都是n*1的矩阵(n行1列),这里为了好理解所以使用1列的矩阵。

    1、我们先需要把xx这个从n*1的矩阵转成n*2的矩阵(n行2列的矩阵),第一列全部都是“1”,新的矩阵我们用mx来代表吧。

    mx = np.mat(np.ones((n,2))    //转成n*2的矩阵

    for i in range(n): mx[i,1] = Xi[i]    //第一列全部都是“1”

    2、我们将mx这个n*2的矩阵做转置,这里用mx.T表示,转置后的矩阵变成2*n(2行n列),现在用 mx.T * mx(mx.T乘以mx)2*n  *  n*2 会生成一个2*2的矩阵 xmx(这里不懂的可以自己查一下矩阵的乘法)。

    xmx = mx.T*mx

    3、这一步可以不做,这里只是提一下,验证xmx矩阵是否有效,用矩阵行列式求出xmx的值是否等于0,不等于0就继续。

    np.linalg.det(xTx) != 0.0

    4、再把xmx矩阵求逆,这里用xmx.I表示(逆矩阵就是:a矩阵乘b矩阵=单元矩阵,那么b就是a的逆矩阵,这里不知道说的对不对,哈)。

    5、还记得yy这个n*1的矩阵(向量)吧。ws = xmx.I * (xm.T * yy.T)。

    注:xmx的逆矩阵 * (xm的转置矩阵 * yy的转置矩阵),现在就是:2 x n矩阵 * 1 x n矩阵(向量) = 2x1的矩阵zz,再用 xmx.I这个2x2的矩阵 * 2x1的zz = 2x1的矩阵ws。

    ws = xmx.I * (mx.T*yy.T)

    6、ws是个2行1列的矩阵,第一行第一列的值就是b(截距),第二行第一列的值就是a(回归系数)

    好了到这里Y = a + bX的公式完整了。

    第一次写肯定会有不对的地方,希望说的不对的地方大家帮我改正。

    相关文章

      网友评论

          本文标题:单线性回归-步骤原理-实例

          本文链接:https://www.haomeiwen.com/subject/lndpiftx.html