机器学习基础-吴恩达-coursera-(第一周学习笔记)----Introduction and Linear Regression

课程网址:https://www.coursera.org/learn/machine-learning

Week 1 —— Introduction and Linear Regression

目录

  • Week 1 Introduction and Linear Regression
  • 目录
  • 一 介绍
    • 1-1 机器学习概念及应用
    • 1-2 机器学习分类
  • 二 单变量的线性回归
    • 2-1 假设函数hypothesis
    • 2-2 线性回归的表示
    • 2-3 Cost function 代价函数
    • 2-4 参数求解梯度下降法 Gradient Descent
    • 2-5 梯度下降如何实现最小化代价函数
    • 2-6 学习率learning rate
    • 2-7 三种梯度下降方式
  • 三 总结

一 介绍

1-1 机器学习概念及应用

(1)Arthur Samuel 将其描述为:the field of study that gives computers the ability to learn without being explicitly programme.
让计算机有学习的能力,而不是明确的程序。
(2)另一种更为现代化的定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
一个计算机程序被定义为从经验E学习一些分类任务T和性能测量P,如果它在任务T中的性能(由P测量)随着经验E提升。

机器学习有下面几种定义: “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。 “机器学习是对能通过经验自动改进的计算机算法的研究”。 “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。” 一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

机器学习已经有了十分广泛的应用,例如:数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人运用。

1-2 机器学习分类

监督学习 Supervised learning (已知经验数据E的对错标签“p”)
1.回归问题 regression(输入、**输出:连续值**)

predict continuous valued output,即需要预测的变量是连续的。
例如:已知一组数据,包含房屋的面积(x)和对应的价格(y),预测当房屋面积为特定值时(x=x0)对应的价格为多少。

2.分类问题 classification(输入、**输出:离散值**)

discrete valued output,即需要预测的变量的离散的(0 or 1)。
例如:已知一组数据,包含肿瘤的大小(size)和对应的性质(良性/恶性)(0/1),当给出肿瘤的大小时,判断其为良性还是恶性。

非监督学习 Unsupervised learning(有以往数据,但不知道他们的分类)
1.聚类 clustering

网页将每天发生的各类新闻分类,相似的新闻会归到一类。

将数据按照其内部存在的某种属性关系就行归类,是一种无监督学习方式,不需要提供预测的标签信息。

2.非聚类 non-clustering

The “Cocktail Party Algorithm”,将人说话的声音与背景音乐分离。

异常点检测等问题!也是属于非监督学习,但是可以认为其为聚类的问题

二 单变量的线性回归

2-1 假设函数(hypothesis)

首先我们定义几个符号:
这里写图片描述
对于监督学习,我们的目标是,给定一个数据集,通过学习算法得到一个函数 h:X→Y,使得可以从 h(x) 中很好的预测出与x相对应的y值。函数h被称之为假设函数(hypothesis)。
以房价预测为例,房屋面积为x,预计房价值为y,对于单变量线性回归,我们可以设假设函数(hypothesis function)为:hθ(x)=θ0+θ1x。hθ(x)可以简写为h(x)。整个过程可以用下图表示:
这里写图片描述

2-2 线性回归的表示

预测房价的例子。 像这样用一条直线来模拟房价走势,就叫做线性回归。
这里写图片描述
这个问题属于监督问题,每个样本都给出了准确的答案。
同时因为房价是连续值,所以这是一个回归问题,对给定值预测实际输出。

公式:
hθ(x)=θ0+θ1∗x
其中两个θ是位置参数,我们的目的是求出他俩的值。

2-3 Cost function (代价函数)

我们取怎样的θ值可以使预测值更加准确呢?

想想看,我们应使得每一个预测值hθ和真实值y差别不大,可以定义代价函数如下:
这里写图片描述
这样,只需要通过使J值取最小,即可满足需求,那么怎么使J最小化呢?
看图:误差与两个参数的关系。

这里写图片描述
我们看到通过改变斜线的斜率 误差变得很小。也就是选择了上图的中心圈子里。
下面为了方便讲解,我们不使用这样的三维曲面,而是用轮廓图(contour plots)来代替。如下图所示:
这里写图片描述
右图J(θ0,θ1)的轮廓图,每一个圆圈代表J(θ0,θ1)值相同的所有点的集合。最小值是中心点。
图中红色的交叉点代表某个(θ0,θ1)数值组的集合,θ0=800,θ1=−0.15,同时,也对应与左边的一条直线。可以看出,它并不能很好地拟合左图的训练数据。而越接近中心的点(θ0,θ1)越能很好地拟合训练数据。

这里只有两个参数,而通常我们会遇到更多参数,更加复杂的代价函数,并不能将其可视化,但是我们要做的工作都是一样的,即找出使代价函数最小的参数值θ0、θ1。

2-4 参数求解(梯度下降法: Gradient Descent)

