美文网首页PythonMachine Learning
线性回归分析预测模型的python实现

线性回归分析预测模型的python实现

作者: 盗梦者_56f2 | 来源:发表于2018-04-04 20:47 被阅读384次

    1. 简介

    在统计学中,回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照因变量的多少,可分为简单回归分析和多重回归分析;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。
    在大数据分析中,回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。
    有各种各样的回归技术用于预测。这些技术主要有三个度量(自变量的个数,因变量的类型以及回归线的形状)。比如:

    1. Linear Regression线性回归:线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系。多元线性回归可表示为Y=a+b1X +b2X2+ e,其中a表示截距,b表示直线的斜率,e是误差项。
    2. Logistic Regression逻辑回归:逻辑回归是用来计算“事件=Success”和“事件=Failure”的概率。当因变量的类型属于二元(1 / 0,真/假,是/否)变量时,我们就应该使用逻辑回归。
    3. Polynomial Regression多项式回归:对于一个回归方程,如果自变量的指数大于1,那么它就是多项式回归方程。如下方程所示:y=a+b*x^2 在这种回归技术中,最佳拟合线不是直线。而是一个用于拟合数据点的曲线。
    4. Stepwise Regression逐步回归:在处理多个自变量时,我们可以使用这种形式的回归。在这种技术中,自变量的选择是在一个自动的过程中完成的,其中包括非人为操作。
    5. Ridge Regression岭回归:当数据之间存在多重共线性(自变量高度相关)时,就需要使用岭回归分析。
    6. Lasso Regression套索回归:它类似于岭回归。
    7. ElasticNet回归:ElasticNet是Lasso和Ridge回归技术的混合体。

    本文只分析线性回归
    有两种方法用来求拟合方程:最小二乘法梯度下降法

    2. 最小二乘法

    最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。


    3. 梯度下降法

    梯度下降法(gradient descent)是一个最优化算法,常用于机器学习和人工智能当中用来递归性地逼近最小偏差模型。
    梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。
    我们给出最终的公式(α表示步长,值在0~1之间。):


    4. 实例(python)

    满意度 = a1 * 质量+ a2 * 价格 + a3 * 形象
    我们需要求出a1和a2和a3。
    数据如下:

    用户满意度 产品质量 产品价格 产品形象
    9 8 7 8
    8 8 7 8
    10 9 9 7
    7 6 6 7
    6 5 6 5
    5 4 5 6
    4 3 2 5
    6 5 7 5
    7 6 7 8
    5 6 6 7

    python代码如下:

    # -*- coding: utf-8 -*-
    import numpy as np
    from numpy import dot
    from numpy.linalg import inv
    from numpy import mat
    def least_squares(x, y):
        #最小二乘法
        theta = dot(dot(inv(dot(x.T, x)), x.T), y)
        return theta
    if __name__ == "__main__":
        x = mat([[8, 7, 8], [8, 7, 8],
                [9, 9, 7], [6, 6, 7],
                [5, 6, 5], [4, 5, 6],
                [3, 2, 5], [5, 7, 5],
                [6, 7, 8], [6, 6, 7]])
        y = mat([[9], [8], [10], [7], [6],
                [5], [4], [6], [7], [5]])
        print least_squares(x, y)
    
    #output
    [[ 0.77582377]
     [ 0.22510181]
     [ 0.09292854]]
    

    把系数带入公式得:
    满意度 = 0.78 * 质量+ 0.23 * 价格 + 0.09 * 形象
    这就是用最小二乘法拟合出来的方程。


    END

    相关文章

      网友评论

        本文标题:线性回归分析预测模型的python实现

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