文章目录

  • 预测数据型数据:回归
    • 回归的含义
    • 回归应用
  • 线性回归
    • 利用Sklearn做线性回归的预测
  • 线性回归拟合原理(fit方法)
    • 损失函数
    • 梯度下降法
    • 梯度下降的分类
      • “Batch” Gradient Descent 批梯度下降
      • “Stochastic” Gradient Descent 随机梯度下降
      • “Mini-Batch” Gradient Descent “Mini-Batch”梯度下降

预测数据型数据:回归

回归的含义

  • 大自然让我们回归到一定的区间范围之内;反过来说就是,有一个平均的水平,可以让突出的事物能向他靠拢。
  • 回归是由达尔文(Charles Darwin)的表兄弟Francis Galton发明的。 Galton于1877年完成了第一次回归预测,目的是根据上一代豌豆种子(双亲)的尺寸来预测下一代豌豆种子(孩子)的尺寸。Galton在大量对象上应用了回归分析,甚至包括人的身高。他注意到,如果双亲的高度比平均高度高,他们的子女也倾向于比平均高度高,但尚不及双亲。孩子的高度向着平均高度回退(回归)。Galton在多项研究上都注意到这个现象,所以尽管这个英文单词跟数值预测没有任何关系,但这种研究方法仍被称作回归 。
  • 那些高个子的后代的身高,有种回归到大众身高的趋势。 eg: 姚明身高2米26,叶莉身高1米90, 但是他们后代的身高是会逐渐回归到正常的身高水平。

回归应用

  • 销售量预测
  • 制造缺陷预测。
  • 预测名人的离婚率。
  • 预测所在地区的房价。

线性回归

  • 线性:利用算法生成的模型是一条直线。

  • 回归:让数据聚集到一个特定的模型中。

  • 线性回归:如果模型是一条直线,就是让数据靠近这条直线。
    自我理解:
    是一个回归算法,其中,回归指的是预测一个连续的,没有间断的值(可以想象成一条直线)
    公式:y = w0x0 + w1x1 + … + wnxn 其中,w指的是权重值,我们有时候用theta来代替,n指的是特征的数量,比如我们预测房价,特征有房屋面积, 卧室数量,那么n=2,x0 = 1, 这个是为了计算时方便。w0是截距,也就是如果y是一条之间,截距就是这条直线和y相交是:从0到交点的距离。….wn指的是系数,也即是每一个特征对应的权重(如果某一 个特征对输出值y的影响较大,那么这个权重值就高,反之就低)

  • 线性回归的求解步骤(如何运用这个公式):

    第一步:初始化w0…wn的值

    第二步:把我们的训练数据,带入这个公式里,求出y_hat(), 这个y_hat就是我们的预测值;我们的目的是为了让预测值无限接近于真实值

    第三步:求损失函数:一个公式来衡量预测值和真实值的差距,在线性回归中,这个函数叫做 MSE(均方误差)

    第四步:设法让损失函数最低。让损失函数最低的方法有很多种,最常用的就是梯度下降。梯度下降的意义:对于损失函数来说,在某一个很小的区间范围之内,让权重值,顺着损失函数下降的方向移动那么一小步。

  • 小扩展:
    梯度下降公式:其中, a表示的是学习率,它用来控制我们梯度移动的幅度。 theta 表示的是每一个权重值,对损失函数求的偏导值,它用来控制我们梯度移动的方向 表示我们每一次计算,都会更新权重值,直到损失函数为最小

  • 批梯度下降/随机梯度下降/mini-batch梯度下降
    批:一次使用梯度下降公式跑所有的数据。每下降一步,使用所有训练集来计算梯度值。
    SGD: 一次使用1个数据,每下降一步,使用一条训练集来计算梯度值。
    Mini-batch:一次使用一批数据,一批是多少,大家可以自己指定。每下降一步,使用一部分训练集来计算梯度值。

  • 过拟合:如果你建立了一个模型,这个模型跑训练集的时候效果很好,但是跑测试集的时候,效果很差,就基本可以断定叫~
    如何处理过拟合:正则化(保留所有特征,减少量级或者theta的大小)
    正则化其实就是在我们的损失函数上,加了一个惩罚项(L1,L2)
    下图为损失函数+L2的公式 L1为去除平方

    惩罚项:如果你的损失函数想要变小,除了满足你自己的要求,还要满足惩罚项的要求:(如果减少特征数量:就用L1,如果要保留特征数量:就用L2)

