目录

一.Machine Learning概念

二.单(双)变量线性回归模型

1.代价函数

2.梯度下降

三.搭建实验环境


一.Machine Learning概念

简单在知乎上搜了一下机器学习的学习方法,然后就开始看吴恩达老师的课程了。

机器学习基于学习方式可以分为三类:

  • 有监督学习
    监督学习就是有标签的,监督学习主要做两类工作,分别是回归和分类,回归的例子,比如房价预测,最后从大量散点里回归出一条函数曲线,然后再有输入就可以用这个函数来给出一个预测输出,回归问题的输出可能是无限的;而分类就比较符合字眼的意思,比如把猫狗的图片分成两类,再比如检测乳腺癌片子,是良性还是恶性,分类问题的输出是有限的。学习结果为函数。
  • 无监督学习
    有监督学习有输入x和标签y,而无监督学习有输入x但是没有标签y,学习结果为类别。主要有以下几类:
    聚类算法:没有标签的数据并尝试将它们自动分组到集群中,即算法在没有标签的前提下自己去发现数据中的不同的结构,自己进行分类。比如新闻网站每天的热点新闻中的一些关键词可能每天都有变化,这就能用到无监督学习,比如很多条新闻中都有“大熊猫跳舞”这个字眼,那么算法可能就会将这些新闻分为一类。又如根据客户一些个人信息将客户分为不同类别。除了聚类算法之外,还有异常检测和降维这两大类的工作。
  • 强化学习
    强化学习就是学习”做什么才能使得数值化的收益信号最大化”.学习者不会被告知应该采取什么动作,而是必须自己通过尝试去发现哪些动作会产生最丰厚的收益.试错和延迟收益是强化学习两个最重要最显著的特征。

    强化学习与有监督学习不同: 有监督学习是从外部监督者提供的带标注训练集中进行学习.每一个样本都是情境和标注的描述, 而强化学习是从交互中学习。
    强化学习也与无监督学习不同:无监督学习是一个典型的寻找未标注数据中隐含结构的过程, 强化学习的目标是最大化收益信号而不是找出数据的隐含结构。

二.单(双)变量线性回归模型

1.代价函数

这意味着将一条直线拟合到您的数据中。

以预测房价的例子说一下,上图左侧是房屋大小对应的房屋价格表,右边是定义的一些常用术语,注意右下角那个x和y的右上角的(i)不是次幂,i是几就代表是第几组输入数据。

y-hat是一个估计值,他可能是一个真实值,也可能不是一个真实值;而y是一个训练集中的真实值。

这个模型训练的目的就是确定w和b的值,在此之前,我们先来看看如何衡量这条线(得到的目标函数)与如练数据的拟合程度

需要用到下面的平均误差成本函数(注意除2只是为了让结果更简洁,因为等学到梯度哪里求个偏导正好和分母下来的2约去,不除2这个函数也是平均误差成本函数),这个函数通常用于线性回归

误差当然越小越好,所以咱们现在就想找最小的J

为了找最小的J,咱们为了方便讲解,简化一下模型,暂且扔掉b,使发f(x)=wx

上图左侧是f关于x的函数,右侧是平均误差函数J关于w的函数,因为我们现在想找到使J最小的w是多少。咱们设一组(x,y)是(1,1),(2,2),(3,3),注意是y不是y-hat,即这三组数据是真实值(正确的,显而易见当w=1的时候误差函数最小,即0),训练样例的数量是3,比如现在w=1,那么现在这次训练的误差函数计算就是[(1-1)^2+(2-2)^2+(3-3)^2]/(2*3)=0/6=0,即此时J(w=1)=0,然后下次w=0.5,w=0,w还可以等于其他值(每取一个w都是一次训练,每次都是用x=1,2,3这三个点计算此次训练的误差函数),依次试出对应的J(w)是多少,就可以画出右侧对应的误差函数的图像了,然后找到这个误差函数的最低点对应的w值即为我们要找的w值。

