博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你不得不了解的机器学习知识
阅读量:1889 次
发布时间:2019-04-26

本文共 5442 字,大约阅读时间需要 18 分钟。

你不得不了解的机器学习知识

1.什么是机器学习?

(1)机器学习、深度学习、人工智能是什么关系?

  • 机器学习包含了很多种不同的算法,深度学习就是其中之一,其他方法包括决策树,聚类,贝叶斯等。
  • 深度学习的灵感来自大脑的结构和功能,即许多神经元的互连。人工神经网络(ANN)是模拟大脑生物结构的算法。
  • 不管是机器学习还是深度学习,都属于人工智能(AI)的范畴。所以人工智能、机器学习、深度学习可以用下面的图来表示:

(2)机器学习的基本思路

通过训练集,不断识别特征,不断建模,最后形成有效的模型,这个过程就叫“机器学习”!

(3)监督学习、非监督学习、强化学习

机器学习根据训练方法大致可以分为3大类:

  • 监督学习
  • 非监督学习
  • 强化学习

a.监督学习

监督学习是指我们给算法一个数据集,并且给定正确答案。机器通过数据来学习正确答案的计算方法。

我们准备了一大堆猫和狗的照片,我们想让机器学会如何识别猫和狗。当我们使用监督学习的时候,我们需要给这些照片打上标签。

我们给照片打的标签就是“正确答案”,机器通过大量学习,就可以学会在新照片中认出猫和狗。

b.非监督学习

非监督学习中,给定的数据集没有“正确答案”,所有的数据都是一样的。无监督学习的任务是从给定的数据集中,挖掘出潜在的结构。

我们把一堆猫和狗的照片给机器,不给这些照片打任何标签,但是我们希望机器能够将这些照片分分类。

非监督学习中,虽然照片分为了猫和狗,但是机器并不知道哪个是猫,哪个是狗。对于机器来说,相当于分成了 A、B 两类。

c.强化学习

强化学习更接近生物学习的本质,因此有望获得更高的智能。它关注的是智能体如何在环境中采取一系列行为,从而获得最大的累积回报。通过强化学习,一个智能体应该知道在什么状态下应该采取什么行为。

最典型的场景就是打游戏。

(4)机器学习实战的步骤

(5).经典机器学习算法

  • 线性回归
  • 逻辑回归
  • 决策树
  • K近邻
  • 支持向量机
  • 随机森林
  • AdaBoost

2.线性回归 – linear regression

线性回归的位置如上图所示,它属于机器学习 – 监督学习 – 回归 – 线性回归。

(1)什么是回归

回归的目的是为了预测,比如预测明天的天气温度,预测股票的走势…

(2)什么是线性

(3)什么是线性回归

线性回归本来是是统计学里的概念,现在经常被用在机器学习中。

如果 2 个或者多个变量之间存在“线性关系”,那么我们就可以通过历史数据,摸清变量之间的“套路”,建立一个有效的模型,来预测未来的变量结果。

优点:

  • a.建模速度快,不需要很复杂的计算,在数据量大的情况下依然运行速度很快
  • b.可以根据系数给出每个变量的理解和解释

缺点:

  • 不能很好地拟合非线性数据。所以需要先判断变量之间是否是线性关系。

3.逻辑回归 – Logistic regression

逻辑回归的位置如上图所示,它属于机器学习 – 监督学习 – 分类 – 逻辑回归。

逻辑回归(Logistic Regression)主要解决二分类问题,用来表示某件事情发生的可能性。

逻辑回归 vs 线性回归

  • a.线性回归只能用于回归问题,逻辑回归虽然名字叫回归,但是更多用于分类问题
  • b.线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是离散的变量
  • c.线性回归要求自变量和因变量呈线性关系,而逻辑回归不要求自变量和因变量呈线性关系
  • d.线性回归可以直观的表达自变量和因变量之间的关系,逻辑回归则无法表达变量之间的关系

4.决策树 – Decision tree

决策树是一种逻辑简单的机器学习算法,它是一种树形结构,所以叫决策树。

决策树算法采用树形结构,使用层层推理来实现最终的分类。决策树由下面几种元素构成:

  • 根节点:包含样本的全集
  • 内部节点:对应特征属性测试
  • 叶节点:代表决策的结果

预测时,在树的内部节点处用某一属性值进行判断,根据判断结果决定进入哪个分支节点,直到到达叶节点处,得到分类结果。

