精华内容
下载资源
问答
  • 本文介绍回归模型的原理知识,包括线性回归、多项式回归和逻辑回归,并详细介绍Python Sklearn机器学习库的LinearRegression和LogisticRegression算法及回归分析实例。进入基础文章,希望对您有所帮助。

    欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望我们都能在人生路上开心快乐、共同成长。

    前一篇文章讲述了数据分析部分,主要普及网络数据分析的基本概念,讲述数据分析流程和相关技术,同时详细讲解Python提供的若干第三方数据分析库,包括Numpy、Pandas、Matplotlib、Sklearn等。本文介绍回归模型的原理知识,包括线性回归、多项式回归和逻辑回归,并详细介绍Python Sklearn机器学习库的LinearRegression和LogisticRegression算法及回归分析实例。进入基础文章,希望对您有所帮助。

    下载地址:

    前文赏析:

    第一部分 基础语法

    第二部分 网络爬虫

    第三部分 数据分析和机器学习

    作者新开的“娜璋AI安全之家”将专注于Python和安全技术,主要分享Web渗透、系统安全、人工智能、大数据分析、图像识别、恶意代码检测、CVE复现、威胁情报分析等文章。虽然作者是一名技术小白,但会保证每一篇文章都会很用心地撰写,希望这些基础性文章对你有所帮助,在Python和安全路上与大家一起进步。


    监督学习(Supervised Learning)包括分类算法(Classification)和回归算法(Regression)两种,它们是根据类别标签分布的类型来定义的。回归算法用于连续型的数据预测,分类算法用于离散型的分布预测。回归算法作为统计学中最重要的工具之一,它通过建立一个回归方程用来预测目标值,并求解这个回归方程的回归系数。

    一.回归

    1.什么是回归

    回归(Regression)最早是英国生物统计学家高尔顿和他的学生皮尔逊在研究父母和子女的身高遗传特性时提出的。1855年,他们在《遗传的身高向平均数方向的回归》中这样描述“子女的身高趋向于高于父母的身高的平均值,但一般不会超过父母的身高”,首次提出来回归的概念。现在的回归分析已经和这种趋势效应没有任何瓜葛了,它只是指源于高尔顿工作,用一个或多个自变量来预测因变量的数学方法。

    在这里插入图片描述

    图1是一个简单的回归模型,X坐标是质量,Y坐标是用户满意度,从图中可知,产品的质量越高其用户评价越好,这可以拟合一条直线来预测新产品的用户满意度。

    在回归模型中,我们需要预测的变量叫做因变量,比如产品质量;选取用来解释因变量变化的变量叫做自变量,比如用户满意度。回归的目的就是建立一个回归方程来预测目标值,整个回归的求解过程就是求这个回归方程的回归系数。

    简言之,回归最简单的定义就是:

    • 给出一个点集,构造一个函数来拟合这个点集,并且尽可能的让该点集与拟合函数间的误差最小,如果这个函数曲线是一条直线,那就被称为线性回归,如果曲线是一条三次曲线,就被称为三次多项回归。

    2.线性回归

    首先,作者引用类似于斯坦福大学机器学习公开课线性回归的例子,给大家讲解线性回归的基础知识和应用,方便大家的理解。同时,作者强烈推荐大家学习原版Andrew Ng教授的斯坦福机器学习公开课,会让您非常受益。

    在这里插入图片描述

    假设存在表1的数据集,它是某企业的成本和利润数据集。数据集中2002年到2016年的数据集称为训练集,整个训练集共15个样本数据。重点是成本和利润两个变量,成本是输入变量或一个特征,利润是输出变量或目标变量,整个回归模型如图2所示。

    在这里插入图片描述

    现建立模型,x表示企业成本,y表示企业利润,h(Hypothesis)表示将输入变量映射到输出变量y的函数,对应一个因变量的线性回归(单变量线性回归)公式如下:

    在这里插入图片描述

    那么,现在要解决的问题是如何求解的两个参数和。我们的构想是选取的参数和使得函数尽可能接近y值,这里提出了求训练集(x,y)的平方误差函数(Squared Error Function)或最小二乘法。

    在回归方程里,最小化误差平方和方法是求特征对应回归系数的最佳方法。误差是指预测y值和真实y值之间的差值,使用误差的简单累加将使得正差值和负差值相互抵消,所采用的平方误差(最小二乘法)如下:

    在这里插入图片描述

    在数学上,求解过程就转化为求一组值使上式取到最小值,最常见的求解方法是梯度下降法(Gradient Descent)。根据平方误差,定义该线性回归模型的损耗函数(Cost Function)为,公式如下:
    在这里插入图片描述

    选择适当的参数让其最小化min,即可实现拟合求解过程。通过上面的这个示例,我们就可以对线性回归模型进行如下定义:根据样本x和y的坐标,去预估函数h,寻求变量之间近似的函数关系。公式如下:

    在这里插入图片描述

    其中,n表示特征数目,表示每个训练样本的第i个特种值,当只有一个因变量x时,称为一元线性回归,类似于;而当多个因变量时,成为多元线性回归。我们的目的是使最小化,从而最好的将样本数据集进行拟合,更好地预测新的数据。

    多项式回归或逻辑回归相关知识将在后面介绍。


    二.线性回归分析

    线性回归是数据挖掘中基础的算法之一,其核心思想是求解一组因变量和自变量之间的方程,得到回归函数,同时误差项通常使用最小二乘法进行计算。在本书常用的Sklaern机器学习包中将调用Linear_model子类的LinearRegression类进行线性回归模型计算。

    1.LinearRegression

    LinearRegression回归模型在Sklearn.linear_model子类下,主要是调用fit(x,y)函数来训练模型,其中x为数据的属性,y为所属类型。sklearn中引用回归模型的代码如下:

    from sklearn import linear_model          #导入线性模型  
    regr = linear_model.LinearRegression()    #使用线性回归  
    print(regr)
    

    输出函数的构造方法如下:

    LinearRegression(copy_X=True,   
    		fit_intercept=True,   
            n_jobs=1,   
            normalize=False) 
    

    其中参数说明如下:

    • copy_X:布尔型,默认为True。是否对X复制,如果选择False,则直接对原始数据进行覆盖,即经过中心化、标准化后,把新数据覆盖到原数据上。
    • fit_intercept:布尔型,默认为True。是否对训练数据进行中心化,如果是True表示对输入的训练数据进行中心化处理,如果是False则输入数据已经中心化处理,后面的过程不再进行中心化处理。
    • n_jobs:整型,默认为1。计算时设置的任务个数,如果设置为-1表示使用所有的CPU。该参数对于目标个数大于1且规模足够大的问题有加速作用。
    • normalize:布尔型,默认为False。是否对数据进行标准化处理。

    LinearRegression类主要包括如下方法:

    在这里插入图片描述

    • fit(X,y[,n_jobs])
      对训练集X,y进行训练,分析模型参数,填充数据集。其中X为特征,y为标记或类属性。
    • predict(X)
      使用训练得到的估计器或模型对输入的X数据集进行预测,返回结果为预测值。数据集X通常划分为训练集和测试集。
    • decision_function(X)
      使用训练得到的估计器或模型对数据集X进行预测。它与predict(X)区别在于该方法包含了对输入数据的类型检查和当前对象是否存在coef_属性的检查,更安全。
    • score(X, y[,]samples_weight)
      返回对于以X为samples、y为target的预测效果评分。
    • get_params([deep])
      获取该估计器(Estimator)的参数。
    • **set_params(params)
      设置该估计器(Estimator)的参数。
    • coef_
      存放LinearRegression模型的回归系数。
    • intercept_
      存放LinearRegression模型的回归截距。

    现在对前面的企业成本和利润数据集进行线性回归实验。完整代码如下:

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    from sklearn import linear_model     #导入线性模型
    import matplotlib.pyplot as plt       
    import numpy as np
    
    #X表示企业成本 Y表示企业利润
    X = [[400], [450], [486], [500], [510], [525], [540], [549], [558], [590], [610], [640], [680], [750], [900]]
    Y = [[80], [89], [92], [102], [121], [160], [180], [189], [199], [203], [247], [250], [259], [289], [356]]
    print('数据集X: ', X)
    print('数据集Y: ', Y)
    
    #回归训练
    clf = linear_model.LinearRegression() 
    clf.fit(X, Y)
    
    #预测结果
    X2 = [[400], [750], [950]]
    Y2 = clf.predict(X2)
    print(Y2)
    res = clf.predict(np.array([1200]).reshape(-1, 1))[0]   
    print('预测成本1200元的利润:$%.1f' % res) 
    
    #绘制线性回归图形
    plt.plot(X, Y, 'ks')                 #绘制训练数据集散点图
    plt.plot(X2, Y2, 'g-')               #绘制预测数据集直线
    plt.show()
    

    调用sklearn包中的LinearRegression()回归函数,fit(X,Y)载入数据集进行训练,然后通过predict(X2)预测数据集X2的利润,并将预测结果绘制成直线,(X,Y)数据集绘制成散点图,如图3所示。

    在这里插入图片描述

    同时调用代码预测2017年企业成本为1200元的利润为575.1元。注意,线性模型的回归系数会保存在coef_变量中,截距保存在intercept_变量中。clf.score(X, Y) 是一个评分函数,返回一个小于1的得分。评分过程的代码如下:

    print('系数', clf.coef_)
    print('截距', clf.intercept_)
    print('评分函数', clf.score(X, Y))
    
    '''
    系数 [[ 0.62402912]]
    截距 [-173.70433885]
    评分函数 0.911831188777
    '''
    

    在这里插入图片描述

    该直线对应的回归函数为:y = 0.62402912 * x - 173.70433885,则X2[1]=400这个点预测的利润值为75.9,而X1中成本为400元对应的真实利润是80元,预测是基本准确的。


    2.线性回归预测糖尿病

    (1).糖尿病数据集
    Sklearn机器学习包提供了糖尿病数据集(Diabetes Dataset),该数据集主要包括442行数据,10个特征值,分别是:年龄(Age)、性别(Sex)、体质指数(Body mass index)、平均血压(Average Blood Pressure)、S1~S6一年后疾病级数指标。预测指标为Target,它表示一年后患疾病的定量指标。原网址的描述如图4所示:

    在这里插入图片描述

    下面代码进行简单的调用及数据规模的测试。

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    from sklearn import datasets
    diabetes = datasets.load_diabetes()                           #载入数据  
    print(diabetes.data)                                          #数据  
    print(diabetes.target)                                        #类标  
    print('总行数: ', len(diabetes.data), len(diabetes.target))         
    print('特征数: ', len(diabetes.data[0]))                      #每行数据集维数  
    print('数据类型: ', diabetes.data.shape)                     
    print(type(diabetes.data), type(diabetes.target))     
    

    调用load_diabetes()函数载入糖尿病数据集,然后输出其数据data和类标target。输出总行数442行,特征数共10个,类型为(442L, 10L)。其输出如下所示:

    [[ 0.03807591  0.05068012  0.06169621 ..., -0.00259226  0.01990842 
      -0.01764613] 
     [-0.00188202 -0.04464164 -0.05147406 ..., -0.03949338 -0.06832974 
      -0.09220405] 
      ... 
     [-0.04547248 -0.04464164 -0.0730303  ..., -0.03949338 -0.00421986 
       0.00306441]] 
    [ 151.   75.  141.  206.  135.   97.  138.   63.  110.  310.  101. 
      ... 
    64.   48.  178.  104.  132.  220.   57.] 
    总行数:  442 442 
    特征数:  10 
    数据类型:  (442L, 10L) 
    <type 'numpy.ndarray'> <type 'numpy.ndarray'>         
    

    (2).代码实现
    现在我们将糖尿病数据集划分为训练集和测试集,整个数据集共442行,我们取前422行数据用来线性回归模型训练,后20行数据用来预测。其中取预测数据的代码为diabetes_x_temp[-20:],表示从后20行开始取值,直到数组结束,共取值20个数。

    整个数据集共10个特征值,为了方便可视化画图我们只获取其中一个特征进行实验,这也可以绘制图形,而真实分析中,通常经过降维处理再绘制图形。这里获取第3个特征,对应代码为:diabetes_x_temp = diabetes.data[:, np.newaxis, 2]。完整代码如下:

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    from sklearn import datasets  
    import matplotlib.pyplot as plt  
    from sklearn import linear_model
    import numpy as np  
    
    #数据集划分
    diabetes = datasets.load_diabetes()                #载入数据  
    diabetes_x_temp = diabetes.data[:, np.newaxis, 2]  #获取其中一个特征  
    diabetes_x_train = diabetes_x_temp[:-20]           #训练样本  
    diabetes_x_test = diabetes_x_temp[-20:]            #测试样本 后20行  
    diabetes_y_train = diabetes.target[:-20]           #训练标记  
    diabetes_y_test = diabetes.target[-20:]            #预测对比标记
    
    #回归训练及预测  
    clf = linear_model.LinearRegression()  
    clf.fit(diabetes_x_train, diabetes_y_train)        #训练数据集  
    pre = clf.predict(diabetes_x_test)
    
    #绘图  
    plt.title(u'LinearRegression Diabetes')            #标题  
    plt.xlabel(u'Attributes')                          #x轴坐标  
    plt.ylabel(u'Measure of disease')                  #y轴坐标    
    plt.scatter(diabetes_x_test, diabetes_y_test, color = 'black')  #散点图   
    plt.plot(diabetes_x_test, pre, color='blue', linewidth = 2)     #预测直线
    plt.show()          
    

    输出结果如图5所示,每个点表示真实的值,而直线表示预测的结果。

    在这里插入图片描述


    (3).代码优化
    下面代码增加了几个优化措施,包括增加了斜率、 截距的计算,可视化绘图增加了散点到线性方程的距离线,增加了保存图片设置像素代码等。这些优化都更好地帮助我们分析真实的数据集。

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    from sklearn import datasets
    import numpy as np
    from sklearn import linear_model
    import matplotlib.pyplot as plt
    
    #第一步 数据集划分
    d = datasets.load_diabetes()  #数据 10*442
    x = d.data
    x_one = x[:,np.newaxis, 2]    #获取一个特征 第3列数据
    y = d.target                  #获取的正确结果
    x_train = x_one[:-42]         #训练集X [  0:400]
    x_test = x_one[-42:]          #预测集X [401:442]
    y_train = y[:-42]             #训练集Y [  0:400]
    y_test = y[-42:]              #预测集Y [401:442]
    
    #第二步 线性回归实现
    clf = linear_model.LinearRegression()
    print(clf)
    clf.fit(x_train, y_train)
    pre = clf.predict(x_test)
    print('预测结果', pre)
    print('真实结果', y_test)
       
    #第三步 评价结果
    cost = np.mean(y_test-pre)**2   #2次方
    print('平方和计算:', cost)
    print('系数', clf.coef_) 
    print('截距', clf.intercept_)  
    print('方差', clf.score(x_test, y_test))
    
    #第四步 绘图
    plt.plot(x_test, y_test, 'k.')      #散点图
    plt.plot(x_test, pre, 'g-')        #预测回归直线
    #绘制点到直线距离
    for idx, m in enumerate(x_test):
        plt.plot([m, m],[y_test[idx], pre[idx]], 'r-')
    
    plt.savefig('blog12-01.png', dpi=300) #保存图片
    plt.show()      
    

    绘制的图形如图6所示。

    在这里插入图片描述

    输出结果如下:

    LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
    预测结果 [ 196.51241167  109.98667708  121.31742804  245.95568858  204.75295782
      270.67732703   75.99442421  241.8354155   104.83633574  141.91879342
      126.46776938  208.8732309   234.62493762  152.21947611  159.42995399
      161.49009053  229.47459628  221.23405012  129.55797419  100.71606266
      118.22722323  168.70056841  227.41445974  115.13701842  163.55022706
      114.10695016  120.28735977  158.39988572  237.71514243  121.31742804
       98.65592612  123.37756458  205.78302609   95.56572131  154.27961264
      130.58804246   82.17483382  171.79077322  137.79852034  137.79852034
      190.33200206   83.20490209]
    真实结果 [ 175.   93.  168.  275.  293.  281.   72.  140.  189.  181.  209.  136.
      261.  113.  131.  174.  257.   55.   84.   42.  146.  212.  233.   91.
      111.  152.  120.   67.  310.   94.  183.   66.  173.   72.   49.   64.
       48.  178.  104.  132.  220.   57.]
    
    平方和计算: 83.192340827
    系数 [ 955.70303385]
    截距 153.000183957
    方差 0.427204267067
    

    其中cost = np.mean(y_test-pre)**2表示计算预测结果和真实结果之间的平方和,为83.192340827,根据系数和截距得出其方程为:y = 955.70303385 * x + 153.000183957。


    三.多项式回归分析

    1.基础概念

    线性回归研究的是一个目标变量和一个自变量之间的回归问题,但有时候在很多实际问题中,影响目标变量的自变量往往不止一个,而是多个,比如绵羊的产毛量这一变量同时受到绵羊体重、胸围、体长等多个变量的影响,因此需要设计一个目标变量与多个自变量间的回归分析,即多元回归分析。由于线性回归并不适用于所有的数据,我们需要建立曲线来适应我们的数据,现实世界中的曲线关系很多都是增加多项式实现的,比如一个二次函数模型:

    在这里插入图片描述

    再或者一个三次函数模型:

    在这里插入图片描述

    这两个模型我们绘制的图形如下所示:

    在这里插入图片描述

    多项式回归(Polynomial Regression)是研究一个因变量与一个或多个自变量间多项式的回归分析方法。如果自变量只有一个时,称为一元多项式回归;如果自变量有多个时,称为多元多项式回归。在一元回归分析中,如果依变量y与自变量x的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。17.3小节主要讲解一元多次的多项式回归分析,一元m次多项式方程如下:

    在这里插入图片描述

    其方程的求解过程希望读者下来自行学习,接下来作者主要讲解Python如何代码实现多项式回归分析的。


    2.PolynomialFeatures

    Python的多项式回归需要导入sklearn.preprocessing子类中PolynomialFeatures类实现。PolynomialFeatures对应的函数原型如下:

    class sklearn.preprocessing.PolynomialFeatures(degree=2, 
    		interaction_only=False, 
    		include_bias=True)
    

    PolynomialFeatures类在Sklearn官网给出的解释是:专门产生多项式的模型或类,并且多项式包含的是相互影响的特征集。共有三个参数,degree表示多项式阶数,一般默认值是2;interaction_only如果值是true(默认是False),则会产生相互影响的特征集;include_bias表示是否包含偏差列。

    PolynomialFeatures类通过实例化一个多项式,建立等差数列矩阵,然后进行训练和预测,最后绘制相关图形,接下来与前面的一元线性回归分析进行对比试验。


    3.多项式回归预测成本和利润

    本小节主要讲解多项式回归分析实例,分析的数据集是表17.1提供的企业成本和利润数据集。下面直接给出线性回归和多项式回归分析对比的完整代码和详细注释。

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    from sklearn.linear_model import LinearRegression     
    from sklearn.preprocessing import PolynomialFeatures
    import matplotlib.pyplot as plt       
    import numpy as np
    
    #X表示企业成本 Y表示企业利润
    X = [[400], [450], [486], [500], [510], [525], [540], [549], [558], [590], [610], [640], [680], [750], [900]]
    Y = [[80], [89], [92], [102], [121], [160], [180], [189], [199], [203], [247], [250], [259], [289], [356]]
    print('数据集X: ', X)
    print('数据集Y: ', Y)
    
    #第一步 线性回归分析
    clf = LinearRegression() 
    clf.fit(X, Y)                     
    X2 = [[400], [750], [950]]
    Y2 = clf.predict(X2)
    print(Y2)
    res = clf.predict(np.array([1200]).reshape(-1, 1))[0]   
    print('预测成本1200元的利润:$%.1f' % res) 
    plt.plot(X, Y, 'ks')    #绘制训练数据集散点图
    plt.plot(X2, Y2, 'g-')  #绘制预测数据集直线
    
    #第二步 多项式回归分析
    xx = np.linspace(350,950,100) #350到950等差数列
    quadratic_featurizer = PolynomialFeatures(degree = 2) #实例化一个二次多项式
    x_train_quadratic = quadratic_featurizer.fit_transform(X) #用二次多项式x做变换
    X_test_quadratic = quadratic_featurizer.transform(X2)
    regressor_quadratic = LinearRegression()
    regressor_quadratic.fit(x_train_quadratic, Y)
    
    #把训练好X值的多项式特征实例应用到一系列点上,形成矩阵
    xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))
    plt.plot(xx, regressor_quadratic.predict(xx_quadratic), "r--",
             label="$y = ax^2 + bx + c$",linewidth=2)
    plt.legend()
    plt.show()    
    

    输出图形如下图所示,其中黑色散点图表示真实的企业成本和利润的关系,绿色直线为一元线性回归方程,红色虚曲线为二次多项式方程。它更接近真实的散点图。

    在这里插入图片描述

    这里我们使用R方(R-Squared)来评估多项式回归预测的效果,R方也叫确定系数(Coefficient of Determination),它表示模型对现实数据拟合的程度。计算R方的方法有几种,一元线性回归中R方等于皮尔逊积矩相关系数(Pearson Product Moment Correlation Coefficient)的平方,该方法计算的R方是一定介于0~1之间的正数。另一种是Sklearn库提供的方法来计算R方。R方计算代码如下:

    print('1 r-squared', clf.score(X, Y))
    print('2 r-squared', regressor_quadratic.score(x_train_quadratic, Y))
    

    输出如下所示:

    ('1 r-squared', 0.9118311887769025)
    ('2 r-squared', 0.94073599498559335)
    

    在这里插入图片描述

    一元线性回归的R方值为0.9118,多项式回归的R方值为0.9407,说明数据集中超过94%的价格都可以通过模型解释。最后补充5次项的拟合过程,下面只给出核心代码。

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    from sklearn.linear_model import LinearRegression     
    from sklearn.preprocessing import PolynomialFeatures
    import matplotlib.pyplot as plt       
    import numpy as np
    
    #X表示企业成本 Y表示企业利润
    X = [[400], [450], [486], [500], [510], [525], [540], [549], [558], [590], [610], [640], [680], [750], [900]]
    Y = [[80], [89], [92], [102], [121], [160], [180], [189], [199], [203], [247], [250], [259], [289], [356]]
    print('数据集X: ', X)
    print('数据集Y: ', Y)
    
    #第一步 线性回归分析
    clf = LinearRegression() 
    clf.fit(X, Y)                     
    X2 = [[400], [750], [950]]
    Y2 = clf.predict(X2)
    print(Y2)
    res = clf.predict(np.array([1200]).reshape(-1, 1))[0]   
    print('预测成本1200元的利润:$%.1f' % res) 
    plt.plot(X, Y, 'ks')    #绘制训练数据集散点图
    plt.plot(X2, Y2, 'g-')  #绘制预测数据集直线
    
    #第二步 多项式回归分析
    xx = np.linspace(350,950,100) 
    quadratic_featurizer = PolynomialFeatures(degree = 5) 
    x_train_quadratic = quadratic_featurizer.fit_transform(X) 
    X_test_quadratic = quadratic_featurizer.transform(X2)
    regressor_quadratic = LinearRegression()
    regressor_quadratic.fit(x_train_quadratic, Y)
    #把训练好X值的多项式特征实例应用到一系列点上,形成矩阵
    xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))
    plt.plot(xx, regressor_quadratic.predict(xx_quadratic), "r--",
             label="$y = ax^2 + bx + c$",linewidth=2)
    plt.legend()
    plt.show()
    print('1 r-squared', clf.score(X, Y))
    print('5 r-squared', regressor_quadratic.score(x_train_quadratic, Y))
    
    # ('1 r-squared', 0.9118311887769025)
    # ('5 r-squared', 0.98087802460869788)
    

    输出如下所示,其中红色虚线为五次多项式曲线,它更加接近真实数据集的分布情况,而绿色直线为一元线性回归方程,显然相较于五次多项式曲线,线性方程拟合的结果更差。同时,五次多项式曲线的R方值为98.08%,非常准确的预测了数据趋势。

    在这里插入图片描述

    最后补充一点,建议多项式回归的阶数不要太高,否则会出现过拟合现象。


    四.逻辑回归

    1.基础原理

    在前面讲述的回归模型中,处理的因变量都是数值型区间变量,建立的模型描述是因变量的期望与自变量之间的线性关系或多项式曲线关系。比如常见的线性回归模型:

    在这里插入图片描述

    而在采用回归模型分析实际问题中,所研究的变量往往不全是区间变量而是顺序变量或属性变量,比如二项分布问题。通过分析年龄、性别、体质指数、平均血压、疾病指数等指标,判断一个人是否换糖尿病,Y=0表示未患病,Y=1表示患病,这里的响应变量是一个两点(0或1)分布变量,它就不能用h函数连续的值来预测因变量Y(Y只能取0或1)。

    总之,线性回归或多项式回归模型通常是处理因变量为连续变量的问题,如果因变量是定性变量,线性回归模型就不再适用了,此时需采用逻辑回归模型解决。

    逻辑回归(Logistic Regression)是用于处理因变量为分类变量的回归问题,常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法。

    在这里插入图片描述

    二分类问题的概率与自变量之间的关系图形往往是一个S型曲线,如图17.10所示,采用的Sigmoid函数实现。这里我们将该函数定义如下:

    在这里插入图片描述

    函数的定义域为全体实数,值域在[0,1]之间,x轴在0点对应的结果为0.5。当x取值足够大的时候,可以看成0或1两类问题,大于0.5可以认为是1类问题,反之是0类问题,而刚好是0.5,则可以划分至0类或1类。对于0-1型变量,y=1的概率分布公式定义如下:

    在这里插入图片描述

    y=0的概率分布公式定义如下:

    在这里插入图片描述

    其离散型随机变量期望值公式如下:

    在这里插入图片描述

    采用线性模型进行分析,其公式变换如下:

    在这里插入图片描述

    而实际应用中,概率p与因变量往往是非线性的,为了解决该类问题,我们引入了logit变换,使得logit§与自变量之间存在线性相关的关系,逻辑回归模型定义如下:

    在这里插入图片描述

    通过推导,概率p变换如下,这与Sigmoid函数相符,也体现了概率p与因变量之间的非线性关系。以0.5为界限,预测p大于0.5时,我们判断此时y更可能为1,否则y为0。

    在这里插入图片描述

    得到所需的Sigmoid函数后,接下来只需要和前面的线性回归一样,拟合出该式中n个参数θ即可。下列为绘制Sigmoid曲线,输出如图10所示。

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    import matplotlib.pyplot as plt
    import numpy as np
    
    def Sigmoid(x):
        return 1.0 / (1.0 + np.exp(-x))
    
    x= np.arange(-10, 10, 0.1)
    h = Sigmoid(x)                #Sigmoid函数
    plt.plot(x, h)
    plt.axvline(0.0, color='k')   #坐标轴上加一条竖直的线(0位置)
    plt.axhspan(0.0, 1.0, facecolor='1.0', alpha=1.0, ls='dotted')  
    plt.axhline(y=0.5, ls='dotted', color='k') 
    plt.yticks([0.0, 0.5, 1.0])  #y轴标度
    plt.ylim(-0.1, 1.1)          #y轴范围
    plt.show()
    

    由于篇幅有限,逻辑回归构造损失函数J函数,求解最小J函数及回归参数θ的方法就不在叙述,原理和前面介绍的一样,请读者下去深入研究。

    在这里插入图片描述


    2.LogisticRegression

    LogisticRegression回归模型在Sklearn.linear_model子类下,调用sklearn逻辑回归算法步骤比较简单,即:

    • 导入模型。调用逻辑回归LogisticRegression()函数。
    • fit()训练。调用fit(x,y)的方法来训练模型,其中x为数据的属性,y为所属类型。
    • predict()预测。利用训练得到的模型对数据集进行预测,返回预测结果。

    代码如下:

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    from sklearn.linear_model import LogisticRegression  #导入逻辑回归模型 
    clf = LogisticRegression()
    print(clf)
    clf.fit(train_feature,label)
    predict['label'] = clf.predict(predict_feature)
    

    输出函数的构造方法如下:

    LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
              intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,
              penalty='l2', random_state=None, solver='liblinear', tol=0.0001,
              verbose=0, warm_start=False)
    

    这里仅介绍两个参数:参数penalty表示惩罚项,包括两个可选值L1和L2。L1表示向量中各元素绝对值的和,常用于特征选择;L2表示向量中各个元素平方之和再开根号,当需要选择较多的特征时,使用L2参数,使他们都趋近于0。C值的目标函数约束条件为:s.t.||w||1<C,默认值是0,C值越小,则正则化强度越大。


    3.鸢尾花数据集回归分析实例

    下面将结合Scikit-learn官网的逻辑回归模型分析鸢尾花数据集。由于该数据分类标签划分为3类(0类、1类、2类),属于三分类问题,所以能利用逻辑回归模型对其进行分析。

    (1).鸢尾花数据集
    在Sklearn机器学习包中,集成了各种各样的数据集,包括前面的糖尿病数据集,这里引入的是鸢尾花卉(Iris)数据集,它也是一个很常用的数据集。该数据集一共包含4个特征变量,1个类别变量,共有150个样本。其中四个特征分别是萼片的长度和宽度、花瓣的长度和宽度,一个类别变量是标记鸢尾花所属的分类情况,该值包含三种情况,即山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。鸢尾花数据集详细介绍如表2所示:

    在这里插入图片描述

    Class 类别变量。0表示山鸢尾,1表示变色鸢尾,2表示维吉尼亚鸢尾。 int
    iris里有两个属性iris.data,iris.target。data是一个矩阵,每一列代表了萼片或花瓣的长宽,一共4列,每一行代表一个被测量的鸢尾植物,一共采样了150条记录,即150朵鸢尾花样本。

    from sklearn.datasets import load_iris   #导入数据集iris
    iris = load_iris()  #载入数据集
    print(iris.data)
    

    输出如下所示:

    [[ 5.1  3.5  1.4  0.2]
     [ 4.9  3.   1.4  0.2]
     [ 4.7  3.2  1.3  0.2]
     [ 4.6  3.1  1.5  0.2]
     ....
     [ 6.7  3.   5.2  2.3]
     [ 6.3  2.5  5.   1.9]
     [ 6.5  3.   5.2  2. ]
     [ 6.2  3.4  5.4  2.3]
     [ 5.9  3.   5.1  1.8]]
    

    target是一个数组,存储了每行数据对应的样本属于哪一类鸢尾植物,要么是山鸢尾(值为0),要么是变色鸢尾(值为1),要么是维吉尼亚鸢尾(值为2),数组的长度是150。

    print(iris.target)           #输出真实标签
    print(len(iris.target))      #150个样本 每个样本4个特征
    print(iris.data.shape)  
    
    [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
     0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
     1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
     2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
     2 2]
    150
    (150L, 4L)
    

    从输出结果可以看到,类标共分为三类,前面50个类标位0,中间50个类标位1,后面为2。下面给详细介绍使用逻辑回归对这个数据集进行分析的代码。


    (2).散点图绘制
    在载入了鸢尾花数据集(数据data和标签target)之后,我们需要获取其中两列数据或两个特征,再调用scatter()函数绘制散点图。其中获取一个特征的核心代码为:X = [x[0] for x in DD],将获取的值赋值给X变量。完整代码如下:

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn.datasets import load_iris    #导入数据集iris
      
    #载入数据集  
    iris = load_iris()  
    print(iris.data)           #输出数据集  
    print(iris.target)         #输出真实标签
    
    #获取花卉两列数据集  
    DD = iris.data  
    X = [x[0] for x in DD]  
    print(X)  
    Y = [x[1] for x in DD]  
    print(Y)  
      
    #plt.scatter(X, Y, c=iris.target, marker='x')
    plt.scatter(X[:50], Y[:50], color='red', marker='o', label='setosa') #前50个样本
    plt.scatter(X[50:100], Y[50:100], color='blue', marker='x', label='versicolor') #中间50个
    plt.scatter(X[100:], Y[100:],color='green', marker='+', label='Virginica') #后50个样本
    plt.legend(loc=2) #左上角
    plt.show()
    

    输出如图11所示:

    在这里插入图片描述


    (3).线性回归分析
    下述代码先获取鸢尾花数据集的前两列数据,再调用Sklearn库中线性回归模型进行分析,完整代码如文件所示。

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    
    #第一步 导入数据集
    from sklearn.datasets import load_iris
    hua = load_iris()
    
    #获取花瓣的长和宽
    x = [n[0] for n in hua.data]
    y = [n[1] for n in hua.data]
    import numpy as np #转换成数组
    x = np.array(x).reshape(len(x),1)
    y = np.array(y).reshape(len(y),1)
    
    #第二步 线性回归分析
    from sklearn.linear_model import LinearRegression
    clf = LinearRegression()
    clf.fit(x,y)
    pre = clf.predict(x)
    print(pre)
    
    #第三步 画图
    import matplotlib.pyplot as plt
    plt.scatter(x,y,s=100)
    plt.plot(x,pre,"r-",linewidth=4)
    for idx, m in enumerate(x):
        plt.plot([m,m],[y[idx],pre[idx]], 'g-')
    plt.show()
    

    输出图形如图12所示,并且可以看到所有散点到拟合的一元一次方程的距离。

    在这里插入图片描述


    (4).逻辑回归分析鸢尾花
    讲解完线性回归分析之后,那如果用逻辑回归分析的结果究竟如何呢?下面开始讲述。从散点图(图11)中可以看出,数据集是线性可分的,划分为3类,分别对应三种类型的鸢尾花,下面采用逻辑回归对其进行分析预测。

    前面使用X=[x[0] for x in DD]获取第一列数据,Y=[x[1] for x in DD]获取第二列数据,这里采用另一种方法,iris.data[:, :2]获取其中两列数据或两个特征,完整代码如下:

    # -*- coding: utf-8 -*-
    # By:Eastmount CSDN 2021-07-03
    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn.datasets import load_iris   
    from sklearn.linear_model import LogisticRegression 
    
    #载入数据集
    iris = load_iris()         
    X = X = iris.data[:, :2]   #获取花卉两列数据集
    Y = iris.target           
    
    #逻辑回归模型
    lr = LogisticRegression(C=1e5)  
    lr.fit(X,Y)
    
    #meshgrid函数生成两个网格矩阵
    h = .02
    x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
    y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    
    #pcolormesh函数将xx,yy两个网格矩阵和对应的预测结果Z绘制在图片上
    Z = lr.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    plt.figure(1, figsize=(8,6))
    plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)
    
    #绘制散点图
    plt.scatter(X[:50,0], X[:50,1], color='red',marker='o', label='setosa')
    plt.scatter(X[50:100,0], X[50:100,1], color='blue', marker='x', label='versicolor')
    plt.scatter(X[100:,0], X[100:,1], color='green', marker='s', label='Virginica') 
    
    plt.xlabel('Sepal length')
    plt.ylabel('Sepal width')
    plt.xlim(xx.min(), xx.max())
    plt.ylim(yy.min(), yy.max())
    plt.xticks(())
    plt.yticks(())
    plt.legend(loc=2) 
    plt.show()
    

    输出如图13所示。经过逻辑回归后划分为三个区域,左上角部分为红色的圆点,对应setosa鸢尾花;右上角部分为绿色方块,对应virginica鸢尾花;中间下部分为蓝色星形,对应versicolor鸢尾花。散点图为各数据点真实的花类型,划分的三个区域为数据点预测的花类型,预测的分类结果与训练数据的真实结果结果基本一致,部分鸢尾花出现交叉。

    在这里插入图片描述

    下面作者对导入数据集后的代码进行详细讲解。

    • lr = LogisticRegression(C=1e5)
      初始化逻辑回归模型,C=1e5表示目标函数。
    • lr.fit(X,Y)
      调用逻辑回归模型进行训练,参数X为数据特征,参数Y为数据类标。
    • x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
    • y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5
    • xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
      获取鸢尾花数据集的两列数据,对应为花萼长度和花萼宽度,每个点的坐标就是(x,y)。 先取X二维数组的第一列(长度)的最小值、最大值和步长h(设置为0.02)生成数组,再取X二维数组的第二列(宽度)的最小值、最大值和步长h生成数组, 最后用meshgrid函数生成两个网格矩阵xx和yy,如下所示:
    [[ 3.8   3.82  3.84 ...,  8.36  8.38  8.4 ]
     [ 3.8   3.82  3.84 ...,  8.36  8.38  8.4 ]
     ..., 
     [ 3.8   3.82  3.84 ...,  8.36  8.38  8.4 ]
     [ 3.8   3.82  3.84 ...,  8.36  8.38  8.4 ]]
    [[ 1.5   1.5   1.5  ...,  1.5   1.5   1.5 ]
     [ 1.52  1.52  1.52 ...,  1.52  1.52  1.52]
     ..., 
     [ 4.88  4.88  4.88 ...,  4.88  4.88  4.88]
     [ 4.9   4.9   4.9  ...,  4.9   4.9   4.9 ]]
    
    • Z = lr.predict(np.c_[xx.ravel(), yy.ravel()])
      调用ravel()函数将xx和yy的两个矩阵转变成一维数组,由于两个矩阵大小相等,因此两个一维数组大小也相等。np.c_[xx.ravel(), yy.ravel()]是获取并合并成矩阵,即:
    xx.ravel() 
    [ 3.8   3.82  3.84 ...,  8.36  8.38  8.4 ]
    yy.ravel() 
    [ 1.5  1.5  1.5 ...,  4.9  4.9  4.9]
    np.c_[xx.ravel(), yy.ravel()]
    [[ 3.8   1.5 ]
     [ 3.82  1.5 ]
     [ 3.84  1.5 ]
     ..., 
     [ 8.36  4.9 ]
     [ 8.38  4.9 ]
     [ 8.4   4.9 ]]
    

    总之,上述操作是把第一列花萼长度数据按h取等分作为行,并复制多行得到xx网格矩阵;再把第二列花萼宽度数据按h取等分作为列,并复制多列得到yy网格矩阵;最后将xx和yy矩阵都变成两个一维数组,再调用np.c_[]函数将其组合成一个二维数组进行预测。

    • Z = logreg.predict(np.c_[xx.ravel(), yy.ravel()])
      调用predict()函数进行预测,预测结果赋值给Z。即:
    Z = logreg.predict(np.c_[xx.ravel(), yy.ravel()])
    [1 1 1 ..., 2 2 2]
    size: 39501
    
    • Z = Z.reshape(xx.shape)
      调用reshape()函数修改形状,将Z变量转换为两个特征(长度和宽度),则39501个数据转换为171*231的矩阵。Z = Z.reshape(xx.shape)输出如下:
    [[1 1 1 ..., 2 2 2]
     [1 1 1 ..., 2 2 2]
     [0 1 1 ..., 2 2 2]
     ..., 
     [0 0 0 ..., 2 2 2]
     [0 0 0 ..., 2 2 2]
     [0 0 0 ..., 2 2 2]]
    
    • plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)
      调用pcolormesh()函数将xx、yy两个网格矩阵和对应的预测结果Z绘制在图片上,可以发现输出为三个颜色区块,分布表示分类的三类区域。cmap=plt.cm.Paired表示绘图样式选择Paired主题,输出区域如下图所示:

    在这里插入图片描述

    • plt.scatter(X[:50,0], X[:50,1], color=‘red’,marker=‘o’, label=‘setosa’)
      调用scatter()绘制散点图,第一个参数为第一列数据(长度),第二个参数为第二列数据(宽度),第三、四个参数为设置点的颜色为红色,款式为圆圈,最后标记为setosa。

    五.本章小结

    回归分析是通过建立一个回归方程用来预测目标值,并求解这个回归方程的回归系数的方法。它是统计学中最重要的工具之一,包括线性回归、多项式回归、逻辑回归、非线性回归等。常用来确定变量之间是否存在相关关系,并找出数学表达式,也可以通过控制几个变量的值来预测另一个变量的值,比如房价预测、增长趋势、是否患病等问题。

    在Python中,我们通过调用Sklearn机器学习库的LinearRegression模型实现线性回归分析,调用PolynomialFeatures模型实现多项式回归分析,调用LogisticRegression模型实现逻辑回归分析。希望读者实现本章节中的每一部分代码,从而更好的用于自己的研究领域、解决自己遇到的问题。

    该系列所有代码下载地址:

    感谢在求学路上的同行者,不负遇见,勿忘初心。这周的留言感慨~

    在这里插入图片描述

    (By:娜璋之家 Eastmount 2021-07-03 夜于武汉 https://blog.csdn.net/Eastmount )


    参考文献:

    • [1] 杨秀璋. 专栏:知识图谱、web数据挖掘及NLP - CSDN博客[EB/OL]. (2016-09-19)[2017-11-07]. http://blog.csdn.net/column/details/eastmount-kgdmnlp.html.
    • [2] 张良均,王路,谭立云,苏剑林. Python数据分析与挖掘实战[M]. 北京:机械工业出版社,2016.
    • [3] (美)Wes McKinney著. 唐学韬等译. 利用Python进行数据分析[M]. 北京:机械工业出版社,2013.
    • [4] Jiawei Han,Micheline Kamber著. 范明,孟小峰译. 数据挖掘概念与技术. 北京:机械工业出版社,2007.
    • [5] 杨秀璋. [Python数据挖掘课] 五.线性回归知识及预测糖尿病实例[EB/OL].(2016-10-28)[2017-11-07]. http://blog.csdn.net/eastmount/article/details/52929765.
    • [6] 杨秀璋. [Python数据挖掘课程] 九.回归模型LinearRegression简单分析氧化物数据[EB/OL]. (2017-03-05)[2017-11-07].http://blog.csdn.net/eastmount/article/
      details/60468818.
    • [7] scikit-learn. sklearn.linear_model.LogisticRegression[EB/OL]. (2017)[2017-11-17]. http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html.
    • [8] scikit-learn. Logistic Regression 3-class Classifier[EB/OL]. (2017)[2017-11-17]. http://scikit-learn.org/stable/auto_examples/linear_model/plot_iris_logistic.html#sphx-glr-auto-examples-linear-model-plot-iris-logistic-py.
    • [9] 吴恩达. Coursera公开课: 斯坦福大学机器学习"[EB/OL]. (2011-2017)[2017-11-15]. http://open.163.com/special/opencourse/machinelearning.html.
    • [10] scikit-learn. Sklearn Datasets[EB/OL]. (2017)[2017-11-15]. http://scikit-learn.org/
      stable/datasets/.
    • [11] lsldd. 用Python开始机器学习(7:逻辑回归分类)[EB/OL]. (2014-11-27)[2017-11-15]. http://blog.csdn.net/lsldd/article/details/41551797.
    • [12] 杨秀璋. [python数据挖掘课程] 十六.逻辑回归LogisticRegression分析鸢尾花数据[EB/OL]. (2017-09-10)[2017-11-15]. http://blog.csdn.net/eastmount/article/details/77920470.
    • [13] 杨秀璋. [python数据挖掘课程] 十八.线性回归及多项式回归分析四个案例分享[EB/OL]. (2017-11-26)[2017-11-26]. http://blog.csdn.net/eastmount/article/details/78635096.
    展开全文
  • 回归分析

    千次阅读 2016-07-19 19:47:06
    本文解释了回归分析的内涵及其优势,重点总结了应该掌握的线性回归、逻辑回归、多项式回归、逐步回归、岭回归、套索回归、ElasticNet回归等七种最常用的回归技术及其关键要素,最后介绍了选择正确的回归模型的关键...

    回归分析是建模和分析数据的重要工具。本文解释了回归分析的内涵及其优势,重点总结了应该掌握的线性回归、逻辑回归、多项式回归、逐步回归、岭回归、套索回归、ElasticNet回归等七种最常用的回归技术及其关键要素,最后介绍了选择正确的回归模型的关键因素。

    什么是回归分析?

    回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。

    回归分析是建模和分析数据的重要工具。在这里,我们使用曲线/线来拟合这些数据点,在这种方式下,从曲线或线到数据点的距离差异最小。我会在接下来的部分详细解释这一点。

    我们为什么使用回归分析?

    如上所述,回归分析估计了两个或多个变量之间的关系。下面,让我们举一个简单的例子来理解它:

    比如说,在当前的经济条件下,你要估计一家公司的销售额增长情况。现在,你有公司最新的数据,这些数据显示出销售额增长大约是经济增长的2.5倍。那么使用回归分析,我们就可以根据当前和过去的信息来预测未来公司的销售情况。

    使用回归分析的好处良多。具体如下:

    它表明自变量和因变量之间的显著关系;
    它表明多个自变量对一个因变量的影响强度。

    回归分析也允许我们去比较那些衡量不同尺度的变量之间的相互影响,如价格变动与促销活动数量之间联系。这些有利于帮助市场研究人员,数据分析人员以及数据科学家排除并估计出一组最佳的变量,用来构建预测模型。

    我们有多少种回归技术?

    有各种各样的回归技术用于预测。这些技术主要有三个度量(自变量的个数,因变量的类型以及回归线的形状)。我们将在下面的部分详细讨论它们。

    对于那些有创意的人,如果你觉得有必要使用上面这些参数的一个组合,你甚至可以创造出一个没有被使用过的回归模型。但在你开始之前,先了解如下最常用的回归方法:

    1. Linear Regression线性回归

    它是最为人熟知的建模技术之一。线性回归通常是人们在学习预测模型时首选的技术之一。在这种技术中,因变量是连续的,自变量可以是连续的也可以是离散的,回归线的性质是线性的。

    线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系。

    用一个方程式来表示它,即Y=a+b*X + e,其中a表示截距,b表示直线的斜率,e是误差项。这个方程可以根据给定的预测变量(s)来预测目标变量的值。

    一元线性回归和多元线性回归的区别在于,多元线性回归有(>1)个自变量,而一元线性回归通常只有1个自变量。现在的问题是“我们如何得到一个最佳的拟合线呢?”。

    如何获得最佳拟合线(a和b的值)?

    这个问题可以使用最小二乘法轻松地完成。最小二乘法也是用于拟合回归线最常用的方法。对于观测数据,它通过最小化每个数据点到线的垂直偏差平方和来计算最佳拟合线。因为在相加时,偏差先平方,所以正值和负值没有抵消。

    我们可以使用R-square指标来评估模型性能。想了解这些指标的详细信息,可以阅读:模型性能指标Part 1,Part 2 .

    要点:

    自变量与因变量之间必须有线性关系
    多元回归存在多重共线性,自相关性和异方差性。
    线性回归对异常值非常敏感。它会严重影响回归线,最终影响预测值。
    多重共线性会增加系数估计值的方差,使得在模型轻微变化下,估计非常敏感。结果就是系数估计值不稳定
    在多个自变量的情况下,我们可以使用向前选择法,向后剔除法和逐步筛选法来选择最重要的自变量。

    2.Logistic Regression逻辑回归

    逻辑回归是用来计算“事件=Success”和“事件=Failure”的概率。当因变量的类型属于二元(1 / 0,真/假,是/否)变量时,我们就应该使用逻辑回归。这里,Y的值从0到1,它可以用下方程表示。

    odds= p/ (1-p) = probability of event occurrence / probability of not event occurrence
    ln(odds) = ln(p/(1-p))
    logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3….+bkXk
    上述式子中,p表述具有某个特征的概率。你应该会问这样一个问题:“我们为什么要在公式中使用对数log呢?”。

    因为在这里我们使用的是的二项分布(因变量),我们需要选择一个对于这个分布最佳的连结函数。它就是Logit函数。在上述方程中,通过观测样本的极大似然估计值来选择参数,而不是最小化平方和误差(如在普通回归使用的)。

    要点:

    它广泛的用于分类问题。
    逻辑回归不要求自变量和因变量是线性关系。它可以处理各种类型的关系,因为它对预测的相对风险指数OR使用了一个非线性的log转换。
    为了避免过拟合和欠拟合,我们应该包括所有重要的变量。有一个很好的方法来确保这种情况,就是使用逐步筛选方法来估计逻辑回归。
    它需要大的样本量,因为在样本数量较少的情况下,极大似然估计的效果比普通的最小二乘法差。
    自变量不应该相互关联的,即不具有多重共线性。然而,在分析和建模中,我们可以选择包含分类变量相互作用的影响。
    如果因变量的值是定序变量,则称它为序逻辑回归。
    如果因变量是多类的话,则称它为多元逻辑回归。
    3. Polynomial Regression多项式回归

    对于一个回归方程,如果自变量的指数大于1,那么它就是多项式回归方程。如下方程所示:

    y=a+b*x^2
    在这种回归技术中,最佳拟合线不是直线。而是一个用于拟合数据点的曲线。

    重点:

    虽然会有一个诱导可以拟合一个高次多项式并得到较低的错误,但这可能会导致过拟合。你需要经常画出关系图来查看拟合情况,并且专注于保证拟合合理,既没有过拟合又没有欠拟合。下面是一个图例,可以帮助理解:

    明显地向两端寻找曲线点,看看这些形状和趋势是否有意义。更高次的多项式最后可能产生怪异的推断结果。
    4. Stepwise Regression逐步回归

    在处理多个自变量时,我们可以使用这种形式的回归。在这种技术中,自变量的选择是在一个自动的过程中完成的,其中包括非人为操作。

    这一壮举是通过观察统计的值,如R-square,t-stats和AIC指标,来识别重要的变量。逐步回归通过同时添加/删除基于指定标准的协变量来拟合模型。下面列出了一些最常用的逐步回归方法:

    标准逐步回归法做两件事情。即增加和删除每个步骤所需的预测。
    向前选择法从模型中最显著的预测开始,然后为每一步添加变量。
    向后剔除法与模型的所有预测同时开始,然后在每一步消除最小显着性的变量。

    这种建模技术的目的是使用最少的预测变量数来最大化预测能力。这也是处理高维数据集的方法之一。

    1. Ridge Regression岭回归

    岭回归分析是一种用于存在多重共线性(自变量高度相关)数据的技术。在多重共线性情况下,尽管最小二乘法(OLS)对每个变量很公平,但它们的差异很大,使得观测值偏移并远离真实值。岭回归通过给回归估计上增加一个偏差度,来降低标准误差。

    上面,我们看到了线性回归方程。还记得吗?它可以表示为:

    y=a+ b*x

    这个方程也有一个误差项。完整的方程是:

    y=a+b*x+e (error term), [error term is the value needed to correct for a prediction error between the observed and predicted value]
    => y=a+y= a+ b1x1+ b2x2+….+e, for multiple independent variables.
    在一个线性方程中,预测误差可以分解为2个子分量。一个是偏差,一个是方差。预测错误可能会由这两个分量或者这两个中的任何一个造成。在这里,我们将讨论由方差所造成的有关误差。

    岭回归通过收缩参数λ(lambda)解决多重共线性问题。看下面的公式

    在这个公式中,有两个组成部分。第一个是最小二乘项,另一个是β2(β-平方)的λ倍,其中β是相关系数。为了收缩参数把它添加到最小二乘项中以得到一个非常低的方差。

    要点:

    除常数项以外,这种回归的假设与最小二乘回归类似;
    它收缩了相关系数的值,但没有达到零,这表明它没有特征选择功能
    这是一个正则化方法,并且使用的是L2正则化。

    1. Lasso Regression套索回归

    它类似于岭回归,Lasso (Least Absolute Shrinkage and Selection Operator)也会惩罚回归系数的绝对值大小。此外,它能够减少变化程度并提高线性回归模型的精度。看看下面的公式:

    Lasso 回归与Ridge回归有一点不同,它使用的惩罚函数是绝对值,而不是平方。这导致惩罚(或等于约束估计的绝对值之和)值使一些参数估计结果等于零。使用惩罚值越大,进一步估计会使得缩小值趋近于零。这将导致我们要从给定的n个变量中选择变量。

    要点:

    除常数项以外,这种回归的假设与最小二乘回归类似;
    它收缩系数接近零(等于零),这确实有助于特征选择;
    这是一个正则化方法,使用的是L1正则化;
    · 如果预测的一组变量是高度相关的,Lasso 会选出其中一个变量并且将其它的收缩为零。

    7.ElasticNet回归

    ElasticNet是Lasso和Ridge回归技术的混合体。它使用L1来训练并且L2优先作为正则化矩阵。当有多个相关的特征时,ElasticNet是很有用的。Lasso 会随机挑选他们其中的一个,而ElasticNet则会选择两个。

    Lasso和Ridge之间的实际的优点是,它允许ElasticNet继承循环状态下Ridge的一些稳定性。

    要点:

    在高度相关变量的情况下,它会产生群体效应;
    选择变量的数目没有限制;
    它可以承受双重收缩。

    除了这7个最常用的回归技术,你也可以看看其他模型,如Bayesian、Ecological和Robust回归。

    如何正确选择回归模型?

    当你只知道一个或两个技术时,生活往往很简单。我知道的一个培训机构告诉他们的学生,如果结果是连续的,就使用线性回归。如果是二元的,就使用逻辑回归!然而,在我们的处理中,可选择的越多,选择正确的一个就越难。类似的情况下也发生在回归模型中。

    在多类回归模型中,基于自变量和因变量的类型,数据的维数以及数据的其它基本特征的情况下,选择最合适的技术非常重要。以下是你要选择正确的回归模型的关键因素:

    数据探索是构建预测模型的必然组成部分。在选择合适的模型时,比如识别变量的关系和影响时,它应该首选的一步。
    比较适合于不同模型的优点,我们可以分析不同的指标参数,如统计意义的参数,R-square,Adjusted R-square,AIC,BIC以及误差项,另一个是Mallows’ Cp准则。这个主要是通过将模型与所有可能的子模型进行对比(或谨慎选择他们),检查在你的模型中可能出现的偏差。
    交叉验证是评估预测模型最好额方法。在这里,将你的数据集分成两份(一份做训练和一份做验证)。使用观测值和预测值之间的一个简单均方差来衡量你的预测精度。
    如果你的数据集是多个混合变量,那么你就不应该选择自动模型选择方法,因为你应该不想在同一时间把所有变量放在同一个模型中。
    它也将取决于你的目的。可能会出现这样的情况,一个不太强大的模型与具有高度统计学意义的模型相比,更易于实现。
    回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多重共线性情况下运行良好。

    展开全文
  • 7.1 单因素方差分析 7.1.1 方差分析概念 7.1.2 单因素方差分析的数据结构 ...7.3.2 一元线性回归模型 1.回归参数的估计 2.回归模型、参数的显著性检验 7.3.3 一元线性回归分析应用 多元线性回归分析

    🚀【MOOC数学建模与实验---学习笔记---整理汇总表】🚀

    🌈【学习网址:MOOC---郑州轻工业大学---数学建模与实验】🌈

    目   录

    7.1 单因素方差分析

    7.1.1 方差分析概念

    7.1.2 单因素方差分析的数据结构

    例7.1.1  三种治疗方案对降血糖的疗效比较

    7.1.3 单因素方差分析模型

    定理7.1.1 总变异 = 组间变异 + 组内变异

    例7.1.1 Matlab求解

    7.2 双因素方差分析

    7.2.1 问题引入

    7.2.2 双因素方差分析的数据结构

    7.2.3 因素方差分析模型

    1. 无交互作用的双因素方差分析模型

    2. 有交互作用的双因素方差分析模型

    7.3 一元线性回归分析

    7.3.1 回归分析的概念

    相关关系的类型

    7.3.2 一元线性回归模型

    1.回归参数的估计

    2.回归模型的显著性检验

    3.回归参数的显著性检验

    7.3.3 一元线性回归分析应用

    7.4 多元线性回归分析

    7.4.1 多元线性回归模型

    多元线性回归分析内容

    7.4.2 回归参数的估计

    7.4.3 回归方程的拟合优度

    7.4.4 显著性检验

    1.模型的显著性检验

    2. 偏回归系数的显著性检验

    7.4.5 共线性诊断

    7.5 牙膏价格问题

    7.5.1 问题描述

    7.5.2 问题分析

    7.5.3 模型假设与符号

    7.5.4 模型建立与求解

    1.牙膏价格差对销售量影响模型

    2.广告费用对销售量影响模型

    3.牙膏价格差与广告费用对销售量影响模型

    4.模型改进

    7.5.5 结果分析

    7.6 方差分析与回归分析的SPSS实现

    7.6.1 SPSS软件概述

    1 SPSS版本与安装

    2 SPSS界面

    3 SPSS特点

    4 SPSS数据

    7.6.2 SPSS与方差分析

    1 单因素方差分析

    2 双因素方差分析

    7.6.3 SPSS与回归分析 

    SPSS回归分析过程

    牙膏价格问题的回归分析


    数学方法解决实际问题,应用数学方法、概念:应用 -> 理论 -> 研究


    常用数据分析统计方法:方差分析、回归分析、主成分分析、因子分析、聚类分析、判别分析...


    历年赛题方法(全国赛):

    • 2010B 上海世博会影响力的定量评估
    • 2012A 葡萄酒的评价(回归分析、关联性分析)
    • 2013A 车道被占用对城市道路通行能力的影响(回归分析)
    • 2017B “拍照赚钱”的任务定价(回归分析、聚类分析)

    主要内容:方差分析、回归分析

    1. 单因素方差分析
    2. 多因素方差分析
    3. 一元回归分析
    4. 多元回归分析

    7.1 单因素方差分析

    数据分析   统计模型:方差分析模型、回归分析模型、主成分分析模型、聚类分析模型、因子分析模型

    7.1.1 方差分析概念

    • 在工农业生产和科学研究中,经常遇到这样的问题:影响产品产量、质量的因素很多,我们需要了解在这众多的因素中,哪些因素对影响产品产量、质量有显著影响。为此,要先做试验,然后对测试的结果进行分析。方差分析(Analysis of Variance,简称ANOVA)就是分析测试结果的一种方法。                主要是多组实验数据比较所采用的方法
    • 方差分析是检验多组样本均值间的差异是否具有统计意义的一种方法。

    例如,医学界研究几种药物对某种疾病的疗效;农业研究土壤、肥料、日照时间等因素对某种农作物产量的影响;不同饲料对牲畜体重增长的效果等都可以使用方差分析方法去解决。

    7.1.2 单因素方差分析的数据结构

    • 若指标观测值X只受一个因素A的影响,检验A在取不同的状态或水平时,对指标值X的影响称为单因素试验
    • 观测值X称为因变量(响应变量),是连续型的数值变量。
    • 因素(Factor)A是影响因变量变化的客观条件。

    设因素A有r个水平,每个水平下重复观测n次(n:重复数),则观测数据为如下形式

       \overline{x_{i}}:第i行的平均值;\overline{x}:整个实验数据的算数平均值(总均值)

    例7.1.1  三种治疗方案对降血糖的疗效比较

    例7.1.1 某医生研究一种四类降糖新药的疗效,按完全随机设计方案治疗糖尿病患者,治疗一月后,记录下每名受试者血糖下降值,资料见下表,问三种治疗方案对降血糖的疗效是否相同?【No,第1组疗效显著高于另外两组!】

    每一组,18名受试验者。3个剂量水平,每个剂量水平 重复观测 18次(n=18)。比较均值!

    7.1.3 单因素方差分析模型

    • 方差分析是从总体上判断多组数据平均数(r≥3)之间的差异是否显著。
    • 方差分析将全部数据看成是一个整体,分析构成变量的变异原因,进而计算不同变异来源的总体方差的估值。然后进行F检验,判断各样本的总体平均数是否有显著差异。若差异显著,再对平均数进行两两之间的比较。

    假设检验:分析数据之间差异是否显著。

       i:代表水平;j:代表重复数

    x_{ij} = \mu _{i} + \varepsilon _{ij} : 观测值 = 治疗方案 + 随机因素

    \mu _{i} :反映第x种(x = 1\2\3)治疗方案的平均治疗水平。

     H0:原假设;各个水平下的均值相同

    H0:先假定不同水平下的均值是相等的;三种治疗方案之间是没有差异的。-> 利用 数据分析 进行检验(类似于 反证法)

    单因素方差分析法是将样本总偏差的平方和分解成两个平方和(因子平方和误差平方和),通过这两个平方和之间的比较,导出假设检验的统计量和拒绝域。

    总偏差平方和:所有数据的偏差平方和。(求和:每个观测值与总均值之间的差的平方。)

    因子平方和:比较各个水平(行)下,数据之间的差异。xi:第i个水平下的样本均值。每个水平下的均值与总均值的偏差平方和。

    误差平方和:各个组内的偏差平方和。每一行数据内部的偏差平方和。主要与 随机误差 有关。

    自由度:自由取值的变量个数。

    定理7.1.1 总变异 = 组间变异 + 组内变异

    ST:所有数据之间的差异(xij之间的差异越大,ST就越大)。

    x_{ij} = \mu _{i} + \varepsilon _{ij} :\mu _{i} (组间变异\不同治疗方案) + \varepsilon _{ij}(组内变异)

    H0:原假设(\mu _{1} = \mu _{2} = \mu _{3} = ... = \mu _{r}

    用“均方和”进行比较:消除自由度的影响。MSA、MSE进行比较:观察SA、SE哪个引起的误差偏大。

    如果,因子平方和 所占的比例较大:各个因子之间的差异较大;

    如果,误差平方和 所占的比例较大:数据之间的差异,主要由随机误差引起。

    数据量越多,随机因素多占的比例越大,ST越大,∴ 用均方和进行比较。

    F(f_{A}, f_{E}) :F分布(第一自由度, 第二自由度)

    第一自由度:(r-1)、(水平数-1)          第二自由度:(n-r)、(样本观测值的个数-水平数)

    H0不合理:SA占的比例越大,F越大,越拒绝原假设。

    一般,r ≥ 3   《概率论与数理统计》

    拒绝原假设(各个水平下的均值相等):各个水平下的均值 有 显著差异。P值越小(小于α)(α一般为0.05)

    例7.1.1 Matlab求解

    % 例7.1.1
    x = xlsread('C:\Users\lwx\Desktop\chapter7.xlsx','Sheet1','A1:C18') % 读取数据
    % 每个水平(列)下 观测值、重复数都是一样的 单因素误差分析:重复数一样的数据容易分析处理
    [p,table,stats] = anova1(x)

    图1:方差分析表        图2:均值盒形图    箱形图    红线:反映平均血糖下降值(第1个下降值最高)     

        

    n:[18 18 18]:样本量          s:残差均方           残差自由度:51       means:均值比较

    三列数据:三组治疗方案的治疗效果;18个测试者;行数:重复数。

    7.2 双因素方差分析

    7.2.1 问题引入

    在实际应用中,指标值(因变量)往往受多个不同因素的影响。不仅这些因素会影响指标值,而且这些因素的不同水平交叉也会影响指标值。统计学中把多个因素不同水平交叉对指标值的影响称为交互作用。在多因素方差分析中,交互作用作为一个新因素来处理。 这里介绍两个因素的方差分析,亦称为双因素方差分析

    7.2.2 双因素方差分析的数据结构

    • 假设在观测指标X的试验中,有两个变化因素A和B。因素A有r个水平,记作A1 ,A2 ,…,Ar;因素B有k个水平,记作B1 ,B2 ,…,Bk;则A 与B的不同水平组合A_{i}B_{j}(i=1,2,…,r;j=1,2,…,k)共有rk个,每个 水平组合称为一个处理,每个处理作m次试验(亦可1次试验),得rkm个观测值x_{ij},双因素的有重复(无重复)观测数据表7.2.2。

       交叉项:重复观测数

    A1、B1水平下,有m个观测值。

    7.2.3 因素方差分析模型

    1. 无交互作用的双因素方差分析模型

    在双因素方差分析中,若不考虑两因素的交互作用效应,数据可采用无重复观测

       类似于 单因素方差分析

    x11...xrk:交叉水平下的观测值。

    \overline{x_{i.}}:第i行的算数平均(代表因素A的各个水平下的样本平均值)

    \overline{x_{.j}}:第j列的算数平均(代表因素B的各个水平下的样本平均值,因素B的第j个水平下 数据的算数平均);

    \overline{x}:所有数据的算数平均(总算数平均值)。

     A_{i}:第i个水平下

    在无交互作用下,分析因素A,B的不同水平对试验结果是否有显著影响,即为检验如下假设是否成立:

     检验两组假设:假设因素A下,不同水平下的均值没有差异;假设因素B...

    类似单因素方差分析数据的处理,在上述定义下,无交互作用双因素方差分析模型中的平方和分解如下。

     m=1的情况。

    SA:不同行数据之间的差异,因素A的不同水平之间的差异;SB:不同列数据之间的差异。SE:随机误差平方和。

    检验两组假设:假设因素A下,不同水平下的均值没有差异;假设因素B...   -->   构造两个检验统计量。

     无交互作用的双因素方差分析

    在Matlab中进行双因素方差分析,采用命令

    [p, table, stats] = anova2(x,reps)

    reps:试验数据(每个交叉水平下)重复次数,缺省时为1。

    % 例7.2.1
    x = [365,350,343,340,323;345,368,363,330,333;
        358,232,353,343,308;288,280,298,260,298]'; % 不转置 也行
    [p,table,stats] = anova2(x)

      此图,表格数据有误。看matlab运行图,即可。

    P值越大,越不拒绝原假设。

    2. 有交互作用的双因素方差分析模型

    在数据分析种,不一定存在交互作用,但是可以通过数据处理来识别有没有交互作用。

    交叉水平下的重复数 m。l:交叉水平下的重复数。

    \overline{x_{i.}}:第i行的算数平均(代表因素A的各个水平下的样本平均值)

    \overline{x_{.j}}:第j列的算数平均(代表因素B的各个水平下的样本平均值,因素B的第j个水平下 数据的算数平均);

    \overline{x_{ij}}:因素A、B交叉水平下的平均值。

    存在交互作用的情况下,双因素方差分析需要检验如下假设

    原假设 H03:假设不存在交互作用。

    有交互作用的双因素方差分析

     重复观测、交互作用影响

    拒绝原假设(各个水平下的均值相等):各个水平下的均值 有 显著差异。P值越小(小于α)(α一般为0.05)

    P值大,不拒绝 原假设。

    % 例7.2.2
    x = [26,19;24,20;27,23;25,22;25,21;
        20,18;17,17;22,13;21,16;17,12];
    [p,table,stats] = anova2(x,5) % 5:每个交叉水平下的重复数

    7.3 一元线性回归分析

     在应用问题研究当中,如果涉及到变量与变量之间的分析,可以借助回归分析来进行研究。

    7.3.1 回归分析的概念

    研究变量间的关系常有两种。

    • 确定性关系函数关系

    如圆面积与圆半径的关系;价格一定时,商品销售额与销售量的关系等。

    • 相关关系

    如父亲与子女身高的关系;收入水平与受教育程度间的关系等。

    变量间的相关关系不能用完全确切的函数形式表示,但在平均意义下 有一定的定量关系表达式。研究总体(总体规律)

    相关关系的类型

       不相关:无明显相关关系

    回归分析(Regression Analysis)就是研究变量间的相关关系的统计方法,是英国生物学家兼统计学家高尔顿在研究父代与子代身高关系时得到的分析方法。

    通过对客观事物中变量的大量观察或试验获得的数据,寻找隐藏在数据背后的相关关系,并给出它们的表达形式——回归函数的估计。

    回归分析主要用于研究指标的估计和预测。

    通过数据分析,得到 回归表达式(回归函数),对变量进行估计、预测。

    设变量y与x(一维或多维)间有相关关系,称x为自变量(解释变量),y为因变量(被解释变量)。

    若x为一般变量,在获得x取值后,设y 的取值为一随机变量,可表示为

                                           y = f(x) + ε

    上式称为一般回归模型,其中ε称为随机误差项,一般假设 ε~N(0, \sigma ^{2})。正态分布

    7.3.2 一元线性回归模型

     r_{xy}:反映 x组数据与y组数据的线性相关程度。

    r_{xy} 越大,线性相关程度越强。            |r_{xy}| ≤ 1              

    一元线性回归分析内容

    (1)回归参数\beta _{0},\beta _{1},\sigma ^{2}的估计

    (2)回归模型的显著性检验

    (3)回归参数的显著性检验

    1.回归参数的估计

    yi:观测值          最小二乘法(参数估计、数据拟合)             \beta _{0}+\beta _{1}x_{i} :yi的回归值

     (7.3.3) 求导式

     \overline{x} , \overline{y}:x、y数据的样本均值

    2.回归模型的显著性检验

    在模型假定下,可以证明

    对模型(7.3.2)的显著性提出假设

          H0 : 回归方程不显著,H1 : 回归方程显著

    如果回归方程显著,意味着SSE应该比较小,F值应该比较大,所以在显著水平α下,当 F\geq F_{\alpha } (1,n-2)时,拒绝原假设,认为回归方程显著。

    3.回归参数的显著性检验

     t^2 = F

    MATLAB进行回归分析的命令为 regress,其调用方式为 [b,bint,r,rint,stats] = regress(y, x) ,其输出结果为

    • b :回归方程的系数
    • bint:回归方程系数的95%置信区间
    • r: 回归方程的残差
    • rint:残差的95%置信区间
    • stats: 可决系数R^{2}、模型检验F值、模型检验P值

    7.3.3 一元线性回归分析应用

    例7.3.1 为研究销售收入与广告费用支出之间的关系,某医药管理部门随机抽取20家药品生产企业,得到它们的年销售收入和广告费用支出(万元)的数据如下表。分析销售收入与广告费用之间的关系。

    分析 由表(1)可得模型检验F值为116.3958,P值非常小,即模型是显著的;由表(2)可得模型的决定系数R^{2} = 0.866067,接近于1,说明模型拟合效果较好;由表(3)可得回归方程的系数\beta _{0} = 274.5502,\beta _{1} = 5.1308,且参数\beta _{1}检验的P值较小,显著非零,则回归方程为

    根据得到的回归方程可进行因变量y的估计和预测。

    7.4 多元线性回归分析

    研究多个变量之间相关性的常用统计方法:多元线性回归分析。

    7.4.1 多元线性回归模型

    实际应用中影响因变量变化的因素往往有多个,例如产出受各种投入要素(资本、劳动力、技术等)的影响;销售额受价格和广告费投入等的影响。      研究 多个变量 影响 因变量的情况。

    回归模型中自变量(解释变量)个数为两个及两个以上时,即为多元回归模型

    多元线性回归模型的一般形式为

     (p=1:一元线性回归模型)

    • \beta _{1}\beta _{2},...,\beta _{p} 称为 偏回归系数              \beta _{0} :辅助作用,根据实际问题分析,选择是否保留。
    • β_{i}\beta _{i} 表示假定其他变量不变,当 xi 每变动一个单位时,y 的平均变动值。 

    多元线性回归分析内容

    1. 回归参数的估计
    2. 回归方程的拟合优度
    3. 显著性检验
    4. 共线性诊断

    7.4.2 回归参数的估计

    x_{np} :第p个自变量的观测值。

    yi的值 由 自变量xi的线性回归值、随机误差 \varepsilon_{i} 的值 所构成。

    Y:因变量构成的列向量;\beta:回归参数向量;\varepsilon:随机误差项构成的向量。

     偏导数 = 0

    7.4.3 回归方程的拟合优度

    7.4.4 显著性检验

    多元线性回归分析的显著性检验包括模型的显著性检验和各偏回归系数的显著性检验。

    1.模型的显著性检验

    2. 偏回归系数的显著性检验

    关于模型的显著性检验 不拒绝 原假设 时,模型是不显著的,此时 不必做 偏回归系数的显著性检验。

    7.4.5 共线性诊断

    多元线性回归分析中,要求回归模型(7.4.1)中自变量之间线性无关。若有两个或两个以上的自变量彼此相关,称模型存在多重共线性

    多重共线性产生的问题

    (1)可能会使回归的结果造成混乱,甚至会把分析引入歧途;

    (2)可能对参数估计值的正负号产生影响,特别是各回归系数的正负号有可能同预期的正负号相反 。

    检测多重共线性的最简单的一种办法是计算模型中各对自变量之间的相关系数,并对各相关系数进行显著性检验。若有一个或多个相关系数显著,就表示模型中所用的自变量之间相关,存在着多重共线性。

    如果出现下列情况,暗示存在多重共线性。(存在多重共线性,需要对模型进行修正)

    • 模型中各对自变量之间显著相关;
    • 当模型的线性关系检验(F检验)显著时,几乎所有回归系数的t检验却不显著;
    • 回归系数的正负号与预期的相反。

    7.5 牙膏价格问题

    7.5.1 问题描述

    某大型牙膏制造企业为了更好地拓展产品市场,有效地管理库存,公司董事会要求销售部门根据市场调查,找出公司生产的牙膏销 售量与销售价格、广告投入等因素之间的关系,从而预测出在不同价格和广告费用下的销售量。表7.5.1是30个销售周期(4周为1销售周期)中收集到的资料。试根据这些数据建立一个数学模型,分析牙膏的销售量与其它因素的关系,为制定价格策略和广告投入提供决策依据。

    7.5.2 问题分析

    1.牙膏价格与销售量

    由于牙膏是小件生活必需品,对大多数顾客来说,在购买同类产品的牙膏时更多地会在意不同品牌中间的价格差异,而不是他们的 价格本身。因此在研究各个因素对销售量的影响时,用价格差代替公司销售价格更为合适。

    通过分析其他厂家牙膏价格与本公司牙膏价格差对销售量的影响关系,建立价格差与销售量的相关模型。

    2.广告费用与销售量

    通过分析广告费用对销售量的影响关系,建立广告费用与销售 量的相关模型。

    7.5.3 模型假设与符号

    实际中,由于影响牙膏销售量的因素有很多,根据问题分析和相关数据,提出假设:

    (1)假设牙膏销售量主要受价格差和广告费用影响,即其它因素对销售量的影响归入随机误差。

    (2)令 y~本公司牙膏销售量;x_{1}~其它厂家牙膏价格与本公司牙膏价格差;x_{2}~本公司广告费用。x_{1}x_{2}对y的影响、建立模型。

    7.5.4 模型建立与求解

    1.牙膏价格差对销售量影响模型

     正相关的线性关系

    2.广告费用对销售量影响模型

       勉强接受:线性关系

    建立模型:多尝试,以合理性为前提,越简单越好。

    3.牙膏价格差与广告费用对销售量影响模型

    由(7.5.1)和(7.5.2),将常数项合并,随机误差项合并,且不考虑牙膏价格差与广告费用对销售量的交叉影响。可得牙膏价格差与广告 费用对销售量影响模型

                                     

    由数据进行回归分析,见表7.5.2

                                        

    4.模型改进

     只考虑 线性关系

    由表7.5.3回归结果可得,修正可决系数为0.874,模型显著性检验的p值为0,模型是显著的。并且各回归参数均显著非0,说明模型 有效,得到牙膏价格差与广告费用对销售量影响模型为

                                                         

    7.5.5 结果分析

                                                         

    由模型(7.5.5)可知,提高本公司牙膏价格,将会减少本公司牙膏销售量,例如,广告费不变时,本公司牙膏价格比其它厂家平均价格 提高1元,估计销售量将会减少约1.468百万支。

    另一方面,一定程度上,增加广告费用将会提高销售量,但过 度增加广告费用就会增加成本。

    根据模型(7.5.5),只要给定了x_{1}x_{2},代入就可以对销售量进行估计和预测,还可以进行一定的置信度下的区间预测。如当x_{1}=0.2,x_{2}=6.5时,可以计算得到销售量的预测值约为8.379(百万支),其95%的预测区间为[7.874, 8.863]。

    在公司管理中,这个预测上限可以用来作为公司的生产和库存数量;而这个预测下限可以用来较好地把握公司的现金流,因为到时至少有7.874百万支牙膏可以有把握的卖出去,可以回来相应的销售款。

    若考虑牙膏价格差与广告费用两个因素间可能会有交互作用,可以将二者的乘积x_{1}x_{2}来表示这个作用对销售量的影响,对原来的模型进行改进,

       

    同理,可对模型7.5.6进行回归分析,研究模型的有效性和显著性(略)。

    7.6 方差分析与回归分析的SPSS实现

    数据统计分析:Matlab、R、SPSS

    7.6.1 SPSS软件概述

    1 SPSS版本与安装

    SPSS的版本每年更新,当前最新为SPSS26.0,较新版本都有中文版,这里以2013年的SPSS22.0中文版为例介绍其安装及应用。

     数学建模【SPSS 下载、安装】

    2 SPSS界面

    SPSS的主要界面 有 数据编辑窗口 和 结果输出窗口。

    SPSS软件在其基本界面上集成了数据录入、转换、检索、统计分析、作图、制表及编辑等功能;采用类似EXCEL表格的方式输入与管理数据,数据接口较为通用,能方便的从其他数据库中读入数据。

    数据编辑窗口:标题栏、菜单栏、工具栏、状态栏、数据视图、变量视图

    控制菜单图标、窗口名称、窗口控制图标、窗口控制按钮

    变量视图

    3 SPSS特点

    • (1)囊括了各种成熟的统计方法与模型,为统计分析用户提供了全方位的统计学算法,为各种研究提供了相应的统计学方法。
    • (2)提供了各种数据准备与数据整理技术。
    • (3)自由灵活的表格功能。
    • (4)各种常用的统计学图形。

    SPSS最突出的特点就是操作界面极为友好,输出结果美观漂亮。SPSS是第一个采用人机交互界面的统计软件,非常容易学习和使用。

    SPSS软件基本操作可通过点击鼠标来完成,有一定统计基础且熟悉Windows一般操作的应用者参考它的帮助系统 基本上 可以自学使用;除了数据录入及部分命令程序等少数输入工作需要使用键盘键入外,对于常见的统计分析方法完全可以通过对“菜单”、“对话框”的操作完成,无需编程。

    4 SPSS数据

    SPSS能够与常用的数据文件格式互交。                  Excel文件

    SPSS数据文件中,变量有三种的基本类型:数值型、字符型和日期型。

    SPSS的文件类型:

    (1)数据文件:拓展名为.sav

    (2)结果文件:拓展名为.spv

    (3)图形文件:拓展名为.cht

    (4)语法文件:拓展名为.sps

    7.6.2 SPSS与方差分析

    【例7.1.1、例7.2.2 Excel文件:链接:https://pan.baidu.com/s/1PLXyYCelCfOGgMPbl7T2AA   提取码:zjxs】

    1 单因素方差分析

    生成数据:1、导入数据;2、手工录入

    54条数据:因变量(血糖下降值)记为A,分组变量(3个组别)记为g。Excel表中,第一行为变量名。

       

      数据视图
    变量视图

    单因素方差分析

      

       

    多重比较:将 各个水平下的均值 进行比较。Tukey:针对重复次数一样的多重比较。显著性水平 默认 0.05。

    左边:输出列表;右边:输出结果(概括性描述)。

    表2:方差极性检验(显著性-P值:0.871)   表3:方差分析表(因子平方和、误差平方和;总平方和)

     只要P值小于0.05,就认为 是有 显著差异的。

    根据多重比较的结果,进行分类得到的分类表。

      

    均值图                      1、2之间,有显著差异;2、3无显著差异。

    2 双因素方差分析

    【例7.1.1、例7.2.2 Excel文件:链接:https://pan.baidu.com/s/1PLXyYCelCfOGgMPbl7T2AA   提取码:zjxs】 

    双因素并且考虑交互作用的方差分析:将分析数据作为因变量指标;将时段、路段两个因素 建立 两个分组变量。

    将Excel表中的数据,导入SPSS。

       

    选择 “模型”:

        

       

    绘图

      -> 点击“添加”  ->   

    事后多重比较

    选项

        

      

        

        

    7.6.3 SPSS与回归分析 

    SPSS回归分析过程

    牙膏价格问题的回归分析

       

       

          

       

    表1:自变量、因变量、标准差...描述结果;表2:相关系数矩阵表---研究共线性;

    模型汇总统计量计算 Model Summary;ANOVA:回归分析的方差分析表;

    coefficients:回归系数估计

    不考虑x2(将x2从模型中去除!)

      

    展开全文
  • 生存分析(Survival Analysis)、Cox风险比例回归模型(Cox proportional hazards model)及C-index 1. 生存分析 生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法。常见的有1)癌症患者生存时间...

    生存分析(Survival Analysis)、Cox风险比例回归模型(Cox proportional hazards model)及C-index


    1. 生存分析

    生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法。常见的有1)癌症患者生存时间分析2)工程中的失败时间分析等等。

    1.1 定义

    给定一个实例 ii,我们用一个三元组来表示 (Xi,δi,Ti)(X_i, \delta_i, T_i),其中XiX_i表示该实例的特征向量,TiT_i表示该实例的事件发生时间。

    如果该实例发生了我们感兴趣的事件,那么 TiT_i表示的是事件发生时间点到基准时间点之间的时间,同时 δi=1\delta_i = 1
    如果该实例未发生我们感兴趣的事件,那么 TiT_i表示的是事件发生时间点到观察结束时间点的时间,同时 δi=0\delta_i = 0

    生存分析的研究目标就是对一个新的实例XjX_j,来估计它所发生感兴趣事件的时间。

    1.2 删失(censored)

    在生存分析研究中,对于某些实例,会出现在我们的研究期间,并没有出现任何感兴趣的时间,我们将这种情况称之为删失(censored)。

    出现这种情况的可能原因有:
    1)实例在研究阶段就是没有出现感兴趣的事件(right-censored)
    2)在研究阶段,丢失了该实例
    3)该实例经历了其他的事件导致无法继续跟踪

    2 生存概率(Survival probability)

    生存概率也叫作生存方程S(t)=Pr(T&gt;t)S(t) = Pr(T&gt;t),生存方程指的是实例出现感兴趣的事件的时间 TT不小于给定的时间 tt的概率。

    2.1 Kaplan-Meier survival estimate

    KM方法是一种无参数方法(non-parametric)来从观察的生存时间来估计生存概率的方法。

    对于研究中的第nn个时间点tnt_n,生存概率可以计算为:
    S(tn)=S(tn1)(1dnrn) S(t_n) = S(t_{n-1})(1-\frac{d_n}{r_n})
    其中,S(tn1)S(t_{n-1})指的是在tn1t_{n-1}时间点的生存概率;dnd_n指的是在时间点tnt_n所发生的事件数;rnr_n指的是在快要到时间点tnt_n时,还存活的人(如果在tn1t_{n-1}tnt_n之间有实例censored,那么在计算rnr_n时应该将该患者剔除出去);t0=0,S(0)=1t_0=0, S(0)=1

    R语言实现KM生存分析示例

    在这里插入图片描述

    上图为构建的KM生存分析模型可视化结果。其中,

    1)曲线上垂直下降的部分表明,在该时刻有感兴趣的事件发生(通过观察S(tn)S(t_n)我们能够看到,只有当dnd_n不为零的时候,才会从S(tn1)S(t_{n-1})的值才会减小得到S(tn)S(t_n);否则,没有事件发生,S(tn1)=S(n)S(t_{n-1})=S(n)

    2)曲线上的垂直stick表示的是,在该时刻,有实例成为了censored,如果在tn1t_{n-1}tnt_n之间有实例censored,那么在计算rnr_n时应该将该患者剔除出去

    2.2 Log-Rank test 比较不同的生存曲线

    在利用KM方法得到多条生存曲线后,只通过直接的观察来确定多条曲线之间是否具有显著性差异是不充分的。因此,log-rank test被广泛的用来比较两条或多条生存曲线。

    1)log-rank test是一种非参数检验,因此对于生存概率的分布没有任何假设;
    2)同时,log-rank test 的null hypothesis(原假设)为两个曲线代表的两个组之间,在生存率上没有显著性差异。
    3)log-rank test比较的是每个组中观察到的事件数,与在原假设为真的情况下,每个组期望的事件数。
    4)log-rank test统计量类似于卡方检验(Chi-square test)的统计量


    3 风险概率(hazard probability)

    风险概率指的是在时间tt之前还没有发生任何事件的情况下,在时间tt发生感兴趣的时间的概率。
    h(t)=limδ(t)0Pr(tTt+δ(t)Tt)δ(t) h(t) = \lim_{\delta(t)\rightarrow0}\frac{Pr(t\leq T\leq t+\delta(t)|T\geq t)}{\delta(t)}

    3.1 累积风险(cummulative hazard)

    在针对单因子进行生存分析时,我们已经得到了生存方程S(t)S(t),那么,根据S(t)S(t),累积风险为:
    H(t)=log(S(t)) H(t) = -\log(S(t))
    下图为上述生存方程S(t)S(t)变换得到的累积风险H(t)H(t)
    在这里插入图片描述


    4 Cox 比例风险回归模型

    4.1 为什么要用Cox 比例风险回归

    上述生存分析模型,即Kaplan-Meier survival estimate,是单变量分析(univariable analysis),在做单变量分析时,模型只描述了该单变量和生存之间的关系而忽略其他变量的影响。(为什么要考虑multi-variables?比如在比较两组病人拥有和不拥有某种基因型对生存率的影响,但是其中一组的患者年龄较大,所以生存率可能受到基因型 或/和 年龄的共同影响)

    同时,Kaplan-Meier方法只能针对分类变量(治疗A vs 治疗B,男 vs 女),不能分析连续变量对生存造成的影响。

    为了解决上述两种问题,Cox比例风险回归模型(Cox proportional hazards regression model)就被提了出来。

    4.2 Cox 模型的定义

    h(t,Xi)=h0(t)×exp(Xiβ) h(t, X_i) = h_0(t) \times \exp(X_i \beta)
    其中,h0(t)h_0(t)是基准风险方程,可以是任意一个针对时间tt的非负方程;XiX_i是实例ii的特征向量;β\beta是参数向量,该向量是通过最大化cox部分似然得到的。

    4.3 partial likelihood

    实例ii以及其所发生事件的时间TiT_i,那么实例ii发生事件的概率为:
    Li(β)=h(Ti,Xi)j:TjTih(Ti,Xj) L_i(\beta) = \frac{h(T_i, X_i)}{\sum_{j:T_j \geq T_i}h(T_i, X_j)}
    其中,分子上的项,主要要确定实例ii发生事件的时间TiT_i,有了TiT_i才能为计算分母来选取实例。

    根据时间TiT_i,分母中首先找到在时间TiT_i之前还没有发生事件的实例(censored应该不计入了吧,同时应该包含h(Ti,Xi)h(T_i,X_i)本身),然后分别计算他们在TiT_i时刻的风险值并求和作为分母。

    这样就得到了针对发生过事件的实例ii的发生事件概率Li(β)L_i(\beta)
    Li(β)=h(Ti,Xi)j:TjTih(Ti,Xj)=h0(Ti)×exp(Xiβ)j:TjTih0(Ti)×exp(Xjβ)=exp(Xiβ)j:TjTiexp(Xjβ) L_i(\beta) = \frac{h(T_i, X_i)}{\sum_{j:T_j \geq T_i}h(T_i, X_j)} = \frac{h_0(T_i)\times \exp(X_i \beta)}{\sum_{j:T_j \geq T_i}h_0(T_i) \times \exp(X_j \beta)} = \frac{\exp(X_i \beta)}{\sum_{j:T_j \geq T_i} \exp(X_j \beta)}
    因此,该概率和时间无关,并不需要来对h0(t)h_0(t)进行建模,所以称之为partial likelihood。

    在得到针对单个实例的事件发生概率之后,为了估计使得所有样本出现我们数据中这样的样本的概率最大,我们需要使用极大似然估计来估计参数。假设每个实例的是独立同分布的,那么我们可以得到针对我们样本的似然概率:

    L(β)=i:δi=1exp(Xiβ)j:TjTiexp(Xjβ) L(\beta) =\prod_{i:\delta_i=1} \frac{\exp(X_i \beta)}{\sum_{j:T_j \geq T_i} \exp(X_j \beta)}

    该公式的意思为,需要将所有出现过感兴趣事件的实例的概率相乘,即i:δi=1\prod_{i:\delta_i = 1}

    得到上述似然概率,我们只需要选择使得L(β)L(\beta)得到最大值的β\beta值即可,即:
    argmaxβ{L(β)} \arg\max_\beta\{ L(\beta)\}

    R语言实现Cox比例风险回归模型
    Cox比例风险回归模型wiki


    5 C-index

    英文全称为concordance index。对于存在censored实例的生存数据,一些标准的评估方法是不合适的,比如均方误差等等。

    5.1 计算方法

    1)将所有样本两两配对,共组成N×(N1)/2N \times (N-1)/2
    2)排除其中无法判断出谁先出现感兴趣事件的配对。比如配对中两个实例都没有出现感兴趣的事件;配对中的两个实例A、B,如果A是censored(非right-censored),时间为TAT_A,B是发生事件的,其发生时间为TBT_B,并且TA&lt;TBT_A &lt; T_B。排除无法判断谁先出现事件的配对后,得到总的可比较对数为MM
    3)在剩下的MM对中,预测结果和实际结果相一致的配对数为KK,即我预测的生存率S(XA)&lt;S(XB)S(X_A) &lt; S(X_B),实际的TA&lt;TBT_A &lt; T_B,即为相一致。
    4)则cindex=KMc-index = \frac{K}{M}

    C-index的计算可由下列公式描述:
    1Mi:δi=1j:Ti&lt;TjI[S(Ti,Xi)&lt;S(Tj,Xj)] \frac{1}{M}\sum_{i:\delta_i=1}\sum_{j:T_i &lt; T_j} I[S(T_i, X_i) &lt; S(T_j, X_j)]

    其中,函数I[C]I[C]指的是如果CC为真,则I[C]=1I[C] = 1,否则I[C]=0I[C] = 0
    第一个求和函数i:δi=1\sum_{i:\delta_i = 1}表示配对中至少要有一个实例发生了事件;
    第二个求和函数j:Ti&lt;Tj\sum_{j:T_i &lt; T_j}表示配对中,另一个的记录时间TjT_j必须长于第一个实例事件发生时间;两个求和函数选择出了能够用于比较的所有配对组合。

    5.2 bootstrap 重抽样

    为了得到更加robust的评估结果,希望通过多次重复采样的方法来计算多组评估结果,从而得到更为有说服力的结果。

    1)从原始样本中允许重复抽取的抽取一定数量的样本
    2)根据抽取得到的新样本,计算统计量TT,这里为C-index
    3)重复上述N次(一般大于1000),得到N个统计量TT
    4)计算上述N个统计量TT的样本方差

    展开全文
  • logistic回归模型

    千次阅读 多人点赞 2020-04-13 17:44:45
    logistic回归模型 从这一期开始,我们准备介绍一系列机器学习算法模型,主要包括logistic回归,决策树,随机森林,关联规则,朴素贝叶斯,支持向量机模型,隐式马尔可夫模型,因子分析,主成分分析,聚类,多元线性...
  • 第一章 回归模型分析

    千次阅读 2020-03-03 16:43:10
    第一章 回归模型分析
  • 解读Logistic回归模型

    千次阅读 2020-08-22 19:36:14
    由此可见logistic回归是从线性回归模型推广而来的,线性回归模型如下: -----------线性方程形式 ----------------向量形式 h(x)输出为连续的值,但是实际中会有"输出为离散型变量"这样的需求,比如给定...
  • 数学建模常用模型17 :偏最小二乘回归分析

    万次阅读 多人点赞 2018-08-21 09:11:41
    偏小二乘回归分析在建模过程中集中了主成分分析,典型相关分析和线性回归分析方法的特点,因此在分析结果中,除了可以提供一个更为合理的回归模型外,还可以同时完成一些类似于主成分分析和典型相关分析的研究内容,...
  • 多元线性回归模型

    万次阅读 多人点赞 2019-07-02 19:22:12
    多元线性回归模型通常用来研究一个应变量依赖多个自变量的变化关系,如果二者的以来关系可以用线性形式来刻画,则可以建立多元线性模型来进行分析。 1.模型简介 1.1模型的结构 多元线性回归模型通常用来描述变脸y和x...
  • 大家好,我是天空之城,今天给大家带来小福利,...一元线性回归模型的介绍与应用 多元线性回归模型的系数推导 线性回归模型的假设检验 假设前提 p小于0.3可能不符合线性相关 =============================
  • 线性回归模型,是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。线性回归模型是利用称为线性...
  • 这个问题涉及马蹄蟹研究的数据。研究中的每只雌性马蹄蟹都有一只雄性螃蟹贴在她的巢穴中。这项研究调查了影响雌蟹是否有其他男性居住在她附近的...我们将首先拟合仅具有一个自变量:宽度(W)的泊松回归模型 ...
  • 1、回归分析概括。 2、损失函数。 3、优化算法。 4、python的API。 5、python机器学习线性模型API。 6、机器学习中回归性能评估。 7、欠拟合和过拟合。 8、线性回归的改进--岭回归。 9、案例代码
  • 多元相关分析与多元回归分析

    万次阅读 多人点赞 2018-10-27 17:13:02
    目录 变量间的关系分析 ...线性回归模型基本假设 多元回归分析用途 多元线性相关分析 矩阵相关分析 复相关分析 曲线回归模型 多项式曲线 二次函数 对数函数 指数函数 幂函数 双曲线函数 变量间的...
  • 7种回归模型

    千次阅读 2017-03-09 21:18:27
    本文解释了回归分析的内涵及其优势,重点总结了应该掌握的线性回归、逻辑回归、多项式回归、逐步回归、岭回归、套索回归、ElasticNet回归等七种最常用的回归技术及其关键要素,最后介绍了选择正确的回归模型的关键...
  • YOLO算法回归模型之回归的分析

    千次阅读 2017-05-10 15:55:00
     下面来说说Yolo是如何作为一个回归模型来进行目标检测和分类的。(仅仅是个人理解,勿喷)  回归问题的条件/前提: 1) 收集的数据。(Yolo中的ground truth以及置信度) 2) 假设的模型,即一个函数,这个...
  • 这三种回归模型中自变量则可以是任意类型的变量;   有的自变量对因变量的影响不是很大,且自变量之间可能存在多重共线性(即可能不完全独立),通过建立逐步回归分析,进行X因子筛选; 比如:收入水平于受教育...
  • 回归模型的自我理解

    千次阅读 2019-06-28 21:23:06
    一元线性回归模型 多元线性回归模型 逐步回归 多重共线性 多重共线性和最小二乘法 岭回归(RR) LASSO回归 最小角回归 广义线性回归模型 逻辑回归模型 回归:数据有“回归到平均数的趋势” 回归分析研究...
  • SPSS篇—回归分析

    万次阅读 多人点赞 2019-08-20 09:29:06
    今天给大家分享一下如何用SPSS Statistics来进行回归分析,我们通过一个实例来具体了解一下整个分析的过程以及结果的解读。 上图中就是本次需要进行回归分析的数据,之前有跟大家说过,SPSS Statistics的界面跟...
  • 线性回归模型请看上篇文章,本篇文章介绍的是非线性回归模型 线性回归模型链接 在目前的机器学习领域中,最常见的三种任务就是:回归分析、分类分析、聚类分析。那么什么是回归呢?回归分析是一种预测性的建模技术,...
  • 回归分析模型检验评估

    千次阅读 2019-07-01 21:56:42
    回归分析 回归分析的概念这里不多说了,她是一个很常见的机器学习算法。使用场景多,多数情况下,就是调包,进行函数和数据的套入,然后得出各变量之间的参数。最后预测出一个结果。。 标准误差 标准误差是回归直线...
  • 岭回归和LASSO回归模型 目录一、岭回归模型1 λ 值的确定1.1 可视化方法确定 **λ** 值1.2 交叉验证法确定λ值2 模型预测 线性回归模型的参数估计得到的前提是变量构成的矩阵可逆。在实际问题中,常出现的问题: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 310,999
精华内容 124,399
关键字:

回归模型