线性回归

机器学习算法 --- 线性回归

前提是你 提交于 2020-01-16 01:50:51
一、线性回归算法的简介    线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。   回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为 多元线性回归 分析。   本文主要介绍线性回归算法的演绎推导,关于线性回归的详细介绍请参阅 线性回归在百度百科中的介绍 。   线性回归算法是机器学习中的基础算法,所以对于想要学习机器学习的读者来说,最好完全理解该算法。 二、线性回归算法的演绎推导    假设,在银行中申请行用卡的额度与如下两个参数有关,即年龄和工资,有一申请人的资料如下图,那么知道一个人的年龄和工资该如何预测出他所能申请信用卡的额度呢?   对于一个线性关系,我们使用y=ax+b表示,但在这种关系中y只受一个x的影响,二者的关系可用一条直线近似表示,这种关系也叫一元线性回归。而在本例中,设额度为h,工资和年龄分别为x1和x2,则可以表示成下式, ,在这种关系中结果收到多个变量的影响,称为 多元线性回归 分析。   我们将上式中的θ和x分别表示成两个一维矩阵[θ0 θ1 θ2]和[x0 x1 x2],则可将上式化为

什么是回归分析?

我与影子孤独终老i 提交于 2020-01-16 01:50:26
回归分析(Regression Analysis)是一种统计学上分析数据的方法,目的在于了解两个或多个变数间是否相关、相关方向与强度,并建立数学模型以便观察特定变数来预测研究者感兴趣的变数。 一元线性回归分析 在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。 比方说有一个公司,每月的广告费用和销售额,如下表所示: 如果我们把广告费和销售额画在二维坐标内,就能够得到一个散点图,如果想探索广告费和销售额的关系,就可以利用一元线性回归做出一条拟合直线: 这条线是怎么画出来的 对于一元线性回归来说,可以看成Y的值是随着X的值变化,每一个实际的X都会有一个实际的Y值,我们叫Y实际,那么我们就是要求出一条直线,每一个实际的X都会有一个直线预测的Y值,我们叫做Y预测,回归线使得每个Y的实际值与预测值之差的平方和最小,即(Y1实际-Y1预测)^2+(Y2实际-Y2预测)^2+ …… +(Yn实际-Yn预测)^2的和最小。 现在来实际求一下这条线: 我们都知道直线在坐标系可以表示为Y=aX+b,所以(Y实际-Y预测)就可以写成(Y实际-(aX实际+b)),于是平方和可以写成a和b的函数。只需要求出让Q最小的a和b的值,那么回归线的也就求出来了。 参考:一元线性回归的细节 http://www.jianshu.com/p

机器学习(4)线性回归算法总结