现在,我们有了假设函数(hypothesis)以及衡量其是否拟合数据的方法——代价函数(cost function),现在我们需要做的就是估计出假设函数(hypothesis)中的参数,即找出使代价函数最小化的参数(θ0,θ1),梯度下降(gradient descent)是一种常用的方法。
这里写图片描述
一般情况下,我们会从出发点开始环顾四周,找到最快的方向,每走一步,就环顾四周判断一次,再走下一步,直到达到局部最小值。而这种方法的特点是从不同的出发点出发,我们最终到达的可能是不同的局部最优解,如图。关于这个问题,我们之后再进行讨论。

红色箭头显示图中的最小点。我们这样做的方式是通过我们的代价函数的导数(函数的切线)。切线的斜率是那个点的导数,它会给我们一个走向的方向。我们降低代价函数的方向与最陡的下降方向一致。每一步的大小由参数α决定,称为学习率。

公式如下:

这里写图片描述
重复计算这个公式,直到函数收敛。

注意更新theta值应同时更新
这里写图片描述

其中的α称之为步长,在最优化课中我们有好几种方法来确定这个α的值。

比如:我们可以使用一些优化算法来进行学习率的超参数的搜索与学习。如:粒子群算法,蚁群算法,遗传算法等
我们还可以自定义一些规则,使得该参数可以自动适应训练的过程,如:定义随着迭代步数增加而指数衰减的学习率等。


这个α如果过小,则收敛很慢;
如果过大,则可能导致不收敛。

对于J(θ)的偏导数学推导过程如下:
这里写图片描述
在这里你就看到,我们在构造J(θ)时1/2的出现就是为了与指数的在求导时抵消。
其中x是向量,xi是单个样本。
经过简单的替换之后我们就可以得到θ新的迭代公式:
这里写图片描述

2-5 梯度下降如何实现最小化代价函数

那么为什么梯度下降可以用于最小化代价函数呢?
梯度下降如何实现一步步更新后,J(θ)越来越靠近最小值(山底)呢?
为了方便说明,我们假设θ0=0,则:
这里写图片描述
1、若θ1在局部最优解的右边

这里写图片描述
dJ(θ1)/dθ1永远大于等于0,且α永远为正,所以θ1将减小,向坐标轴左侧移动,即向代价函数J(θ1)更小的方向更新。

2、若θ1在局部最优解的左边

这里写图片描述
dJ(θ1)/dθ1永远小于等于0,且α永远为正,所以θ1将增大,向坐标轴右侧移动,即向代价函数J(θ1)更小的方向更新。

3、若θ1已经处于局部最优位置

由于该点切线的斜率为0,故θ1将保持不变,此时即使还存在其他θ1的值使代价函数更小,也只能收敛于该局部最小值,而无法收敛于全局最小值。

2-6 学习率(learning rate)

我们再来看学习率α:

1、 如果α太小,则因为每次更新θ1的幅度太小导致梯度下降收敛很慢,如下图:
这里写图片描述
2、如果α太大,则梯度下降可能会跨过最小值不能收敛,甚至离收敛点越来越远,如下图:
这里写图片描述

有趣的是,我们并不需要改变α的值,即使α值固定,梯度下降也能收敛到一个局部最小值。原因是代价函数在接近局部最小值的过程中,切线的斜率越来越小,即使α固定,梯度下降的步距也会越来越小,最终也能收敛到局部最小值。

2-7 三种梯度下降方式

1、批量梯度下降(batch gradient descent)

上述方法在每一步都会用到所有的训练数据(∑),所以被称为批量梯度下降(batch gradient descent)。在我们用的这个特殊例子(单变量线性回归)中,J(θ0,θ1)除了全局最优解(global optima)没有局部最优解(local optima)。
将梯度下降用于这种线性回归,总会收敛到全局最优。

批量梯度下降由于是一次性的额导入全部的数据,所以学习速度比较慢,而且对于大数据不适合

2、随机梯度下降( stochastic gradient descent)

(1)上面的梯度下降算法每次计算梯度都需要遍历所有的样本点,这是因为梯度是 J(θ) 的导数,而 J(θ) 是需要考虑所有样本的误差和 ,这个方法问题就是,扩展性问题,当样本点很大的时候,基本就没法算了。
(2)所以接下来又提出了随机梯度下降算法(stochastic gradient descent )。随机梯度下降算法,每次迭代只是考虑让该样本点的 J(θ) 趋向最小,而不管其他的样本点,这样算法会很快,但是收敛的过程会比较曲折,整体效果上,大多数时候它只能接近局部最优解,而无法真正达到局部最优解。所以适合用于较大训练集的情况。

3、小批量梯度下降(mini batch gradient descent)

后续会讲到,选择mini batch,可以实现快速学习,也利用了向量化,cost下降处于上两者之间

三 总结