Ridge回归 :损失函数+L2
Lasso回归 : 损失函数+L1 。惩罚项系数alpha高,菱形面积小,alpha低,菱形面积大
Elastic Net :损失函数+ L1+L2

举例:Lasso回归是随机梯度下降+L1,此处选择惩罚项系数为0.15 与 之对比的SGD随机梯度下降惩罚项选择L1 ,两个的效果是一样的

Ridge回归 :损失函数+L2 此处选择惩罚项系数为1 与 之对比的SGD随机梯度下降惩罚项选择L2 ,两个的效果是一样的

Elastic Net :损失函数+ L1+L2
SGD的penalty选择elasticnet。
alpha表示惩罚项要有多严厉,l1_ratio表示偏重(L1/L2)的程度,l1_ratio=0.15,由下图Elastic Net 的损失函数可知,正则偏重L2.

利用Sklearn做线性回归的预测

预测步骤如下:

  • 导包: from sklearn.linear_model import LinearRegression

  • 导数据:导入文件或者随机生成

  • 建模:利用 sklearn中 LinearRegression的fit方法:
    1> 实例化一个线性回归类:lin_reg= LinearRegression()
    2> 训练模型,确定参数:lin_reg.fit(X,Y)
    3> 参数存入对象lin_reg中,可以通过lin_reg.intercept_(截距)、lin_reg.coef_(系数)查看参数。

  • 预测:利用 sklearn中 LinearRegression的predict()方法:
    1> 准入预测数据X_predict
    2> lin_reg.predict(X_predict)

预测一组数据中当输入为12 对应输出的值。代码如下:

import numpy as np
from sklearn.linear_model import LinearRegression #在线性模型中导入线性回归
X=np.array([1,2,3,4,5,6,7,8,9,10,11]).reshape(-1,1)#x从一维转为二维
Y=np.array([3,4,5,7,9,11,13,15,17,19,21])#Y:一维
#实例化对象
lin_reg= LinearRegression()
#调用fit方法 训练模型找规律
lin_reg.fit(X,Y)
#找到规律 截距与斜率
print(lin_reg.intercept_,lin_reg.coef_)
#预测x=12对应的Y
X_new=np.array([[12]]) #创建数组
print(lin_reg.predict(X_new))执行结果:
0.03636363636363171 [1.87272727]
[22.50909091]

线性回归拟合原理(fit方法)

  • 拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示。
  • 对于一元线性回归(单变量线性回归)来说,学习算法为 y = ax + b
    换一种写法: hθ(x) = θ0 + θ1x1
  • 线性回归实际上要做的事情就是: 选择合适的参数(θ0, θ1),使得hθ(x)方程,很好的拟合训练集。实现如何把最有可能的直线与我们的数据相拟合。
  • 我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距就是建模误差(modeling error)。
  • 我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得损失函数最小。
  • 模型=规律=函数=函数所表示的图像

损失函数

  • 判断模型最优拟合方式:损失函数
  • 损失函数含义:所有的点与模型距离平均和的公式。距离为0表示所有点都在直线上,参数为最优参数,拟合最准确。距离不为0时,要尽量找到损失函数的最小值时所对应的参数。

梯度下降法

使得损失函数最小的方法:梯度下降法
思想:
1:随机初始化参数确定模型,得到一个损失函数值
2:使用特殊的更新方法更新参数,使得每一次所对应的损失函数的值越来越小。
3:直到更新参数损失函数的值变化波动不大,表示斜率到达最平稳处参数不变化进而损失函数不变化,找到损失函数最小值,此时对应的参数为最优解。


即:

损失函数是一个凸函数,斜率变化是逐渐平缓的
如果α太小的话,梯度下降会很慢
如果α太大的话,梯度下降越过最小值,不仅不会收敛,而且有可能发散
即使学习率α是固定不变的,梯度下降也会熟练到一个最低点
因为随着梯度下降迭代次数的递增,斜率会趋于平缓,也就是说,导数部分

