精华内容
下载资源
问答
  • 关注一下~,更多商业数据分析案例等你来撩前言本文重在以清晰明了方式展示利用多元线性回归模型实现预测功能基本流程。其中包含知识点如下,源数据源代码可空降文末 ~~变量探索数据读入异常值处理类别变量数值...
    ? 关注一下~,更多商业数据分析案例等你来撩62698dcefde3b24b2da9a3f9713c5bfe.png

    前言

    本文重在以清晰明了的方式展示利用多元线性回归模型实现预测功能的基本流程。其中包含的知识点如下,源数据源代码可空降文末 ~~

    20170c296b14fe3fdc04658b58ef1ab5.png

    变量探索

    数据读入

    cfe4b7fd7689ee7f3ea9270f348b69c1.png

    9a6734469172c1c1d0f02d8fa9a6881c.png

    异常值处理

    b06ad9d4db04cc6c1730ff7d011fd8c9.png

    82b5fd9d30789abd8e134ffd9e06640c.png

    类别变量数值分布情况

    9d6de0ce796d6647ec903047243d84ed.png

    c7e548279a5041ac3a4ced328f278674.png

    变量关系探索

    8d3762766090e7b45e4bb923ecbf13cd.png

    方差分析

    style 和 neighborhood 与房价 price 是否有关联可以使用方差分析

    5600b2e1e0eaf7d32de361cac94f6cb5.png

    插播一条样本量和置信水平 α_level 的注意点(置信水平 α 的选择经验)
    样本量α-level
    ≤ 10010%
    100 < n ≤ 5005%
    500 n ≤ 10001%
    n > 2000千分之一

    130aa2541d91da484326cf749220de1a.png

    8efc323f583b46261ea67be692d51ba0.png

    根据 p 值,变量 style 与 neighborhood 都值得放入模型。

    statsmodels 建模

    4e4dcd2582eb721dac0f8cd5c99217e0.png

    c57679c08da24c582fb1d085f7e48b4e.png

    模型优化

    虚拟变量关于虚拟变量的原理趣析可参考这篇文章多元线性回归模型精度提升 -- 虚拟变量

    4a454d5e5df2ad51e4984f128e4ad27a.png

    26afcc834a924902681af1754a1e5e09.png

    5fa147864f89fe698e4c3a3d9abc423a.png

    e68d8e8bb46258658f3b950c21f42be3.png

    方差膨胀因子

    fb1e6d21c9395a2c5485c068758ec62a.png

    模型末尾提示可能存在多元共线性,需要处理一下,关于方差膨胀因子的原理趣析可参考这篇文章多元共线性检测 -- 方差膨胀因子

    fc65a1630358083e6c14fb4bfb9d121b.png

    f882599878341660b59dac1b87c7362c.png

    370518c6eeffeef0570862a4ddca1a4e.png

    af7909acd2a9b93fb9f03712afe7d69f.png

    发现精度没变,但实际情况中是否要删减还是需要结合具体业务来分析。

    总结

    多元线性回归模型作为最基础又最经典的模型之一,用处十分广泛。本文实现了从探索性数据分析到模型建立再到用经典的方法将模型优化的一套通用的流程,具体该添加哪些处理细节和算法,还需要根据实际情况进行考量。至于具体的模型参数和结果该怎么看,本文就不再一一赘述,其中往模型里添加了虚拟变量后该如何对结果进行解释,这一点在文中虚拟变量的链接中已详细地做出了解释。注:相关数据源和超详细的代码(python,Jupyter Notebook 版本 + 详细注释)已经整理好,在 “ 数据分析与商业实践 ” 公众号后台回复 “ 多元预测 ” 即可获取。8ac9c7617d7cdbed05da6dd3a5c4e1df.png
    • 案例实战 | 决策树预测客户违约(附Python代码与数据)

    • 案例实战 | 决策树预测客户违约(附Python代码与数据)

    后续会不断更新常见场景下的 Python 实践

    411c122b93118adeb87d6dd4c5982f78.png

    展开全文
  • 本文以泰坦尼克数据集(Titanic.csv)为例,利用Python,通过构建多元线性回归模型,对未知乘客年龄数据进行预测。需要用到库:import 读取Titanic数据集,查看数据预览及数据类型:tiedani = pd.read_csv('...

    本文以泰坦尼克数据集(Titanic.csv)为例,利用Python,通过构建多元线性回归模型,对未知乘客的年龄数据进行预测。

    需要用到的库:

    import 

    读取Titanic数据集,查看数据预览及数据类型:

    tiedani = pd.read_csv('Titanic.csv')
    tiedani.head()
    tiedani.dtypes

    b03fdab195fa3114a7921ed4d82b29e6.png
    Titanic前5行数据预览

    f1dc383baf4c832a68a30741abf91212.png
    Titanic不同维度数据类型

    查看各变量的缺失比例:

    tiedani.isnull().sum(axis=0)/tiedani.shape[0]

    e7372451068c1578c2f293ff872bb371.png
    不同维度数据的缺失比例

    剔除无意义的变量:

    我们认为乘客ID、乘客姓名、票务信息、港口登船信息、隔间信息对预测乘客年龄是没有帮助的,故剔除这些无意义的变量。

    tiedani.drop(labels = ['PassengerId','Name','Ticket','Cabin','Embarked'],
                 axis = 1,
                 inplace = True
                 )

    7a3101df6a9aeb3f38f6e81dc557cf02.png
    剔除无意义的数据后的数据概览

    哑变量转换:

    上图中的,Pclass变量为离散型变量,Sex变量为字符型变量,不能直接参与线性回归模型运算,需要对其做哑变量转换。利用pandas包中的get_dummies()函数,即可获取特定对象的哑变量。

    tiedani.Pclass = tiedani.Pclass.astype(str)
    dummies = pd.get_dummies(data = tiedani[['Pclass','Sex']])
    new_tiedani = pd.concat([tiedani,dummies],axis = 1)
    #new_tiedani.head()

    6f1a18911f2a60ec0b5009549330c2b6.png
    构造哑变量之后的数据预览

    由上图可知,新生成的数据具有冗余性,为消除冗余,对数据做以下修正:

    new_tiedani.drop(labels = ['Pclass','Sex','Pclass_3','Sex_male'],
                     axis = 1,
                     inplace = True
                    )

    将数据拆分为训练集和测试集:

    missing = new_tiedani.loc[tiedani.Age.isnull(),]
    no_missing = new_tiedani.loc[~tiedani.Age.isnull(),]

    构造多元线性回归模型:

    基于训练集数据集构造预测年龄Age的多元线性回归模型model,并对模型和系数分别做F检验和t检验。

    Class = sm.formula.ols(formula='Age ~ Survived+SibSp+Parch+Fare+Pclass_1+Pclass_2+Sex_female', data=no_missing)
    model = Class.fit()
    model.summary()

    根据F检验的结果可知,模型是显著的:

    861b3247fd39a24a817ce5b67c924a27.png
    F检验结果

    从t检验的结果来看,Parch、Fare、Sex_female没有通过显著性试验:

    2ffb106387cf132820967534f01c0c90.png
    t检验结果

    绘制Parch、Fare、Sex_female与Age数据之间的散点图:

    sns.pairplot(no_missing[['Parch','Fare','Sex_female','Age']])

    0a94b02c6c2eb2f10efd6738a945f9c4.png
    Parch、Fare、Sex_female与乘客年龄之间的散点图

    由上图可知,Parch、Fare、Sex_female与乘客年龄均不存在明显的线性趋势,故将Parch、Fare、Sex_female等变量从模型中剔除,得到新的多元线性回归模型model2:

    Class2 = sm.formula.ols(formula='Age ~ Survived+SibSp+Pclass_1+Pclass_2',data=no_missing)
    model2 = Class2.fit()
    model2.summary()

    ac267ea7e994dd69d18aa62938dbd102.png
    新的多元线性回归模型的F检验结果

    4ff5362e4796beab30f2eb5303a7e69e.png
    新的多元线性回归模型的t检验结果

    由上图可知,新的多元线性回归模型model2的模型和统计量均通过了显著性试验。最后,利用可视化的PP图和QQ图,验证新模型的残差是否服从正态分布的假设:

    pp_qq_plot = sm.ProbPlot(model2.resid)
    pp_qq_plot.ppplot(line='45')
    plt.title('PP')
    pp_qq_plot.qqplot(line='q')
    plt.title('QQ')

    f2e1f4d97ec987c3e1e5205d500fa905.png
    PP图

    a71163a73bd6719a842ed79308bd7bda.png
    QQ图

    由PP图和QQ图可知,图形中的散点基本都围绕再斜线附近,故可以判断新模型model2的残差服从正态分布,也就是说新模型model2是合理的。

    预测未知年龄

    通过模型model2对Titanic未知乘客的年龄数据进行预测:

    pred_Age = model2.predict(exog=missing[['Survived','SibSp','Pclass_1','Pclass_2']])
    missing.loc[:,'Age'] = pred_Age

    bbcece9355dc09a32495d00143105a16.png
    Titanic乘客未知年龄预测结果(部分)

    最后,将预测结果插补到原始数据中:

    tiedani.loc[:,'Age'] = pd.concat([no_missing.Age,pred_Age],axis = 0)

    欢迎加微信交流:ranbow484

    点击返回项目列表:

    杨秋实:项目经历汇总(⬇️⬇️⬇️)zhuanlan.zhihu.com
    dc8be13bb1ab3d2f32318034e81a5892.png
    展开全文
  • 小天导语:多元线性回归模型是大多数人入门机器学习第一个案例,其中多元共线性这个问题将贯穿所有机器学习模型。小天今天会带大家讲解如何更好构建和优化多元线性回归模型。这里选用经典房价预测用到精度...

    小天导语:多元线性回归模型是大多数人入门机器学习的第一个案例,其中多元共线性这个问题将贯穿所有的机器学习模型。小天今天会带大家讲解如何更好构建和优化多元线性回归模型。这里选用的经典的房价预测用到的精度优化方法效果拔群,能提供比较好的参考价值。

    研究方向:机器学习,多元线性回归模型,Python

    数据探索

    本文的数据集是经过清洗的美国某地区的房价数据集

    import pandas as pd
    import numpy as np
    import seaborn as sns
    import matplotlib.pyplot as plt

    df = pd.read_csv('house_prices.csv')
    df.info();df.head()

    af74994e125bf4be19f661048cf1a36f.png参数说明:

    • neighborhood/area:所属街区和面积
    • bedrooms/bathrooms:卧室和浴室
    • style:房屋样式

    多元线性回归建模

    现在我们直接构建多元线性回归模型

    from statsmodels.formula.api import ols
                          # 小写的 ols 函数才会自带截距项,OLS 则不会
             # 固定格式:因变量 ~ 自变量(+ 号连接)
    lm = ols('price ~ area + bedrooms + bathrooms', data=df).fit()
    lm.summary()

    红框为我们关注的结果值,其中截距项Intercept的 P 值没有意义,可以不用管它

    ef6c66512fffad48755e62d69e1ac781.png

    模型优化

    从上图可以看到,模型的精度较低,因为还有类别变量neighborhoodstyle没有完全利用。这里我们先查看一下类别变量的类别分布情况:

    # 类别变量,又称为名义变量,nominal variables
    nominal_vars = ['neighborhood''style']

    for each in nominal_vars:
        print(each, ':')
        print(df[each].agg(['value_counts']).T)  # Pandas 骚操作
        # 直接 .value_counts().T 无法实现下面的效果
         ## 必须得 agg,而且里面的中括号 [] 也不能少
        print('='*35)

    虚拟变量的设置

    因为类别变量无法直接放入模型,这里需要转换一下,而多元线性回归模型中类别变量的转换最常用的方法之一便是将其转化成虚拟变量。原理其实非常简单,将无法直接用于建模的名义变量转换成可放入模型的虚拟变量的核心就短短八个字:「四散拆开,非此即彼」。下面用一个只有 4 行的微型数据集辅以说明。c6fff8f13c0529cbb7f0af4515c33fe1.png从上表中,不难发现:

    • 该名义变量有 n 类,就能拆分出 n 个虚拟变量
    • 巧妙的使用 0 和 1 来达到「用虚拟变量列代替原名义变量所在类别」

    接下来要做的就是将生成的虚拟变量们放入多元线性回归模型,但要注意的是:「转化后的虚拟变量们需要舍弃一个」才能得到满秩矩阵。具体原因和有关线性代数的解释可以查看笔者打包好的论文,我们可以理解为,当该名义变量可划分为 n 类时,只需要 n-1 个虚拟变量就已足够获知所有信息了。该丢弃哪个,可根据实际情况来决定。48319e1c74539ef887339ec924697a83.png因此为原数据集的某名义变量添加虚拟变量的步骤为:

    • 抽出希望转换的名义变量(一个或多个)
    • pandasget_dummies函数
    • 与原数据集横向拼接

    555741a0112696f6c9be0f8bc1460229.png注意虚拟变量设置成功后,需要与原来的数据集拼接,这样才能将其一起放进模型。ea3a4751703b645d2960880c8b1051a4.png再次建模后,发现模型精度大大提升,但潜在的多元共线性问题也随之显现出来33ad28d7e309a8b5934731a0770a3347.png在解释模型中虚拟变量的系数之前,我们先消除模型中多元共线性的影响,因为在排除共线性后,模型中的各个自变量的系数又会改变,最终的多元线性回归模型的等式又会不一样。多重线性回归模型的主要假设之一是我们的预测变量(自变量)彼此不相关。我们希望预测变量(自变量)与反应变量(因变量)相关,而不是彼此之间具有相关性。方差膨胀因子(Variance Inflation Factor,以下简称VIF),是「指解释变量之间存在多重共线性时的方差与不存在多重共线性时的方差之比」4e93abafddea98c99c8c0e4aa11a5158.png上图公式可以看出在方差膨胀因子的检测中:

    • 每个自变量都会有一个膨胀因子值 ,最后根据值的大小来选择是否删
    • 「既然表示相关性,是谁跟谁的相关性呢?」 是自变量中的某一变量与除它外剩余的自变量进行多元线性回归,取回归结果,即模型精度来作为这个变量与剩余自变量的相关性。听起来可能有点绕,这里举一下实例(用 “面积、卧室数量和浴室数量” 作为自变量来预测房价,在进行自变量的方差膨胀因子的检测时,面积、卧室数和浴室数轮流做单独的因变量,剩下的两个变量作为自变量,来看看这三个自变量中那个变量对其余两个变量的解释性高)
    • 越大,如已经到了 0.9,那分母就很小, 的值就等于 10,即表示这个自变量已经同时解释了另外的某个或多个自变量,存在多元共线性,可以考虑删除一些自变量。

    越大,显示共线性越严重。经验判断方法表明:「当 ,不存在多重共线性;当 ,存在较强的多重共线性;当 ,存在严重多重共线性」。

    方差膨胀因子的检测

    我们自己来写一个方差膨胀因子的检测函数

    def vif(df, col_i):
        """
        df: 整份数据
        col_i:被检测的列名
        """

        cols = list(df.columns)
        cols.remove(col_i)
        cols_noti = cols
        formula = col_i + '~' + '+'.join(cols_noti)
        r2 = ols(formula, df).fit().rsquared
        return 1. / (1. - r2)

    现在进行检测

    test_data = results[['area''bedrooms''bathrooms''A''B']]
    for i in test_data.columns:
        print(i, '\t', vif(df=test_data, col_i=i))

    发现bedroomsbathrooms存在强相关性,可能这两个变量是解释同一个问题,方差膨胀因子较大的自变量通常是成对出现的。36662bfb2d3273e703d7a4b50b3e22ca.png果然,bedroomsbathrooms这两个变量的方差膨胀因子较高,这里删除自变量bedrooms再次进行建模

    lm = ols(formula='price ~ area + bathrooms + A + B', data=results).fit()
    lm.summary()

    9dd3d3bce029db475e0c0bb739238e4f.png模型精度稍降,但消除了多元共线性后能够使模型的泛化能力提升。再次进行多元共线性检测

    test_data = results[['area''bedrooms''A''B']]
    for i in test_data.columns:
        print(i, '\t', vif(df=test_data, col_i=i))

    46b0b5280b0de107cc0321a33ea5da58.png那么多元共线性就「只有通过方差膨胀因子才能看的出来吗?」其实并不一定,通过结合散点图或相关稀疏矩阵和模型中自变量的系数也能看出端倪。下图是未处理多元共线性时的自变量系数。6ed70ef05b37165a39a75e85e534d6df.png可以很明显的看出,bathrooms的参数很可能是有问题的,怎么可能bathrooms的数据量每增加一个,房屋总价还减少 1.373*10 的四次方美元呢?简单的画个散点图和热力图也应该知道房屋总价与bathrooms 个数应该是成正比例关系的。9ade4353107ad32a52ad0bdb71201259.png

    模型解释

    多元线性回归模型的可解释性比较强,将模型参数打印出来即可求出因变量与自变量的关系88ed5206e40be602920e91d51f876a5e.png所以最终的建模结果如下,且该模型的精度为0.916

    另外在等式结果中,截距项Interceptarea,bedrooms等变量的系数都还好理解;A,B 这两个虚拟变量可能相对困难些。其实根据原理部分的表格来看,如果房屋在 C 区,那等式中 A 和 B 这两个字母的值便是 0,所以这便引出了非常重要的一点:使用了虚拟变量的多元线性回归模型结果中,存在于模型内的虚拟变量都是跟被删除掉的那个虚拟变量进行比较。所以这个结果便表示在其他情况完全一样时(即除虚拟变量外的项)A 区的房屋比 C 区低 8707.18 美元,B 区则比 C 区贵 449896.73.7 美元。当然我们也可以画个箱线图来查看与检验,发现结果正如模型中 A 与 B 的系数那般显示。cb07fa86db5f2719d3688c6aaa8451c8.png

    小天结语:本实践案例以多元线性回归为基础和前提,在因变量房价与多个自变量的实际观测值建立了多元线性回归模型;分析并检验各个预测变量对因变量的综合线性影响的显著性,并尽可能的消除多重共线性的影响,筛选出因变量有显著线性影响的自变量,对基准模型进行优化,并对各自变量相对重要性进行评定,进而提升了回归模型的预测精度。

    *【Advance with Tianchi】栏目明日上线,精彩不可错过,小天会从栏目处女秀留言处抽出一位赠送华为运动手环哦,这个夏天与小天一起进步吧*

    转发、点赞、收藏三连哦

    【往期精选】

    bb8542f20be987b9100488a83c40dfa0.png

    Spark “数字人体”AI挑战赛--脊柱疾病智能诊断大赛

    175f83eabe498bb4c8ab28ea605247c0.png

    一身本事无处施展?or遇到瓶颈想要进一步提升?在线编程大赛为你而来

    展开全文
  • 基于多元线性回归的房价预测

    千次阅读 2020-09-08 10:01:04
    本文基于数学模型,对过去一段时间某一地区房屋出售价格等相关数据进行整理,利用多元线性回归的方法对数据进行分析,预测该地区未来房价走势。 关键词:多元线性回归;房价预测;数据分析; 引言 对未来房价...

    基于多元线性回归的房价预测

    摘要

    市场房价的走向受到多种因素的影响,通过对影响市场房价的多种因素进行分析,有助于对未来房价的走势进行较为准确的评估。
    多元线性回归适用于对受到多因素影响的数据进行分析的场景。由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。本文基于数学模型,对过去一段时间某一地区的房屋出售价格等相关数据进行整理,利用多元线性回归的方法对数据进行分析,预测该地区未来的房价走势。
    关键词:多元线性回归;房价预测;数据分析;

    引言

    对未来房价进行预测,在一定程度上影响着社会经济的发展。广义上讲,精确的房价预测有助于国家对市场房价走势的宏观调控,小范围来讲,未来房价预测是企业战略规划的一部分,对于消费者而言,房价预测为个人经济的合理规划起到了积极作用。由于房屋售价与多因素有关,并且房屋价格与影响房价的一些因素存在线性关系,所以选取多元线性回归模型研究该问题较为合适。
    本次课题研究通过对某段时间某地区的已售房价数据进行线性回归分析,探索影响房价高低的主要因素,并对这些影响因素的影响程度进行分析,利用分析得到的数据,对未来房价的趋势和走向进行预测。

    线性回归理论基础

    一元线性回归是分析只有一个自变量(自变量x和因变量y)线性相关关系的方法。一元线性回归分析的数学模型为:y = a+bx+ε。
    使用偏差平方和分别对参数a和参数b求偏导,可以得到线性模型的未知参数a、b的最小二乘估计值,其中,偏差平方和定义为∑(yi-a-bXi)2,a和b的唯一解如图2-1所示。
    在这里插入图片描述
    图2 1 参数的最小二乘估计
    为了方便回归效果显著性检验,根据b的估计,引入LXX、LYY、LXY三个数学符号,这三个数学符号定义如图2-2所示。
    在这里插入图片描述
    图 2 2 LXX、LYY、LXY的数学定义
    在现实问题研究中,因变量的变化往往受几个重要因素的影响,此时就需要用两个或两个以上的影响因素作为自变量来解释因变量的变化,这就是多元回归。也就是说,当多个自变量与因变量之间是线性关系时,所进行的回归分析就是多元性回归。多元线性回归的数学模型为:y=β0+β1X1+β2X2+…++βpXp+ε。使用残差平方和分别对参数βi(i=0,1,…,p)求偏导,可以得到线性模型的未知参数βi(i=0,1,…,p)的估计值,β矩阵的估计值如图2-3所示。
    在这里插入图片描述

    回归效果的显著性检验

    对平面上杂乱无章的点,利用最小二乘法求解出的线性回归方程是毫无意义的,线性回归反映出的趋势描述是否合理,需要一个数量指标来度量。
    数据总的波动可以用离差平方和LYY来描述。它表示y的各次离差yi-y ̅的平方和。LYY数值越大,说明yi数值波动越大,也就是越分散。离差平方和LYY可以分解为回归直线上y的离差平方和U以及yi与回归直线上的y间的差的平方和Q。其中,U是由于x对y的线性相关关系引起的y的分散性,Q是由随机误差引起的分散性。yi-y ̅分解如图2-4所示。在总和中,U所占比重越大,说明随机误差所占的比重越小,回归效果越显著。故此,可以使用决定系数R2来度量线性回归效果是否显著,R2作为拟合优度,表示用直线来拟合数据的好坏,R2等于U/Lyy。
    在这里插入图片描述
    图2 4 yi-y ̅分解图
    R2开方后的结果为皮尔逊相关系数,皮尔逊(Pearson)相关系数可以用来衡量两个数据集合是否在一条线上面,从而衡量定距变量间的线性关系。相关系数的绝对值越大,相关性越强;相关系数越接近于1或-1,相关度越强,相关系数越接近于0,相关度越弱。当|r|>=0.8时,x和y强相关,当|r|<0.3时,x和y弱相关。皮尔逊相关系数定义为如图2-5所示。
    在这里插入图片描述
    对于一元线性回归模型,线性回归模型效果的显著性可以通过假设检验问题H0:b=0;H1:b≠0进行判断,检验方法包括F检验法和t检验法。F检验属于回归方程显著性检验,是检验x与y是否相关的检验方法。t检验是回归系数显著性检验,是检验变量x是否有用的方法。H0成立时,两种检验方法定义如图2-6、图2-7所示。H0不成立时,对于给定的显著性水平α,当F>F1-α(1,n-2)时,回归效果显著。当|t|>t1-α/2(n-2)时,认为回归系数影响显著,否则回归系数的效果不显著。
    在这里插入图片描述
    图2 6 一元线性回归F检验法
    在这里插入图片描述
    图2 7 一元线性回归t检验法
    对于多元线性回归模型,回归效果的显著性可以使用F检验法通过假设检验问题H0:β0=β1=β2=…=βp=0;H1:βi(i=0,1,…,p)不全为0进行判断,H0成立时,F检验方法定义如图2-8所示。H0不成立时,对于给定的显著性水平α,当F>F1-α(p,n-p-1)时,回归效果显著。
    在这里插入图片描述
    回归系数的显著性检验可以使用t检验法通过假设检验问题H0:βi=0;H1:βi≠0进行判断。H0成立时,t检验方法定义如图2-9所示。H0不成立时,对于给定的显著性水平α,当|t|>t1-α/2(n-p-1)时,认为回归系数影响显著,否则回归系数的效果不显著。
    在这里插入图片描述

    基于机器学习的线性回归与梯度下降

    机器学习横跨计算机科学、工程技术和统计学等多个学科,渗透到了人们生产和生活中的各个领域,被广泛应用于各行各业之中,在当今世界激烈的竞争中,掌握和理解机器学习的基础模型和基本方法是非常有必要的。
    机器学习中的线性回归模型以数理统计的线性回归模型为基础,它用一条直线对数据点进行拟合,在机器学习中,回归问题的求解过程就是寻找最佳拟合参数集的过程,也就是寻找满足使得估计值与实际值的方差最小时的参数解,这个过程用到了损失函数,损失函数定义如图2-10所示。利用损失函数,可以求解最佳拟合参数集。利用损失函数进行求解可以采用梯度下降法。
    在这里插入图片描述
    梯度下降法的计算过程就是沿梯度下降的方向求解极小值或沿梯度上升方向求解极大值。一般情况下,梯度向量为0的话说明是到了一个极值点,此时梯度的幅值也为0。采用梯度下降算法进行最优化求解时,算法迭代的终止条件是梯度向量的幅值接近0或接近一个非常小的常数阈值。梯度下降的过程如图2-11所示。
    在这里插入图片描述
    图2 11 梯度下降示意图

    使用EXCEL进行数据分析

    从总体数据中,选取29套房屋出售的部分数据如表3-1所示。
    在这里插入图片描述
    在这里插入图片描述
    将房屋售价作为因变量,表格中的其他字段作为自变量,使用EXCEL对表3-1的数据进行部分回归分析,得到结果如图3-1所示。
    在这里插入图片描述
    图3-1 回归分析结果
    在图3-1中的回归统计子表中,字段Multiple R代表复相关系数R,也就是R2的平方根,又称相关系数,用来衡量自变量x与y之间的相关程度的大小。本次数据集回归分析得到的R=0.936644667,这表明x和y之间的关系为高度正相关。R Square是复测定系数,也就是相关系数R的平方。Adjusted R Square是调整后的复测定系数R2,该值为0.877303232,说明自变量能说明因变量y的87.73%,因变量y的12.27%要由其他因素来解释。标准误差用来衡量拟合程度的大小,也用于计算与回归相关的其它统计量,此值越小,说明拟合程度越好。观察值是用于估计回归方程的数据的观察值个数,本次数据集共有29条数据,所以观察值为29。
    在图3-1中的方差分析子表中,Significance F为F检验显著性统计量,它的P值为1.34195E-10,小于显著性水平0.05,故而能够确定该回归方程回归效果显著,且方程中至少有一个回归系数显著不为0。
    设因变量房屋售价为y,自变量地下室装饰面积为x1,自变量建筑面积为x2,自变量房屋质量等级为x3,自变量出售时房屋年龄为x4。在图3-1中的第三张子表中,Coefficients为常数项和b1~b4的值,据此便可以估算得出回归方程为:y= 22.76397987* x1+ 3.137950236* x2+ 32850.46846* x3+ (-966.2604974)* x4-32438.15866。但根据Coefficients估算出的回归方程可能存在较大的误差,在第三张子表中更为重要的一列是P-value列,P-value为回归系数t统计量的P值。由表中P-value的值可以发现,自变量房屋质量等级x3和出售时房屋年龄x4的P值远小于显著性水平0.05,因此这两个自变量与y相关。地下室装饰面积和建筑面积的P值大于显著性水平0.05,说这两个自变量与y相关性较弱,甚至不存在线性相关关系。

    使用SPSS进行数据分析

    在相关性未知的情况下,每次引入一个新的变量会对已有变量的重要程度造成影响,这时使用EXCEL分析显得有些复杂。房屋出售数据集共有16个自变量和1个因变量,共包含1460条记录。且相关性未知。数据集如图3-2所示。
    在这里插入图片描述
    图3-2 1460套房屋出售的相关数据
    导入数据后,使用前向逐步筛选法确定多元线性回归的相关系数。前向逐步筛选,是从一个自变量的选择开始,通过偏 F检验逐次引入一个最显著的变量。使用SPSS进行多元回归的参数设置如图3-3所示。
    在这里插入图片描述
    图3-3 参数设置
    得到的回归模型因变量与自变量的相关性为81.9%。其中,被排除的变量如表3-2所示。最终模型中保留的变量包括:OverallQual,GrLivArea,BsmtFinSF1, GarageArea,MSSubClass,Age,LotArea,YearRemodAdd,MasVnrArea,WoodDeckSF,GarageYrBlt,TotalBsmtSF。对应的参数如图3-4所示。
    在这里插入图片描述
    图3-4 最终的模型参数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    房价预测

    房价与房屋质量等级以及出售时房屋年龄两个影响因素存在线性相关关系,故使用这两个影响因素作为自变量x1和x2,建立线性回归模型。使用EXCEL对房屋售价和房屋质量等级以及出售时房屋年龄进行分析,得到数据分析结果如图4-1所示。
    在这里插入图片描述
    图4-1 重新选取变量后的回归分析结果
    由图4-1可以确定建立线性回归模型:y= 35073.79934+ 30813.67989x1 -1254.222989x2。使用该模型即可实现对未来房价的预测。基于机器学习线性回归和梯度下降的方法,也可以确定回归方程。梯度法思想的三要素包括出发点、下降方向、下降步长。通过不断调整出发点和下降步长,可以使损失函数趋向于收敛,当损失函数收敛于一个接近于0的值的时候,此时得到的参数集就是原方程最合适的解。梯度下降源码如图4-2所示。
    在这里插入图片描述
    图4-2 梯度下降源码
    使用线性回归模型y= 35073.79934+ 30813.67989x1 -1254.222989x2对1430套房子的房价进行预测,该模型的预测结果较为准确。部分预测结果如图4-3所示。损失情况大致呈现正态分布,如图4-4所示。
    在这里插入图片描述
    图4-3 房价预测结果
    在这里插入图片描述
    如果使用回归方程y= 22.76397987* x1+ 3.137950236* x2+ 32850.46846* x3+ (-966.2604974)* x4-32438.15866进行预测,损失比使用y= 35073.79934+ 30813.67989x1 -1254.222989x2模型要相对较大。使用回归方程y= 22.76397987* x1+ 3.137950236* x2+ 32850.46846* x3+ (-966.2604974)* x4-32438.15866进行预测的损失值分布如图4-5所示。
    在这里插入图片描述
    使用通过前向逐步筛选法确定多元线性回归的相关系数建立的模型进行预测,得到的损失曲线如图4-6所示。较之前的预测,使用该模型的损失情况最小。
    在这里插入图片描述

    总结

    日常生活中,很多事物之间都是存在关联关系的,在这些关联关系中,线性关系是极为常见的。利用线性回归能够解决生活中遇到的与统计学有关的大多数问题,线性回归模型在统计学中占有重要地位。
    使用数学方法对影响因变量的各种因素进行分析,可以快速确定自变量与因变量之间是否存在线性关系,能够帮助我们建立合适的数学模型。本次课题研究通过数学模型对房屋售价进行分析,通过前向逐步筛选法确定多元线性回归的相关系数并建立模型,通过建立的线性回归模型,在众多的自变量中找到了与房屋售价具有线性相关性的自变量,然后在此基础上建立多元线性回归模型,并使用该模型对房屋售价进行预测,得到了与真实值较为接近的估计值。

    参考文献

    [1] 孙海燕,周梦,李卫国,冯伟.数理统计.北京:北京航空航天大学出版社,2016.10

    展开全文
  • cusum测试和平方测试的cusum证明了该模型的稳定性,误差幅度为0.02%。 这样的规定会更加可靠,表明电力需求将以每年5.36%的速度增长,从2014年的1721 GWh跃升至2020年的2481 GWh以上。 为了实现这一目标,喀麦隆应...
  • 本文含3605字,19图表截屏建议阅读8分钟本文是Python商业数据挖掘实战第4篇1 - 基于不平衡数据反欺诈模型实战2 - Apriori算法实现智能推荐3- 随机森林预测宽带客户离网4 - 多元线性回归模型实战前言「多元线性...
  • 通过对某矿11-2煤层瓦斯含量实测数据整理、分析,建立多元线性回归模型,利用SPSS工具计算多元线性回归方程来预测煤层瓦斯含量。结果显示11-2煤层瓦斯含量主控因素为底板标高,其与主断层距离也是影响瓦斯含量...
  • 多元线性回归模型

    2020-03-14 11:56:51
    线性回归模型就属于监督学习里回归模型。线性回归是通过属性线性组合进行预测的函数,一元线性回归较为简单。这里我们主要介绍多元。 可以表示为 且可求出,若要满足误差项最小: 再得到模型后,我们还要进...
  • 本文含3605字,19图表截屏5 ~8分钟即可拿下本文源数据和包含详细注释源代码在后台回复 ' 多元预测' 即可获取前言「多元线性回归模型」非常常见,是大多数人入门机器学习第一个案例,尽管如此,里面还是有许多...
  • 系统聚类和多元线性回归模型的物流需求分析,孙淑生,黄宝军,物流业作为经济发展的基石,是衡量一个区域综合经济实力和科技水平的重要标志。为了更好地能够在未来某一时段内的准确预测将成为
  • “ Take a Bath” 是2008年美国大学生数学建模竞赛A 题。上次我们已经通过题目对冰盖...多元线性回归模型基于前面收集数据和已有结果, 这里将建立多元线性回归模型预测由于北极冰雪融化 (主要是格陵兰冰盖和...
  • 多元线性回归分析法预测商品零售价格指数,赵晓慧,杨杰, 本文主要应用数学建模中的多元线性回归模型,来拟合多个影响因素对一个变量影响。利用1990-2007年利率、消费水平、商品零售价�
  • 这里选用经典房价预测用到精度优化方法效果拔群,能提供比较好参考价值,将会带大家讲解如何更好构建和优化多元线性回归模型。 研究方向:机器学习,多元线性回归模型,Python 数据探索 本文数据集是...
  • “ Take a Bath” 是2008年美国大学生数学建模竞赛A 题。上次我们已经通过题目对冰盖...多元线性回归模型基于前面收集数据和已有结果, 这里将建立多元线性回归模型预测由于北极冰雪融化 (主要是格陵兰冰盖和...
  • 多元线性回归的基本表达式在多元线性回归中会有多个解释变量:预测解释变量估计方程如下:注:额外假设条件①解释变量之间不能存在太强线性相关关系(一般ρ<0.7)②其他条件与一元线性回归类似。2.回归方程...
  • 我正在尝试评估多元线性回归模型.我有这样数据集:该数据集有157行* 54列.我需要预测文章中ground_truth值.我将在en_Amantadine和en_Common之间添加我多个线性模型7文章.我有多元线性回归代码:from sklearn...
  • 矿井小断层普遍存在且错综复杂,对煤层开采影响很大。根据黄河北煤田赵官井田7号煤层小断层资料,选取断层走向延展长度、断层落差和断层倾角3个因素,运用多元...实际应用表明,该模型的预测精度较高,比较符合实际情况。
  • 为探讨武汉市水资源承载力是否能适应其经济发展要求,根据城市水资源承载力理论研究,运用主成分分析法和多元线性回归模型,分析影响武汉市水资源承载力驱动因素,预测从2015年到2020年年需水量。结果表明,武汉...
  • 多元线性回归:这是一种线性回归的形式,当有两个或多个预测因子时使用。 我们将看到多个输入变量如何共同影响输出变量,同时还将了解计算与简单LR模型的不同之处。我们还将使用Python构建一个回归模型。 最后,我们...
  • 希望大家使用线性回归模型预测出一段时间内PM2.5值。 本次作业使用台湾丰源观测站观测记录,分成train set与test set。 train set是丰原站每个月前20天所有观测数据。test set是从丰原站剩下观测数据中...
  • 多元线性回归模型是机器学习最基本也是入门级别学习内容之一,掌握多元线性回归模型不是那么难,这篇文章助你了解多元线性回归模型如何手写python纯代码在预测应用,这样有助于大家更好理解其原理,最简单...
  • 实例问题描述我们现在拿到如上图数据集,今天要做就是建立多元线性回归模型,利用area, bedrooms, age来预测房价price。实例操作import pandas as pdimport numpy as npfrom sklearn import linear_modeldf...
  • 其中多元共线性这个问题将贯穿所有机器学习模型,所以本文会「将原理知识穿插于代码段中」,争取以不一样视角来叙述和讲解「如何更好构建和优化多元线性回归模型」。主要将分为两个部分: 详细原理 Python ...
  • 基于梯度下降法的线性回归模型预测房价,进行多元线性回归,其中包括一套关于房价预测的数据和基于numpy和pandas基础库源代码
  • 针对经典线性回归模型不能完全反映变量间耦合关系而不适宜于有模糊数瓦斯涌出量预测的问题,提出了一种基于遗传算法模糊多元线性回归分析瓦斯涌出量预测模型。采用灰关联分析法和SPSS软件线性回归分析法确定...
  • 回归模型的预测 import matplotlib import matplotlib.pyplot as plt import pandas as pd import numpy as np import seaborn as sns import statsmodels.api as sm from sklearn import model_selection from ...
  • 前言最近有在学习网易云课堂上《吴恩达机器学习》这门课程, 受益匪浅, 然后打算将有关线性回归模型的知识点总结下来, 也就有了本文. 若存在错误的地方, 还请指正, 谢谢!目录1. 一元线性回归2. 多元线性回归3. 两大...
  • 利用多元线性回归和BP神经网络理论,分别对矿井瓦斯涌出量进行了预测,最后建立了多元线性回归与BP神经网络组合预测模型。该模型兼顾了多元回归分析非线性特性和神经网络时序特性,通过具体实例研究,对比了各种...
  • 基于matlab的多元线性回归,可以实现3元以内线性回归,对电力系统负荷进行预测和校验

空空如也

空空如也

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

多元线性回归模型的预测