机器学习【新篇章】- Introduction & Linear Regression with One Variable

你挡我一时,挡不了我一世

发布日期: 2021-04-07 08:49:51 浏览量: 121
评分:
star star star star star star star star star star
*转载请注明来自write-bug.com

前文链接:https://write-bug.com/article/2700.html

碎碎念

距离上次总结,已是两年前,两年前的总结只注重微观性,逻辑性不强。从大数据的采集、存储、数据预处理、计算(简单机器学习算法)、常用评判标准的一条龙项目架构做了概括。但每个知识点都是分散的,虽然介绍了单个框架的深入原理,用了入门级的代码实现功能,介绍使用方法。这些框架每一个都可以钻的很深,一不小心就会掉入漩涡,无法从足够的高度观察工程,浪费时间,徒增烦恼。

由上面的架构概括,可观察到其中的每一个步骤所产生的价值、业务,甚至可以说是选择一个方向作为兴趣发展为你的专长,在之前的推荐系统项目中,虽然是单机版,但已经很好的帮助串起整个项目的工程和业务,这对你以后做其中任何一个节点的深入专业,都是有好处的。推荐系统把我引入到了机器学习的大门,里面NLP/CV两个方向所实现的功能更让人叹为观止。

学习时,我们总有一种系统学习的思想,好像老师划分考试范围,超出这个知识树的范围都不是我要学习的,缺乏自主学习能力,有人把这个称之为学生思维,但其实生活中所有知识都是散碎的,时刻创新的,需要我们不断地去吸收、消化,再输出。循环往复。

从这里开始,将参考吴恩达视频从头介绍机器学习、深度学习,这次会尽可能简洁的写下每个步骤所产生的逻辑,用numpy、pandas、matlab、pytorch/tensflow、sklearn等学习库介绍并实现每个算法。

学习的难点在于,不是拥有这些学习算法,而是针对不同的问题如何恰当地使用不同的算法组合(解决方案)。

机器学习的应用

之前项目所用到的机器学习领域的应用属于数据挖掘案例,近年由于网络信息和自动化技术的爆炸性增长,意味着产生了史上最大的数据集。web用户点击数据(即用户行为数据)、电子医疗记录、DNA基因数据序列等等都可以通过数据挖掘来给予用户最好的服务。

而除此之外,还有更多有趣又简单的应用:无人驾驶、item分类、web搜索、手写识别等等,计算机语言处理NLP、计算机视觉CV也都应用了机器学习。

机器学习定义

  • 吴恩达视频中,有个有趣的押韵定义:

    • 一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P
    • 当且仅当有了经验E后经过P评判,程序在处理T时的性能有所提升
    • 即计算机程序从经验E中学习某些类型的任务T和性能度量P,如果它在任务T中的性能(以P度量)随着经验E的提高而提高
  • 在无需具体的编程规则的条件下,给予计算机以学习的能力

假如对于邮件分类问题:T为邮件分类,E为观察用户是否标记垃圾邮件,P为正确归类邮件的比例。

学习算法

主要分为两种类型的学习算法:监督学习、无监督学习。

简单地说:

  • 监督学习算法时指我们将教计算机如何完成任务

  • 无监督学习算法指我们打算让它自己学习

一周导图

监督学习举例

预测房价问题

  • x:房子面积

  • y:房价

我们把收集到的真实房价数据映射在直角坐标系中:

房价

假设我们手里有一个房子面积是750平方英尺,如何知道卖多少钱呢?

应用学习算法,在图中这组数据上拟合一条直线,或者曲线,此时我们可将面积直接代入一次或二次方程算出房价$200k。

此例子中的数据集,由“正确答案“组成,而我们想预测房子价格的问题被称为“回归问题”,即 试推测一系列连续值属性。

推测乳腺癌良性与否问题

  • x:肿瘤大小

  • y:良性0/恶性1

同样映射入坐标系后,根据新数据的肿瘤大小预测是否为良性的问题。

肿瘤

以上两种数据描绘方式,第一种是根据肿瘤大小预测离散值的结果,第二种是根据肿瘤大小和患者年龄预测离散值的结果,这类问题被称为“分类问题”,即 试推测离散的输出值。

当然在机器学习问题中,肯定遇到不止一种特征的问题,比如患者的年龄(第二种描绘方式)、肿瘤密度、形状等都是决定良性与否的特征。此时我们就要找到一种算法,即使有无限多的特征都可以处理。比如支持向量机……

以上:

  • 介绍了监督学习,即 根据真实样本数据做出预测

  • 介绍了回归问题,即预测连续的输出

  • 介绍了分类问题,即预测离散的输出

无监督学习举例

不同于监督学习,无监督学习的数据无任何标签,我们不知如何处理,只是一个数据集。

应用:Google新闻主题自动聚类(这里聚类只是无监督学习其中的一个算法),DNA微观数据聚类,用户市场分类、天文数据分析等。

鸡尾酒宴问题

宴会中有很多人,在房间内放置两个话筒录音,那么多人的声音就会重叠在一起,声音大小不同,音色不同。此时,就可通过无监督学习算法分离出不同人的声音。