机器学习------一元线性回归算法相关推荐

  1. TF之LiR:基于tensorflow实现机器学习之线性回归算法

    TF之LiR:基于tensorflow实现机器学习之线性回归算法 目录 输出结果 代码设计 输出结果 代码设计 # -*- coding: utf-8 -*-#TF之LiR:基于tensorflow实 ...

  2. python 预测算法_通过机器学习的线性回归算法预测股票走势(用Python实现)

    本文转自博客园,作者为hsm_computer 原文链接:https://www.cnblogs.com/JavaArchitect/p/11717998.html在笔者的新书里,将通过股票案例讲述P ...

  3. java实现一元线性回归算法

    网上看一个达人用java写的一元线性回归的实现,我觉得挺有用的,一些企业做数据挖掘不是用到了,预测运营收入的功能吗?采用一元线性回归算法,可以计算出类似的功能.直接上代码吧: 1.定义一个DataPo ...

  4. 机器学习(二)-一元线性回归算法(代码实现及数学证明)

    解决回归问题 思想简单,实现容易 许多强大的非线性模型的基础 结果具有很好的可解释性 蕴含机器学习中的很多重要思想 回归问题:连续值 如果样本 特征 只有一个 称为简单线性回归 y=ax + b 通过 ...

  5. 机器学习——一元线性回归和多元线性回归

    一元线性回归:梯度下降法 一元线性回归是线性回归的最简单的一种,即只有一个特征变量.首先是梯度下降法,这是比较经典的求法.一元线性回归通俗易懂地说,就是一元一次方程.只不过这里的斜率和截距要通过最小二 ...

  6. 用C语言实现一个简单的一元线性回归算法

    今天我们用C语言实现一个简单的线性回归算法:在代码前面我们在回顾一下线性回归. 线性回归是回归问题中的一种,线性回归假设目标值与特征是线性相关的,即满足一个多元一次方程式.通过构建损失函数,来求解损失 ...

  7. 通过机器学习的线性回归算法预测股票走势(用Python实现)

    在本人的新书里,将通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得.这里给出以线性回归算法预测股票的案例,以此讲述通过Python的sklearn ...

  8. 吴恩达-机器学习-一元线性回归模型实现

    吴恩达<机器学习>2022版 第一周 一元线性回归 房价预测简单实现 import numpy as np import math, copy#输入数据 x_train = np.arra ...

  9. 机器学习之线性回归算法 Linear Regression

    回归分析(Regression Analysis)是统计学的数据分析方法,目的在于了解两个或多个变量间是否相关.相关方向与强度,并建立数学模型以便观察特定变量来预测其它变量的变化情况. 线性回归算法( ...

最新文章

  1. 浏览器输入「xxxxhub」的背后.....
  2. 你不好奇缓冲池里的秘密吗?
  3. [JDBC] 获取数据库连接方式
  4. Hive _偏门常用查询函数(一)附带实例(空字段赋值、 CASE WHEN、行转列)
  5. CodedInputStream encountered an embedded string or message which claimed to have negative size.
  6. html上拉下拉查看文字内容,html5上拉下拉事件效果演示
  7. Kafka 源码分析之网络层(一)
  8. 写给数据分析小白:一种通用的数据思维
  9. 随机森林(独立思考的重要性)
  10. python解压.tar.gz
  11. C语言中scanf和printf格式化输入输出
  12. 本来都对象棋失去兴趣了, 是特殊的原因让我又开始从侧面搞象棋方面的擦边的游戏...
  13. 中央电视台的糖尿病案例解说 作者:倪海厦
  14. 回忆我的大学——大学图书馆借书记录
  15. 机器学习之深度学习 二分类、多分类、多标签分类、多任务分类
  16. ISO/IEC 9126 软件质量模型
  17. vue的App.vue
  18. 加速Pytorch安装的速度
  19. 网络概念与常见问题全解析(网络面试题 学会这篇 基本都能答上来)
  20. js模封装仿重力场方法

热门文章

  1. 中国的亚热带地区为什么这么冷(地缘气候论)
  2. 东航航空货运系统(四)功能模块_制单管理_1
  3. ZooKeeper实战篇之zk集群搭建、zkCli.sh操作、权限控制ACL、ZooKeeper JavaAPI使用
  4. matlab nlfilter 填充方式,MATLAB匿名函数句柄与NLFILTER一起使用
  5. Matlab:涡旋光束与平面光波、球面光波干涉
  6. android glide 动画,Glide-默认图与过渡动画(Placeholders Fade Animations)
  7. Easypack: Ansible方式部署工具中增加Metrics Server支持
  8. 无法通过“控制面板”卸载 Office 2003、Office 2007 或 Office 2010 套件的情况下,如何才能将其卸载?...
  9. Vue中报错: Uncaught (in promise) Error:Redirected when going from “x“ to “x“ via a navigation guard
  10. 硕士论文中期汇报ppt_机械加工中心期末项目中期报告