那么如果我们这次不把b置为0,我们现在的平均误差函数对应两个变量w和b的话,那么我们再来看看函数J(w,b)的形状,如下,类似于一个碗状,x和y轴对应于w和b,z轴对应于J。

如果咱们用刀水平切上很多刀,每一刀都可以得到一个椭圆,然后我们就能得到等高线图了。

等高线图上的每一个椭圆上的点对应的J值都相同,即便这些点的w和b的值都不一样。

等高线图越接近中心的椭圆上的点就就越是我们想要的w和b的值。

2.梯度下降

梯度下降背后的思想是:开始时我们随机选择一个参数的组合,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。因为我们的多参数函数可能不是碗状的,所以可能有多个凹点。

想象一下你正站立在山的这一点上,站立在你想象的公园这座红色山上,在梯度下降算法中,我们要做的就是旋转360度,看看我们的周围,并问自己要在某个方向上,用小碎步尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置。

梯度下降的实现

上式中的α是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。偏导就不用说了,高数的知识,虽然已经考完研快11个月了,但是还是记得的。

还以咱们之前的房价预测为例,平均误差函数J有两个变量w和b,即左上角那俩公式,注意梯度下降时同时更新,即用旧值更新,看下面的Correct和Incorrect即可明白。

让我们来看看如果太小或太大会出现什么情况:

如果太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点,所以如果太小的话,可能会很慢,因为它会一点点挪动,它会需要很多步才能到达全局最低点。

如果太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果太大,它会导致无法收敛,甚至发散。

如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值,因为局部最低点的倒数为0,所以代入公式之后,更新之后就是新值=旧值-α*0=旧值。这也解释了为什么即使学习速率保持不变时,梯度下降也可以收敛到局部最低点。

看到上图梯度下降的这个过程,从粉色点一直到最后的红点,斜率(导数)是越来越小的,看看公式可以知道w的变化也是越来越小的,因为α*偏导数,α是个固定值,所以后面每一步长其实都是越来越小(但就这个图分析而言)。

梯度下降算法公式中的偏导数推导如下:

通常w和b会被初始化为0。

我们刚刚讲过的算法,有时也称为批量梯度下降。实际上,在机器学习中,通常不太会给算法起名字,但这个名字”批量梯度下降”,指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有个训练样本求和。因此,批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本,而事实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。

三.搭建实验环境

现在咱们来搭建一个和吴恩达老师的课程一样的实验环境

启动jupyter notebook,下载anaconda时,里面已经集成了,所以咱们直接左键点击,打开即可,至于anaconda和jupyter notebook怎么用,这个直接百度吧,一搜一大堆,我就不细说了。

打开jupyter notebook之后,参考这篇文章,把咱们在github上下载的吴恩达老师课程里的课后实验代码等文件上传到jupyter notebook中,然后直接在jupyter notebook里就可以坐跑跑他给的代码了,至此,实验环境就算搭建完了吧。当然,如果不想把文件放到C盘,也可以先打开anaconda的powershell,然后切到文件所在的路径,再输入jupyter notebook就可以了。

等待jupyter notebook打开之后就可以看到文件了。

我的机器学习进程可能得放缓一段时间了,得先去做服务计算的大作业了(一个微服务系统,呜呜呜,等过一段时间回来再继续更,此系列文章)

对了,吴恩达老师的课件里的代码是用的jupyter notebook写的,但是因为jupyter notebook的每个单元格是独立的,所以在一个单元格里定义的东西,另一个单元格里用不了,所以我们需要把每小块的代码按照从上到下的顺序关系把它们复制到到一个单元格里,这样我们就能运行代码了,很舒服!