以上,介绍了无监督学习,想象一下,如果没有这类算法,我们将制定大量的专业知识、规则、链接大量的java库等等对数据做处理,而这个只需要让机器自动学出规律。

单变量线性回归

第一个学习算法:线性回归算法。

下面将介绍一些术语和表达字母:

之前介绍的回归与分类例子,都有一个数据集称为训练集(Training Set),其中一条为训练样本

  • m:训练样本的数目,即训练集中实例的数量

  • x:特征/输入变量

  • y:目标变量/输出变量

  • (x,y):训练集中实例/一条训练样本

  • (x^i,y^i):第 i 个观察样本

  • h:学习算法的函数(解决方案),也称假设(hypothesis)

将训练集“喂”给学习算法得到函数h,将变量x输入h得到预测y。

将训练集“喂”给学习算法得到函数h,将变量x输入h得到预测y。

问题1:我们如何由学习算法得到h?

假设我们的h(x) = θ0 +θ1x ,因为只有一个x特征/输入变量,所以叫单变量线性回归问题。

问题2:我们如何确定函数h(x)是否拟合Training Set?如何确定拟合时的θ参数?

假设 h(x)初始化参数θ0=0,θ1=0.5,如图所示。

假设 h(x)初始化参数θ0=0,θ1=0.5,如图所示。

初始化参数描绘出的图和训练集的拟合程度相差很大,即模型h(x)所预测的值与训练集中实际值之间的差距,即建模误差(modeling error)。

此时,我们的目标就是让预测更准确,也就是让建模误差的平方和最小时的模型参数。

即代价函数:

代价函数

最小。

这里通过三维坐标θ0,θ1和J(θ0,θ1)绘制等高线图:

等高线图

此时,可以在三维空间中找到一个最低点,就是最佳参数:θ0,θ1。

这个代价函数被称为平方误差代价函数,这个代价函数可解决大多数回归问题,作为常用手段使用。

通过以上两个问题和介绍:

  • 介绍了机器学习算法的使用术语

  • 了解了模型函数h

  • 了解了平方误差代价函数

代价函数

前面我们理解了代价函数是做什么的。接下来,我们将继续介绍目标:代价函数和如何自动使代价函数最小化θ参数的值。

代价函数

不管是这里的二维空间表达的代价函数J,还是三维空间表达的等高线图,我们最后都需要他取最小值时的参数θ0,θ1 的值。

问题:如何找到一种有效的算法,可以自动求出代价函数J 的最小值呢?

梯度下降是一个用来求函数最小值的算法,可求出代价函数J(θ0,θ1)的最小值。

梯度下降

思想1

  • 随机选取一个参数组合(θ0,θ1……θn),计算代价函数

  • 再寻找下一组可以让代价函数值下降更多的参数组合

  • 反复迭代到一个局部最小值(local minimum)

由于没有尝试所有的参数组合,所以不能确定得到的最小值是否是全局最小值(global minimum),选取不同的初始参数组合,就可找到不同的局部最小值。

思想2

想象站在山顶,在梯度下降算法中,我们需要观看周围360°,找出最快下山方向(θ偏导数),走出一小步(学习率),再次观察最佳方向,走出一小步,重复以上,直到你接近局部最低点位置,也就是你所在的位置可能是个坑。

梯度下降

批量梯度下降(batch gradient descent)公式:

批量梯度下降

(for j=0 & j=1)

α为学习率(learning rate),即走多大的步子。决定了我们沿着让代价函数下降程度最大的方向向下的步子有多大。

【注:】如何α太大或太小会怎样?

  • α太小,下降会很慢,需要迭代很多次才能到最低点

  • α太大,梯度下降法可能会越过最低点,甚至无法收敛,直至离最低点越来越远

偏导

是代价函数的偏导数,决定了向什么方向下山。

【注:】

  • 如果一开始θ1就初始化在局部最低点,意味着局部最优点的导数等于0,θ1不更新

  • 当导数接近最低点时,导数值自动变小,所以移动幅度会自动变小,而在局部最低时导数等于0,或者直至移动幅度非常小时停止(可设阈值)。所以不需要额外减小a

问题1:

梯度下降公式

的含义是什么?

罗列公式

解释公式

问题2:当我们谈论梯度下降时,意思时每次下降要更新所有参数,这里j取0和1,但对不同参数求导时,需要用到另外的参数,那么如何才能同时更新所有参数呢?

代码实现上,我们应先计算等式右边的公式,再同时更新参数θ。

更新参数

以上,就是梯度下降的介绍,它可以用来最小化任何代价函数,不只是线性回归。

结合梯度下降法与平方代价函数,得出第一个学习算法:线性回归算法。

公式对比:

公式对比

用于线性回归的梯度下降:

用于线性回归的梯度下降

这种梯度下降算法,有时也成为批量梯度下降。

即每一步更新参数时,都需要对所有训练样本计算(求导求和),事实上,也有其它类型的梯度下降法不是批量型,不考虑整个训练集,只关注小的子集,以后介绍。

以上,就是此章节的内容。

关键词: 机器学习、术语、监督学习、无监督学习、回归、分类、单变量线性回归、代价函数、梯度下降

实践

其他的手撕代码后续更新

更新(代码地址)https://github.com/duhaichao/ML-code

上传的附件
最近文章
eject