这是一种基于 if-then-else 规则的有监督学习算法,决策树的这些规则通过训练得到,而不是人工制定的。

(1)决策树例子

银行要用机器学习算法来确定是否给客户发放贷款,为此需要考察客户的年收入,是否有房产这两个指标。领导安排你实现这个算法,你想到了最简单的线性模型,很快就完成了这个任务。

首先判断客户的年收入指标。如果大于20万,可以贷款;否则继续判断。然后判断客户是否有房产。如果有房产,可以贷款;否则不能贷款。

这个例子的决策树如下图所示:

(2)决策树学习的3个步骤

  • a.特征选择

特征选择决定了使用哪些特征来做判断。在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。因而特征选择的作用就是筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。

  • b.决策树生成

选择好特征后,就从根节点触发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。

  • c.决策树剪枝

剪枝的主要目的是对抗“过拟合”,通过主动去掉部分分支来降低过拟合的风险。

(3)3种典型的决策树算法

  • ID3算法

    ID3 是最早提出的决策树算法,他就是利用信息增益来选择特征的。

  • C4.5 算法

    ID3 的改进版,它不是直接使用信息增益,而是引入“信息增益比”指标作为特征的选择依据。

  • CART(Classification and Regression Tree)

    这种算法即可以用于分类,也可以用于回归问题。CART 算法使用了基尼系数取代了信息熵模型。

5.K邻近 – k-nearest neighbors | KNN

通过搜索K个最相似的实例(邻居)的整个训练集并总结那些K个实例的输出变量,对新数据点进行预测。对于回归问题,这可能是平均输出变量,对于分类问题,这可能是模式(或最常见)类值。

诀窍在于如何确定数据实例之间的相似性。如果您的属性具有相同的比例(例如,以英寸为单位),则最简单的技术是使用欧几里德距离,您可以根据每个输入变量之间的差异直接计算该数字。

6.支持向量机

超平面是分割输入变量空间的线。在SVM中,选择超平面以最佳地将输入变量空间中的点与它们的类(0级或1级)分开。在二维中,您可以将其视为一条线,并假设我们的所有输入点都可以被这条线完全分开。SVM学习算法找到导致超平面最好地分离类的系数。

支持向量机的基础概念可以通过一个简单的例子来解释。让我们想象两个类别:红色和蓝色,我们的数据有两个特征:x 和 y。我们想要一个分类器,给定一对(x,y)坐标,输出仅限于红色或蓝色。我们将已标记的训练数据列在下图中:

支持向量机会接受这些数据点,并输出一个超平面(在二维的图中,就是一条线)以将两类分割开来。这条线就是判定边界:将红色和蓝色分割开。

但是,最好的超平面是什么样的?对于 SVM 来说,它是最大化两个类别边距的那种方式,换句话说:超平面(在本例中是一条线)对每个类别最近的元素距离最远。

7.随机森林

随机森林是一种由决策树构成的集成算法,它在很多情况下都能有不错的表现。

随机森林属于 集成学习 中的 Bagging(Bootstrap AGgregation 的简称) 方法。如果用图来表示他们之间的关系如下:

(1)随机森林

随机森林是由很多决策树构成的,不同决策树之间没有关联。

当我们进行分类任务时,新的输入样本进入,就让森林中的每一棵决策树分别进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当做最终的结果。

(2)构造随机森林的4个步骤

  • a.假如有N个样本,则有放回的随机选择N个样本(每次随机选择一个样本,然后返回继续选择)。这选择好了的N个样本用来训练一个决策树,作为决策树根节点处的样本。
  • b.当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性,满足条件m << M。然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。
  • c.决策树形成过程中每个节点都要按照步骤2来分裂(很容易理解,如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子节点,无须继续分裂了)。一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。
  • d.按照步骤1~3建立大量的决策树,这样就构成了随机森林了

8.集成学习

在机器学习中,我们讲了很多不同的算法。那些算法都是单打独斗的英雄。而集成学习就是将这些英雄组成团队。实现“3 个臭皮匠顶个诸葛亮”的效果。

本文将介绍集成学习的 2 种主要思路:bagging、boosting。

(1)什么是集成学习

集成学习归属于机器学习,他是一种「训练思路」,并不是某种具体的方法或者算法。