到这里,我们就学习了一个最最简单的机器学习模型求解的全部内容。我们梳理一下,一共有三个层次 的 三个公式。
这里写图片描述
就这么简单 ,就可以求出一个预测房价的线性回归模型。
这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见8种机器学习算法总结

简介 机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM&a…

redis——数据结构(字典、链表、字符串)

1 字符串 redis并未使用传统的c语言字符串表示,它自己构建了一种简单的动态字符串抽象类型。 在redis里,c语言字符串只会作为字符串字面量出现,用在无需修改的地方。 当需要一个可以被修改的字符串时,redis就会使用自己实现的S…

Hotspot虚拟机的对象

创建 Step1:类加载检查 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 Step2:分…

redis——数据结构(整数集合,压缩列表)

4、整数集合 整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构, 可以保存 int16_t 、 int32_t 、 int64_t 的整数值, 并且保证集合中不会出现重复元素。 实现较为简单: typedef struct intset {// 编码方…

机器学习知识总结系列- 知识图谱(0-0)

文章目录目录机器学习知识图谱目录 本系列的文章只是根据个人的习惯进行总结,可能结构与一些书籍上不太一样,开始的内容比较简单,会随着后续的深入,不断丰富和更新图谱,同时也期待有相同兴趣的朋友一起给我留言一起丰富…

跳表介绍和实现

想慢慢的给大家自然的引入跳表。 想想,我们 1)在有序数列里搜索一个数 2)或者把一个数插入到正确的位置 都怎么做? 很简单吧 对于第一个操作,我们可以一个一个比较,在数组中我们可以二分,这…

机器学习知识总结系列- 基本概念(1-0)

文章目录目录1. 机器学习的定义2. 机器学习的分类2.1根据是否在人类监督下进行训练监督学习非监督学习半监督学习强化学习2.2根据是否可以动态渐进的学习在线学习批量学习2.3根据是否在训练数据过程中进行模式识别实例学习基于模型的学习3. 机器学习中的一些常见名词4. 机器学习…

剑指offer(刷题21-30)--c++,Python版本

文章目录目录第 21题:解题思路:代码实现:cpython第22 题:解题思路:代码实现:cpython第23 题:解题思路:代码实现:cpython第24 题:解题思路:代码实现…

剑指offer(刷题41-50)--c++,Python版本

文章目录目录第41题:解题思路:代码实现:cpython第42题:解题思路:代码实现:cpython第43题:解题思路:代码实现:cpython第44题:解题思路:代码实现&am…

redis——持久化

因为redis是内存数据库,他把数据都存在内存里,所以要想办法实现持久化功能。 RDB RDB持久化可以手动执行,也可以配置定期执行,可以把某个时间的数据状态保存到RDB文件中,反之,我们可以用RDB文件还原数据库…

剑指offer(刷题51-60)--c++,Python版本

文章目录目录第51题:解题思路:代码实现:cpython第52题:解题思路:代码实现:cpython第53题:解题思路:代码实现:cpython第54题:解题思路:代码实现&am…

2017第一届河北省大学生程序设计竞赛题解

超级密码 小明今年9岁了,最近迷上了设计密码!今天,他又设计了一套他认为很复杂的密码,并且称之为“超级密码”. 说实话,这套所谓的“超级密码”其实并不难:对于一个给定的字符串,你只要提取其中…

大数的四则运算(加法、减法、乘法、除法)

大数的四则运算(加法、减法、乘法、除法) 前言: 在计算机中数字表示的范围是有限制的,比如我们熟知的 int、float、double 等数据类型所能表示的范围都是有限的,如果我们要对位数达到几十位、几百位、上千位的大整数进…

随机过程1

随机过程1概述1.参考书目2.主要内容3.概率论--基本概念回顾3.1对“不确定性”的认识3.2 应对“不确定性”应该怎么做3.3随机变量(Random Variable)3.4分布函数(Distribution Function)3.5概率密度(Density)…

数组基操三连(4)

题目一 给定一个长度为N的整型数组arr,其中有N个互不相等的自然数1~N 请实现arr的排序 但是不要把下标0~N-1位置上的数值通过直接赋值的方式替换成1~N。 要求:时间复杂度为O(N),额外空间复杂度为O(1)。 思路:从左向右检查&…

Linux(1)-touch,mkdir,rm,mv,cp,ls,cd,cat

Linux1-实用终端命令1. touch, mkdir2. rm, mv, cp3. ls(通配符),cd(绝对/相对路径)4. cat, more/less文件内容浏览文件/目录-增删查改, 文件内容查看.1. touch, mkdir touch新文件 :在当前文件夹下,创建文件。文件不存在则创建新文件;文件存…

数组精选题目三连(5)

子数组的最大累加和问题 输入一个整形数组,求数组中连续的子数组使其和最大。比如,数组x 应该返回 x[2..6]的和187. 这四个代码完成的功能都是求最大子数组(注意用词准确,子数组连续,子序列可以不连续)。…