房东的猫 提交于 2020-01-15 07:42:23
回归算法和logistics算法总结 1、回归算法简介: 回归算法还是属于分类算法。Numpy、Panads、Matplotlib、Scilit-learn。线性回归一般用来做连续值的预测,预测的结果为一个连续值。因训练时学习样本不仅要提供学习的特征向量X,而且还要提供样本的实际结果(标记label,所以它是一种有监督学习。其中 X={x0,x1,...,xn}。 2、算法原理推导: 3、目标函数求解 4、逻辑回归原理 5、梯度下降原理 6、梯度下降实例 来源: CSDN 作者: 庄小焱 链接: https://blog.csdn.net/weixin_41605937/article/details/103752675

python中常用的三种线性回归

偶尔善良 提交于 2020-01-15 05:48:30
from sklearn.linear_model import LinearRegression import numpy as np import matplotlib.pyplot as plt X = [[1],[4],[3]] #输入X y = [3,5,3] #输入y lr = LinearRegression().fit(X,y) z = np.linspace(0,5,20) plt.scatter(X,y,s=80) plt.plot(z, lr.predict(z.reshape(-1,1)),c='k')#reshape将z改为任意行,一列 plt.title('Straight Line') plt.show() print('\n\n直线方程为:') print('==============') print('y = {:.3f}'.format(lr.coef_[0]),'x','+{:.3f}'.format(lr.intercept_)) print('==============') from sklearn.datasets import make_regression from sklearn.linear_model import LinearRegression import numpy as np import matplotlib

MATLAB建立回归模型

人盡茶涼 提交于 2020-01-15 04:55:24
终于考完数值分析和数理统计了,回来更新MATLAB 回归分析 在MATLAB的绘图里面其实有工具箱可以直接拟合数据,不过我们还是来看下代码简单拟合的方式。 1.一元线性回归 例如 有下列两组数据 x=1:10; y=[2650,1942,1493,1086,766,539,485,291,224,202]; 我们先用线性回归的思路,先画出数据的散点图 clear all clc % 做x和y的散点图 % x = 1 : 10 ; y = [ 2650 , 1942 , 1493 , 1086 , 766 , 539 , 485 , 291 , 224 , 202 ] ; for i = 1 : 10 plot ( x ( i ) , y ( i ) , 'ok' ) ; hold on end xlabel ( 'x' ) ; ylabel ( 'y' ) ; 我们可以从图中看出不是成线性的,而是近似和对数函数相似,所以我们使用对数函数进行拟合 x = 1 : 10 ; y = [ 2650 , 1942 , 1493 , 1086 , 766 , 539 , 485 , 291 , 224 , 202 ] ; z = zeros ( size ( y ) ) ; N = length ( y ) ; for i = 1 : N z ( i ) = log ( y ( i ) )

区别 |时间序列vs线性回归

删除回忆录丶 提交于 2020-01-14 17:57:51
小结: (1)时间序列和回归分析的 核心区别 在于对 数据的假设 :回归分析假设每个样本数据点都是 独立 的;而时间序列则是利用数据之间的 相关性 进行预测。如:时间序列分析中一个基础模型就是AR(Auto-Regressive)模型,它利用过去的数据点来预测未来。 (2)虽然AR模型(自回归模型)和线性回归看上去有很大的相似性。但由于 缺失了独立性 ,利用线性回归求解的AR模型参数会是 有偏的 。但又由于这个 解是一致的 ,所以在实际运用中还是利用线性回归来 近似 AR模型。 (3) 忽视或假设数据的独立性很可能会造成模型的失效 。金融市场的预测的建模尤其需要注意这一点。   本文会先说明两者对数据的具体假设差异,再说明AR模型(Autoregressive model 自回模型)为什么虽然看上去像回归分析,但还是有差别,最后也提到一个常见的混淆两者后在金融方向可能出现的问题。 一、回归分析对数据的假设:独立性 在回归分析中,我们假设数据是 相互独立 的。这种独立性体现在两个方面:一方面,自变量(X)是固定的,已被观测到的值,另一方面,每个因变量(y)的误差项是独立同分布,对于线性回归模型来说,误差项是独立同分布的正态分布,并且满足均值为0,方差恒定。 这种数据的独立性的具体表现就是:在回归分析中, 数据顺序可以任意交换 。在建模的时候,你可以随机选取数据循序进行模型训练

Python - 线性回归(Linear Regression) 的 Python 实现

淺唱寂寞╮ 提交于 2020-01-14 07:52:29
背景 学习 Linear Regression in Python – Real Python ,前面几篇文章分别讲了“regression怎么理解“,”线性回归怎么理解“,现在该是实现的时候了。 线性回归的 Python 实现:基本思路 导入 Python 包: 有哪些包推荐呢? Numpy :数据源 scikit-learn :ML statsmodels : 比 scikit-learn 功能更强大 准备数据 建模拟合 验证模型的拟合度 预测:用模型来预测新的数据 实现细节 以最简单的线性回归为例,代码参考的是原文。 重点是掌握基本思路,以及关键的几个函数。影响拟合度的因素很多,数据源首当其冲,模型的选择也是关键,这些在实际应用中具体讨论,这里就简单的对应前面的基本思路将 sample 代码及运行结果贴一下,稍加解释。 安装并导入包 根据自己的需要导入 pip install scikit-learn pip install numpy pip install statsmodels from sklearn.preprocessing import PolynomialFeatures import numpy as np from sklearn.linear_model import LinearRegression import statsmodels.api as

stanford机器学习 实验1.2

£可爱£侵袭症+ 提交于 2020-01-14 04:57:05
1. 线性拟合问题的迭代解法 batch gradient descent 梯度下降法,每次沿着梯度方向对于参数移动小的距离。 有两种具体实现,一种是每次移动的时候考虑所有的实验点,这种在训练集合较大的时候开销比较大。(如下,每次扫描所有m个试验点) 另外一种是stochastic gradient deseent 扫描每个点的时候就决定了参数的按照该点的梯度进行参数调整。即 每次参数调整只考虑当前一个试验点。这个收敛速度会更快,但是不保证能收敛到最佳,但是如果逐步调小 的值可以收敛到最佳。 我个人觉得gradient descent的方法都是依赖起始位置吧,最终都是一个局部最优结果。 2. 矩阵的导数(matrix derivative),矩阵的迹(trace) 3. 最小二乘法 这里课件利用矩阵的导数定义(这里 是一个向量其实),矩阵的trace的特性 结果于从向量投影角度理解最小二乘解法是一致的。 4. 概率角度看 5. 局部加权线性回归 就是说当我们考虑预测Y=f(X)的时候,要优先考虑X附近的试验点的特性,他们给予较高的权重,而距离X较远的试验点影响系数要小一些。 前面讲到的优化算法的目标步骤如下 而对于locally weighted linear regression 这样离X近的点影响因子会大 局部加权应该效果会更好一些,但是普通的线性回归我们离线计算好

ML_learning02:线性回归

好久不见. 提交于 2020-01-13 23:09:33
理解线性模型: 是一种函数 目标是预测 从一个属性的线性组合中来学习 具备很好的 可解释性 :每个样本都给予了相应的权重表示重要性 线性回归 数据集:D={(x1,y1),(x2,y2),…,(xn,yn)}, 其中xi=(xi1;xi2;xi3;…;xid),yi∈Rxi=(xi1;xi2;xi3;…;xid),yi∈R 线性回归试图从样本X学得一个线性模型–>尽可能准确的预测实值输出Y, f ( x i ) = w x i + b f\left(x_i\right)=wx_i+b f ( x i ​ ) = w x i ​ + b 使得 f ( x i ) ≈ y i f(x_i)\approx y_i f ( x i ​ ) ≈ y i ​ 1、将f(x)与y之间的差别最小化 性能度量是衡量模型泛化能力的评价标准。 均方误差(MSE:mean squared error)是回归任务中最常用的性能度量, E ( w ) = 1 m ∑ i = 1 m ( f w ( x i ) − y i ) 2 E\left(w\right)=\frac1m\sum_{i=1}^m\left(f_w\left(x_i\right)-y_i\right)^2 E ( w ) = m 1 ​ i = 1 ∑ m ​ ( f w ​ ( x i ​ ) − y i ​ ) 2 使用MSE的原因

简单多元线性回归(梯度下降算法与矩阵法)

China☆狼群 提交于 2020-01-13 06:04:19
from:https://www.cnblogs.com/shibalang/p/4859645.html 多元线性回归是最简单的机器学习模型,通过给定的训练数据集,拟合出一个线性模型,进而对新数据做出预测。 对应的模型如下: n: 特征数量。 一般选取残差平方和最小化作为损失函数,对应为: M: 训练样本数量。 通过最小化代价损失函数,来求得 值,一般优化的方法有两种,第一是梯度下降算法( Gradient Descent ),第二种是矩阵法( The normal equations )。 梯度下降算法 给 一个初始值,然后逐步的迭代改变的值,是代价损失函数逐次变小,使每次都往梯度下降的方向改变: 表示下降速度。 为了求偏导数,当只有一个样本时,即 ; 即: 当有多个训练样本时,下降梯度算法即为: 由于每次迭代都需要计算所有样本的残差并加和,因此此方法也叫做批下降梯度法( batch gradient descent),当有大规模数据时,此方法不太适合,可采取它得一个变种,即每次更新权重时,不是计算所有的样本,而是选取其中一个样本进行计算梯度,这个方法叫做随机下降梯度法( stochastic gradient descent): 随机下降梯度法与下降梯度法对比可能收敛更快,但是可能找不到最优点而在最优点附近徘徊。 矩阵求解法 由于梯度下降算法需要多次迭代,并且需要指定下降速率