现实生活中,大家都知道「人多力量大」,「3 个臭皮匠顶个诸葛亮」。而集成学习的核心思路就是「人多力量大」,它并没有创造出新的算法,而是把已有的算法进行结合,从而得到更好的效果。

集成学习会挑选一些简单的基础模型进行组装,组装这些基础模型的思路主要有 2 种方法:

  • bagging(bootstrap aggregating的缩写,也称作“套袋法”)
  • boosting

(2)Bagging

Bagging 的核心思路是——民主。

Bagging 的思路是所有基础模型都一致对待,每个基础模型手里都只有一票。然后使用民主投票的方式得到最终的结果。

大部分情况下,经过 bagging 得到的结果方差(variance)更小。

具体过程:

  • a.从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
  • b.每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
  • c.对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

(3)Boosting

Boosting 的核心思路是——挑选精英。

Boosting 和 bagging 最本质的差别在于他对基础模型不是一致对待的,而是经过不停的考验和筛选来挑选出「精英」,然后给精英更多的投票权,表现不好的基础模型则给较少的投票权,然后综合所有人的投票得到最终结果。

大部分情况下,经过 boosting 得到的结果偏差(bias)更小。

具体过程:

  • a.过加法模型将基础模型进行线性的组合。
  • b.每一轮训练都提升那些错误率小的基础模型权重,同时减小错误率高的模型权重。
  • c.在每一轮改变训练数据的权值或概率分布,通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。

(4)Bagging 和 Boosting 的4 点差别

样本选择上:

  • Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
  • Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

样例权重:

  • Bagging:使用均匀取样,每个样例的权重相等
  • Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

预测函数

  • Bagging:所有预测函数的权重相等。
  • Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

并行计算

  • Bagging:各个预测函数可以并行生成
  • Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

8.AdaBoost

集成学习归属于机器学习,他是一种“训练思路”,并不是某种具体的方法或者算法。

现实生活中,大家都知道“人多力量大”,“3 个臭皮匠顶个诸葛亮”。而集成学习的核心思路就是“人多力量大”,它并没有创造出新的算法,而是把已有的算法进行结合,从而得到更好的效果。

Boosting是一种集合技术,试图从许多弱分类器中创建一个强分类器。这是通过从训练数据构建模型,然后创建第二个模型来尝试从第一个模型中纠正错误来完成的。添加模型直到完美预测训练集或添加最大数量的模型。

AdaBoost是第一个为二进制分类开发的真正成功的增强算法。这是理解助力的最佳起点。现代助推方法建立在AdaBoost上,最着名的是随机梯度增强机。

AdaBoost用于短决策树。在创建第一个树之后,每个训练实例上的树的性能用于加权创建的下一个树应该关注每个训练实例的注意力。难以预测的训练数据被赋予更多权重,而易于预测的实例被赋予更少的权重。模型一个接一个地顺序创建,每个模型更新训练实例上的权重,这些权重影响序列中下一个树所执行的学习。构建完所有树之后,将对新数据进行预测,并根据训练数据的准确性对每棵树的性能进行加权。

转载地址:http://wegbf.baihongyu.com/

你可能感兴趣的文章
vue使用typescript / uniapp 使用typescript
查看>>
uniapp 使用typescript 运行小程序正常 h5 报错/ keepAliveInclude is not defined
查看>>
webpack打包html里面img后src为“[object Module]”
查看>>
使用webpack打包发现css单行注释报错
查看>>
webpack 打包拆分原则和理解(SplitChunksPlugin)
查看>>
Object.fromEntries方法报错
查看>>
MyEclipse10 加载慢内存消耗严重优化方案
查看>>
eclipse 异常 Subversion Native Library Not Available解决方案
查看>>
二叉排序树、二叉平衡树
查看>>
21、栈的压入、弹出序列
查看>>
如何利用平台的不同去推广?
查看>>
如何在 MacOS 中删除 Time Machine 本地快照?
查看>>
如何使用 SSD 升级 MacBook Pro
查看>>
Windows 11无法支持 Mac 安装?用这招轻松绕过 TPM 限制
查看>>
MacBook 键盘出现故障,如何修复?
查看>>
M1 Mac专用utm虚拟机安装Windows 11教程
查看>>
无需升级 macOS Monterey 使用新版本 safari 浏览器的方法
查看>>
macOS 12 Monterey beta 2
查看>>
苹果Mac如何限制进程 CPU 资源占用?
查看>>
数字货币是什么?和贵金属及法定货币有什么区别?
查看>>