精华内容
下载资源
问答
  • 2019-12-08 19:42:27

    本文主要介绍线性回归模型,该模型主要应用于监督学习中目标变量是连续数值型的场景。

    一元线性回归模型

    线性回归模型是数据科学领域最简单的模型,很多复杂的模型 (如多项式回归、逻辑回归、SVM) 都是建立在线性回归模型的基础上的,或者是从其中能找到线性回归模型的影子。最简单的线性回归模型就是一元线性回归模型,其模型的形式就是:
    y = a x + b (1) y=ax+b \tag{1} y=ax+b(1)
    由式(1)可知,线性回归是针对连续数值型变量的模型,且样本只有一个特征,即只有一个自变量。所谓线性,是指方程是线性的,也就是在寻找一条直线来拟合数据;所谓回归,是指用方程来模拟变量之间是如何关联的。线性回归就是要找一条直线,并且让这条直线尽可能地拟合训练样本中的数据点。

    虽然我们可以找到一条拟合训练集的直线,但是同一训练样本可以拟合出很多条直线,我们如何判断那条直线是最适合的?这就引出了如何评价模型结果的好坏,又通过什么样的方式来判断?接下来我们通过损失函数来了解线性回归的评价标准。

    损失函数

    为了衡量模型的效果,很自然的就会想到衡量预测值与真实值之间的差别。假设预测值为f(x),真实值为y,样本的数量为n,那么就有:
    ∑ i = 1 n ( f ( x i ) − y i ) 2 (2) \sum_{i=1}^n(f(x_i)-y_i)^2 \tag{2} i=1n(f(xi)yi)2(2)
    也就是每一个样本的预测值与真实值差的平方和,取平方是为了消除负数的影响。

    式(2)就是均方误差(MSE, Mean Squared Error),它对应了常用的欧氏距离(也就是计算两点之间距离)。均方误差是机器学习中回归问题经常使用的评价方式,在机器学习中称之为损失函数。可以看到一个公式在不同的地方会有不同的名字,很容易搞混,但我们只要理解其中的基本思想就会很清楚了。

    所以,现在我们知道了损失函数是衡量回归模型误差的函数,也就是我们要的“直线”的评价标准。这个函数的值越小,说明直线越能拟合我们的数据。

    得到损失函数后,又如何求得使损失函数最小的a和b呢,接下来我们通过最小二乘法来获得问题的解。

    最小二乘法

    回归方程里,求得特征对应的最佳回归系数的方法是最小化误差的平方和,也就是损失函数。

    假设式(2)的值为S,将式(1)代入式(2)可得:
    S = ∑ i = 1 n ( f ( x i ) − a x i − b ) 2 (3) S =\sum_{i=1}^n(f(x_i)-ax_i-b)^2 \tag{3} S=i=1n(f(xi)axib)2(3)
    在xi和yi已知的前提下,式(3)是a和b的二次函数。由微积分的知识可知,要求得a和b的最小值分别对a和b求偏导,当两者的偏导数为0时取得最小值。如下所示:
    ∂ S ∂ a = 2 ∑ i = 1 n ( y i − a x i − b ) x i = 0 (4) \frac {\partial S } {\partial a }=2\sum_{i=1}^n(y_i - ax_i-b)x_i = 0 \tag{4} aS=2i=1n(yiaxib)xi=0(4)

    ∂ S ∂ b = 2 ∑ i = 1 n ( y i − a x i − b ) = 0 (5) \frac{\partial S}{\partial b} = 2\sum_{i=1}^n(y_i-ax_i-b)=0 \tag{5} bS=2i=1n(yiaxib)=0(5)

    将xi和yi代入(4)和(5)式中就可以得到a和b的最小值。

    总结

    本文简单介绍了一元线性回归模型及其损失函数,并通过最小二乘法求得线性方程的最小参数。

    参考资料

    模型之母:简单线性回归&最小二乘法

    用人话讲明白线性回归LinearRegression

    机器学习眼中的线性回归

    更多相关内容
  • 一元线性回归分析模型在家庭消费支出预测中的应用,高玉,周树民,介绍一元线性回归分析的基本概念和方法原理,并以2001年到2010年国民的城镇居民家庭人均支配收入(简称
  • 用Matlab实现的一元线性回归,注释很详细
  • 线性回归模型建模步骤 (一元线性回归、多元线性回归)
  • 主要用于数学建模(matlab)的学习,下载下来换上你的数据就可以用了。
  • 一元线性回归与线性神经网络模型关联性分析,杨达,王会进,一元线性回归和线性神经网络模型在实际应用中都能进行预测,两者都是线性模型。为了探讨两者之间的关联,从两模型的具体学习出发
  • Jupyter nodebook工具做的简单的一元线性回归。将文件导入nodebook运行即可 数据摘自深入浅出数据分析这本书。这里用python3实现书中的R代码。有需要的学习python3进行数据分析的同学自行倒腾
  • 一元线性回归的Python代码测试数据,主要是包含一个属性值和label的测试数据
  • 信息分析与预测的实验,Python写的代码,萌新代码,勿喷,仅仅只是方便没时间写实验的朋友,直接用python打开就能运行
  • 模型搭建、训练模型、调用模型、编程思路、如何写代码均有解释,适合初次使用pytorch编程的小伙伴。使用的时候,自己新建一个项目,把文件解压后,将文件拷贝到新建项目中,先运行训练模型,再调用模型
  • 一元线性回归模型的应用.ppt
  • 一元线性回归 ​由于笔者的数学不太好,而且网上关于一元线性回归的文章有很多,所以相关内容大家可以查找一下,这里我就简单的搬运一下...上图为广告费与销售额的关系图,虚线为我们的一元线性回归方程,通过回归分析

    一元线性回归

    ​由于笔者的数学不太好,而且网上关于一元线性回归的文章有很多,所以相关内容大家可以查找一下,这里我就简单的搬运一下简单概念。

    一元线性回归的方程:
    h ( x ) = β 0 + β 1 x h(x)=β_0+β_1x h(x)=β0+β1x
    其中第一个参数 β 0 β_0 β0为截距,第二个参数 β 1 β_1 β1为斜率。

    代价函数

    ​ 回归分析的主要目的是通过已有的信息,去推测出未知的信息。通过一个例子大家可能会更深刻的理解回归分析的目的。

    在这里插入图片描述

    上图为广告费与销售额的关系图,虚线为我们的一元线性回归方程,通过回归分析,我们可以预测当广告费为14万元时,我们的销售额可能是30万元。

    ​回归分析属于统计学问题,这就说明在给定自变量x时,我们是无法准确的得出因变量y的。但是我们可以通过一些方法去**“减少误差”**,使得预测的结果尽量的接近真实值。所以我们引入了代价函数,其使用最小二乘法的理论去减少这种误差。代价函数数学公式如下:
    J ( β 0 , β 1 ) = 1 2 m ∑ i = 1 m [ y i − h ( x i ) ] 2 J(β_0,β_1)=\frac{1}{2m}\sum_{i=1}^m[y_i-h(x_i)]^2 J(β0,β1)=2m1i=1m[yih(xi)]2
    ​ 为了更好的理解代价函数,这里使第一个参数为零,然后观察一下图片(由于是从视频中截取的图片,所以这里的参数又β变成了θ,是我太懒了😂)

    在这里插入图片描述

    当θ=1时,此时回归方程贯穿每一个点,所以误差为零,J(θ)值如右图所示。

    在这里插入图片描述

    当θ=0.5时,我们一顿计算可得,J(θ)≈0.58

    在这里插入图片描述

    当θ=0时,我们同样可以计算出J(θ)的值。

    如果我们大量的将θ带入,我们将得到如下的代价函数图

    在这里插入图片描述

    由此我们可以清晰地看到,J(θ)在某一点处是可以取到最小值的,这就是我们的引入代价函数的目的:通过调整参数来减少误差,使得预测的结果尽量的接近真实值。

    注:最小二乘法的公式如下:
    ∑ [ y i − ( β 0 + β 1 x i ) ] 2 \sum[y_i-(β_0+β_1x_i)]^2 [yi(β0+β1xi)]2

    梯度下降法

    ​梯度下降法就是一个很好的调整参数的方法,它可以通过下面公式不断调整 β 0 β_0 β0 β 1 β_1 β1的值,从而得到一个全局最小值,或者是一个局部最小值。
    r e p e a t     u n t i l     c o n v e r g e n c e { β j = β j − α ∂ ∂ β j J ( β 0 , β 1 ) f o r   j = 1   a n d   j = 0 } repeat\ \ \ until\ \ \ convergence\{ \\ β_j = β_j - α\frac{∂}{∂β_j}J(β_0,β_1) \\ for\ j = 1\ and\ j=0 \\ \} repeat   until   convergence{βj=βjαβjJ(β0,β1)for j=1 and j=0}
    其中α称为学习率(learning rate),而学习率就是步长,学习率大,一次跨越的距离就远,这样可能会错过全局(局部)最小值点;学习率小,一次跨越的距离就短,这样会花费比较多的时间来处理数据。

    在这里插入图片描述

    求偏导后:
    j = 0 : β 0 = β 0 − α ( 1 m ∑ i = 1 m ( y i − β 0 − β 1 x i ) ∗ − 1 )               = β 0 − α ( − 1 m ∑ i = 1 m [ y i − ( β 1 x i + β 0 ) ] )     = β 0 − α ( − 1 m ∑ i = 1 m [ y i − ( h ( x i ) ] ) j = 1 : β 1 = β 1 − α ( 1 m ∑ i = 1 m ( y i − β 0 − β 1 x i ) ∗ − x i )                = β 1 − α ( − 1 m ∑ i = 1 m x i [ y i − ( β 1 x i + β 0 ) ] )      = β 1 − α ( − 1 m ∑ i = 1 m x i [ y i − ( h ( x i ) ] ) j=0:β_0 = β_0-α(\frac{1}{m}\sum_{i=1}^m(y_i-β_0-β_1x_i)*-1) \\ \ \ \ \ \ \ \ \ \ \ \ \ \ =β_0-α(-\frac{1}{m}\sum_{i=1}^m[y_i-(β_1x_i+β_0)]) \\ \ \ \ =β_0-α(-\frac{1}{m}\sum_{i=1}^m[y_i-(h(x_i)]) \\ j=1:β_1=β_1-α(\frac{1}{m}\sum_{i=1}^m(y_i-β_0-β_1x_i)*-x_i) \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =β_1-α(-\frac{1}{m}\sum_{i=1}^mx_i[y_i-(β_1x_i+β_0)]) \\ \ \ \ \ =β_1-α(-\frac{1}{m}\sum_{i=1}^mx_i[y_i-(h(x_i)]) j=0:β0=β0α(m1i=1m(yiβ0β1xi)1)             =β0α(m1i=1m[yi(β1xi+β0)])   =β0α(m1i=1m[yi(h(xi)])j=1:β1=β1α(m1i=1m(yiβ0β1xi)xi)              =β1α(m1i=1mxi[yi(β1xi+β0)])    =β1α(m1i=1mxi[yi(h(xi)])

    代码实现:

    import numpy as np
    import matplotlib.pyplot as plt
    #载入数据
    data = np.genfromtxt("data.csv",delimiter=",")#delimiter分隔符,此分隔符为,
    x_data = data[:,0]
    y_data = data[:,1]
    plt.scatter(x_data,y_data)
    plt.show()
    

    在这里插入图片描述

    #学习率 learning rate
    lr = 0.0001
    #截距
    b = 0
    #斜率
    k = 0
    #最大迭代次数
    epochs = 50
    
    #最小二乘法
    def compute_error(b, k, x_data, y_data):
        totalError = 0
        for i in range(0, len(x_data)):
            totalError += (y_data[i] - (k * x_data[i] + b)) ** 2
        return totalError / float(len(x_data)) /2.0 #最小二乘法法公式
    
    def gradient_descent_runner(x_data, y_data, b, k, lr, epochs):
        #计算总数据量
        m = float(len(x_data))
        #循环epochs次
        for i in range(epochs):
            b_grad = 0
            k_grad = 0
            #计算梯度的总和再求平均
            for j in range(0, len(x_data)):
                b_grad += -(1/m)*(y_data[j]-(k * x_data[j] + b))
                k_grad += -(1/m)*x_data[j] * (y_data[j] - (k * x_data[j] + b))
            #更新b和k
            b = b - (lr * b_grad)
            k = k - (lr * k_grad)
             # 每迭代5次,输出一次图像
    ''' 方面查看变化趋势
    			if i % 5==0:
                print("epochs:",i)
                plt.plot(x_data, y_data, 'b.')
                plt.plot(x_data, k*x_data + b, 'r')
                plt.show()
                '''
        return b, k
    
    b, k = gradient_descent_runner(x_data, y_data, b, k, lr, epochs)
    #画图
    plt.scatter(x_data, y_data, c='b')
    plt.plot(x_data, k*x_data + b, 'r')
    plt.show()
    

    在这里插入图片描述

    展开全文
  • 位置在这里

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6K6p5qKm6LW35LqG6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

     位置在这里

    展开全文
  • #资源达人分享计划#
  • 一元线性回归分析 多元线性回归 逻辑回归 其他回归分析 一、回归分析概述 (一)回归分析的定义与分类 (二)回归分析的过程 (1)收集一组包含因变量和自变量的数据; (2)根据因变量和自变量之间的关系,初步...

    主要内容
    回归分析概述
    一元线性回归分析
    多元线性回归
    逻辑回归
    其他回归分析

    二、一元线性回归分析

    (一)一元线性回归方法
    在这里插入图片描述
    在这里插入图片描述
    随机误差反映了除x和y之间的线性关系之外的随机因素对y的影响。
    在这里插入图片描述
    分析预测房子的大小(平方英尺)和房价(美元)之间的对应关系。

    import pandas as pd
    import matplotlib.pyplot as plt
    %matplotlib inline
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['font.size']=13
    y=[6450,7450,8450,9450,11450,15450,18450]
    x=[150,200,250,300,350,400,600]
    plt.scatter(x,y)
    plt.xlabel('面积(平方英尺)')
    plt.ylabel('售价(美元)')
    plt.show()
    

    在这里插入图片描述
    (二)一元线性回归模型的参数估计
    一元线性回归模型中参数估计方法有最小二乘法、矩方法和极大似然方法。

    最小二乘法(Least Squre Estimation, LSE)又称最小平方法,它通过最小化误差的平方和寻找数据的最佳函数匹配。
    在这里插入图片描述
    根据微积分求极值原理,通过求偏导并置为0得到:
    在这里插入图片描述
    求解方程组得到:

    在这里插入图片描述
    在这里插入图片描述
    将求得的参数代入方程,即可得到最佳拟合曲线。

    (三)一元线性回归模型的误差方差估计
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (四)一元回归模型的主要统计检验

    回归分析要通过样本所估计的参数来代替总体的真实参数,或者说用样本回归线代替总体回归线。尽管从统计性质上已知,如果有足够多的重复抽样,参数的估计值的期望就等于总体的参数真值,但在一次抽样中,估计值不一定就等于该真值。那么在一次抽样中,参数的估计值与真值的差异有多大,是否显著,就需要进一步进行统计检验。

    在一元回归的统计检验主要包括拟合优度检验,变量显著性检验和残差标准差检验。

    1. 拟合优度检验
      拟合优度检验是用卡方统计量进行统计显著性检验的重要内容之一。它是依据总体分布状况,计算出分类变量中各类别的期望频数,与分布的观察频数进行对比,判断期望频数与观察频数是否有显著差异,从而达到从分类变量进行分析的目的。它是对样本回归直线与样本观测值之间拟合程度的检验。
    2. 变量的显著性检验(t检验)
      显著性检验就是事先对总体(随机变量)的参数或总体分布形式做出一个假设,然后利用样本信息来判断这个假设(备择假设)是否合理,即判断总体的真实情况与原假设是否有显著性差异。显著性检验是针对我们对总体所做的假设进行检验,其原理就是“小概率事件实际不可能性原理”来接受或否定假设。

    (五)一元线性回归的Python实现

    对鸢尾花数据集中的’petal-length’和’petal-width’两列数据进行回归分析。

    (1)导入包和数据

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.datasets import load_iris
    from sklearn.linear_model import LinearRegression
    %matplotlib inline
    iris = load_iris()  # 导入数据集iris
    data = pd.DataFrame(iris.data)
    data.columns = ['sepal-length','sepal-width','petal-length','petal-width']
    data.head()  # 显示前5行
    

    在这里插入图片描述
    (2)对数据集中的’petal-length’和’petal-width’两列数据进行回归分析

    # 使用sklearn完成一元线性回归
    x = data['petal-length'].values
    y = data['petal-width'].values
    x = x.reshape(len(x),1)
    y = y.reshape(len(y),1)
    clf = LinearRegression()
    clf.fit(x,y)
    pre = clf.predict(x)
    plt.scatter(x,y,s=50)
    plt.plot(x,pre,'r-',linewidth=2)
    plt.xlabel('petal-length')
    plt.ylabel('petal-width')
    for idx, m in enumerate(x):
        plt.plot([m,m],[y[idx],pre[idx]],'g-')
    plt.show()
    

    在这里插入图片描述
    (3)显示回归线的参数

    print(u"系数", clf.coef_)
    print(u"截距", clf.intercept_)
    print(np.mean(y-pre)**2)
    
    # 系数 [[0.41575542]]
    # 截距 [-0.36307552]
    # 1.013248007150544e-32
    

    (4)对花萼长度为3.9的花,预测其花萼宽度。

    print(clf.predict([[3.9]]))
    
    # [[1.2583706]]
    
    展开全文
  • 普通最小二乘估计对数据进行一元线性回归分析原理,附详细推导
  • 一元线性回归模型习题及答案.doc
  • """ 使用最小二乘法,拟合出一元线性回归模型:z = wx + b。 一元的意思是样本x通过一个属性描述,原本可能是矢量x_i = (x_i1, x_i2...,x_id)被例如颜色,大小... 属性描述,现在只有一个x_i1描述,则直接把矢量x_i...
  • 基于spss的一元线性回归与多元线性回归案例,个人整理出的,包含了部分案例、实验报告、题目,及部分题目答案,适合作为spss、MATLAB等软件数据分析题目联系
  • 一元线性回归分析 一元回归分析的基本概念 回归模型的建立一般包括: (1)通过某事物现,转化为具体问题; (2)确定指标变量,收集整理数据,并构建模型进行参数估计; (3)模型的检验,当模型检验不通过时,需要...
  • 一元线性回归

    2018-10-19 09:24:50
    一元线性回归spss处理方法,可以了解SPSS对线性回归的处理内容
  • 文件为房价预测例子的一元线性回归模型代码及数据,由sklearn库实现,将数据文件与程序文件放在同一目录下运行即可。 博客地址:https://me.csdn.net/albert201605
  • 基于R语言一元线性回归模型实例及代码题目描述数据特征及可视化建立模型与初步评价(自己写lm()代码)回归诊断模型预测 题目描述 所用数据集——faithful(MASS包) # 加载数据包及查看问题背景 library(MASS) data(...
  • 在 Jupyter Notebook 上用 Python 实现的一元线性回归,包括源码和数据,大家可以学习参考使用
  • 1、一元线性回归模型 线性模型 2、最小二乘法
  • Matlab中实际上有多个函数可以实现回归分析的功能,如regress,polyfit,lsqcurvefit等。这里简单总结一下polyfit函数的用法:Matlab中实际上有多个函数可以实现回归分析的功能,如regress,polyfit,lsqcurvefit等...
  • 计量经济学eviews实验报告一元线性回归模型.doc

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,181
精华内容 4,472
关键字:

一元线性回归模型

友情链接: 电子时钟.zip