向毕业妥协系列之机器学习笔记:监督学习-回归与分类(一)相关推荐

  1. 向毕业妥协系列之机器学习笔记:决策树(一)

    目录 一.决策树模型 二.学习过程 三.纯度(熵) 四.选择拆分信息增益 一.决策树模型 现在以识别猫为例,有三个特征,分别是耳朵,脸和胡须,然后每个特征都有两种输出(等价于二元分类) 决策树模型: ...

  2. 机器学习中有监督学习——回归

    机器学习中有监督学习--回归 一.引言 本材料参考Andrew Ng大神的机器学习课程 http://cs229.stanford.edu,以及斯坦福无监督学习UFLDL tutorial http: ...

  3. 李弘毅机器学习笔记:回归演示

    李弘毅机器学习笔记:回归演示 现在假设有10个x_data和y_data,x和y之间的关系是y_data=b+w*x_data.b,w都是参数,是需要学习出来的.现在我们来练习用梯度下降找到b和w. ...

  4. 传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例

    传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例 文章目录 传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例 1导入基本库 2读取数据并且变换类型 3输出数据 4可视化数据 ...

  5. 传统机器学习笔记6——回归树模型

    目录 前言 一.决策树回归 1.1.核心思想 二.启发式切分与最优属性选择 2.1.回归模型示例 2.2.回归树的构建方法 递归二分 过拟合与正则化 3.1.过拟合问题 3.2.过拟合问题的解决方法 ...

  6. 吴恩达机器学习之逻辑回归(二分类)

    吴恩达机器学习之逻辑回归 逻辑回归 二分类逻辑回归 二分类逻辑回归案例 python代码实现(含详细代码注释): 案例中几个问题的解析 不同于线性回归,逻辑回归的hθ(x)还需要用sigmoid函数处 ...

  7. 向毕业妥协系列之深度学习笔记(三)DL的实用层面(上)

    目录 一.训练_开发_测试集 二.方差与偏差 三.正则化 四.Dropout正则化 五.其他正则化方法 本篇文章大部分又是在ML中学过的,除了Dropout正则化及之后的部分. 一.训练_开发_测试集 ...

  8. 七月算法机器学习笔记5 回归模型

    七月算法(http://www.julyedu.com) 12月份 机器学习在线班 学习笔记

  9. 机器学习笔记——逻辑回归(Logistic Regression)

    一.什么是逻辑回归? 逻辑回归是用于处理因变量为分类变量的回归问题,常见的是二分类问题,也可以处理多分类问题. 二.二分类问题 对于二分类问题,逻辑回归模型的输出变量范围始终在 0 和 1 之间.逻辑 ...

最新文章

  1. spring事务管理-注解配置aop事务(重点)
  2. 测试——设计思维之获取反馈
  3. element-ui表单_每日UI挑战强加-登录表单(分步教程)
  4. 如何使用不同的记录器实现配置SLF4J
  5. linux学习-将seafile启动脚本设置为开机启动服务
  6. HTML progress控件
  7. 跨部门不配合工作_同事不配合工作,划水甚至推诿,该怎么体现你的手腕
  8. 数据结构和算法——八种常用的排序算法------基数排序的优化(队列实现)
  9. [Jscript]Js导出Excel
  10. 用网速作为手机信号强度
  11. Python爬虫系列(一)——手把手教你写Python爬虫
  12. [SageMath] 关于SageMath本地环境的搭建与基本使用
  13. 科海故事博览杂志科海故事博览杂志社科海故事博览编辑部2022年第15期目录
  14. C++实现会议安排问题(贪心问题)
  15. SDHC卡写单块和读单块
  16. 百度UEditor视频相关bug汇总和解决方案
  17. 计算机文管二级试题,计算机文管二级试题
  18. C++输入和输出:控制台I/O(键盘和屏幕)及文件I/O详细笔记
  19. 爬虫爬取二次元网站美女图片
  20. CF983E NN country

热门文章

  1. 世界知名洋酒种类及酒具的使用
  2. 视频剪辑 电脑录屏助手
  3. linux最新bbr加速,CentOS 7.8 安装BBR加速
  4. 用MFC编程时在源文件里经常看到的AFX或afx是什么意思?
  5. linux怎么显示第三个数据,从零开始的linux 第三章
  6. (零基础)入门python学习四步骤,附上Python全栈学习路线大刚!
  7. 企业文档管理难题,云盒子来解决!
  8. python知识图谱实战_知识图谱实战
  9. 图解WordPress怎么安装主题(三种方式)
  10. STM32 Combined PWM的用法