diff --git a/ch02_机器学习基础/第二章_机器学习基础.md b/ch02_机器学习基础/第二章_机器学习基础.md index f4ecb23..69fbb70 100644 --- a/ch02_机器学习基础/第二章_机器学习基础.md +++ b/ch02_机器学习基础/第二章_机器学习基础.md @@ -1,3 +1,5 @@ + + [TOC] @@ -6,50 +8,127 @@ ​ 机器学习起源于上世纪50年代,1959年在IBM工作的Arthur Samuel设计了一个下棋程序,这个程序具有学习的能力,它可以在不断的对弈中提高自己。由此提出了“机器学习”这个概念,它是一个结合了多个学科如概率论,优化理论,统计等,最终在计算机上实现自我获取新知识,学习改善自己的这样一个研究领域。机器学习是人工智能的一个子集,目前已经发展出许多有用的方法,比如支持向量机,回归,决策树,随机森林,强化方法,集成学习,深度学习等等,一定程度上可以帮助人们完成一些数据预测,自动化,自动决策,最优化等初步替代脑力的任务。 -## 2.1 大话理解机器学习本质 +## 2.1 基本概念 + +### 2.1.1 大话理解机器学习本质 ​ 机器学习(Machine Learning, ML),顾名思义,让机器去学习。这里,机器指的是计算机,是算法运行的物理载体,你也可以把各种算法本身当做一个有输入和输出的机器。那么到底让计算机去学习什么呢?对于一个任务及其表现的度量方法,设计一种算法,让算法能够提取中数据所蕴含的规律,这就叫机器学习。如果输入机器的数据是带有标签的,就称作有监督学习。如果数据是无标签的,就是无监督学习。 -## 2.2 各种常见算法图示 +### 2.1.2 什么是神经网络 + +​ 神经网络就是按照一定规则将多个神经元连接起来的网络。不同的神经网络,具有不同的连接规则。 +例如全连接(Full Connected, FC)神经网络,它的规则包括: + +1. 有三种层:输入层,输出层,隐藏层。 + +2. 同一层的神经元之间没有连接。 + +3. fully connected的含义:第 N 层的每个神经元和第 N-1 层的所有神经元相连,第 N-1 层神经元的输出就是第 N 层神经元的输入。 + +4. 每个连接都有一个权值。 + + **神经网络架构** + ​ 图2-2就是一个神经网络系统,它由很多层组成。输入层负责接收信息,比如一只猫的图片。输出层是计算机对这个输入信息的判断结果,它是不是猫。隐藏层就是对输入信息的传递和加工处理。 + ![图2-2 神经网络系统](E:/DeepLearning-500-questions/ch02_%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80/img/ch2/2.5.1.png) + +### 2.1.3 各种常见算法图示 ​ 日常使用机器学习的任务中,我们经常会遇见各种算法,图2-1是各种常见算法的图示。 -|回归算法|聚类算法|正则化方法| -|:-:|:-:|:-:| -|![](./img/ch2/2.1/1.jpg)|![](./img/ch2/2.1/2.jpg)|![](./img/ch2/2.1/3.jpg)| -|决策树学习|贝叶斯方法|基于核的算法| -|:-:|:-:|:-:| -|![](./img/ch2/2.2.4.png)|![](./img/ch2/2.1/5.jpg)|![](./img/ch2/2.1/6.jpg)| +| 回归算法 | 聚类算法 | 正则化方法 | +| :----------------------: | :----------------------: | :----------------------: | +| ![](./img/ch2/2.1/1.jpg) | ![](./img/ch2/2.1/2.jpg) | ![](./img/ch2/2.1/3.jpg) | -|聚类算法|关联规则学习|人工神经网络| -|:-:|:-:|:-:| -|![](./img/ch2/2.1/7.jpg)|![](./img/ch2/2.2.8.png)|![](./img/ch2/2.2.09.png)| +| 决策树学习 | 贝叶斯方法 | 基于核的算法 | +| :----------------------: | :----------------------: | :----------------------: | +| ![](./img/ch2/2.2.4.png) | ![](./img/ch2/2.1/5.jpg) | ![](./img/ch2/2.1/6.jpg) | -|深度学习|降低维度算法|集成算法| -|:-:|:-:|:-:| -|![](./img/ch2/2.2.10.png)|![](./img/ch2/2.2.11.png)|![](./img/ch2/2.2.12.png)| -|:-:|:-:|:-:| -||图2-1 各种常见算法|| +| 聚类算法 | 关联规则学习 | 人工神经网络 | +| :----------------------: | :----------------------: | :-----------------------: | +| ![](./img/ch2/2.1/7.jpg) | ![](./img/ch2/2.2.8.png) | ![](./img/ch2/2.2.09.png) | + +| 深度学习 | 降低维度算法 | 集成算法 | +| :-----------------------: | :-----------------------: | :-----------------------: | +| ![](./img/ch2/2.2.10.png) | ![](./img/ch2/2.2.11.png) | ![](./img/ch2/2.2.12.png) | +| :-: | :-: | :-: | +| | 图2-1 各种常见算法 | | + +### 2.1.4 计算图的导数计算 + +​ 计算图导数计算是反向传播,利用链式法则和隐式函数求导。 + +​ 假设 $z = f(u,v)$ 在点 $(u,v)$ 处偏导连续,$(u,v)$是关于 $t$ 的函数,在 $t$ 点可导,求 $z$ 在 $t$ 点的导数。 + +根据链式法则有 +$$ +\frac{dz}{dt}=\frac{\partial z}{\partial u}.\frac{du}{dt}+\frac{\partial z}{\partial v} + .\frac{dv}{dt} +$$ +​ 链式法则用文字描述:“由两个函数凑起来的复合函数,其导数等于里边函数代入外边函数的值之导数,乘以里边函数的导数。 +​ 为了便于理解,下面举例说明: +$$ +f(x)=x^2,g(x)=2x+1 +$$ +​ 则: +$$ +{f[g(x)]}'=2[g(x)] \times g'(x)=2[2x+1] \times 2=8x+4 +$$ + +### 2.1.5 理解局部最优与全局最优 + +​ 笑谈局部最优和全局最优 + +> ​ 柏拉图有一天问老师苏格拉底什么是爱情?苏格拉底叫他到麦田走一次,摘一颗最大的麦穗回来,不许回头,只可摘一次。柏拉图空着手出来了,他的理由是,看见不错的,却不知道是不是最好的,一次次侥幸,走到尽头时,才发现还不如前面的,于是放弃。苏格拉底告诉他:“这就是爱情。”这故事让我们明白了一个道理,因为生命的一些不确定性,所以全局最优解是很难寻找到的,或者说根本就不存在,我们应该设置一些限定条件,然后在这个范围内寻找最优解,也就是局部最优解——有所斩获总比空手而归强,哪怕这种斩获只是一次有趣的经历。 +> ​ 柏拉图有一天又问什么是婚姻?苏格拉底叫他到树林走一次,选一棵最好的树做圣诞树,也是不许回头,只许选一次。这次他一身疲惫地拖了一棵看起来直挺、翠绿,却有点稀疏的杉树回来,他的理由是,有了上回的教训,好不容易看见一棵看似不错的,又发现时间、体力已经快不够用了,也不管是不是最好的,就拿回来了。苏格拉底告诉他:“这就是婚姻。” + +​ 优化问题一般分为局部最优和全局最优。 + +1. 局部最优,就是在函数值空间的一个有限区域内寻找最小值;而全局最优,是在函数值空间整个区域寻找最小值问题。 +2. 函数局部最小点是它的函数值小于或等于附近点的点。但是有可能大于较远距离的点。 +3. 全局最小点是那种它的函数值小于或等于所有的可行点。 + +### 2.1.5 大数据与深度学习之间的关系 + +**大数据**通常被定义为“超出常用软件工具捕获,管理和处理能力”的数据集。 +**机器学习**关心的问题是如何构建计算机程序使用经验自动改进。 +**数据挖掘**是从数据中提取模式的特定算法的应用。 +在数据挖掘中,重点在于算法的应用,而不是算法本身。 + +**机器学习和数据挖掘**之间的关系如下: +数据挖掘是一个过程,在此过程中机器学习算法被用作提取数据集中的潜在有价值模式的工具。 +大数据与深度学习关系总结如下: + +1. 深度学习是一种模拟大脑的行为。可以从所学习对象的机制以及行为等等很多相关联的方面进行学习,模仿类型行为以及思维。 +2. 深度学习对于大数据的发展有帮助。深度学习对于大数据技术开发的每一个阶段均有帮助,不管是数据的分析还是挖掘还是建模,只有深度学习,这些工作才会有可能一一得到实现。 +3. 深度学习转变了解决问题的思维。很多时候发现问题到解决问题,走一步看一步不是一个主要的解决问题的方式了,在深度学习的基础上,要求我们从开始到最后都要基于一个目标,为了需要优化的那个最终目标去进行处理数据以及将数据放入到数据应用平台上去,这就是端到端(End to End)。 +4. 大数据的深度学习需要一个框架。在大数据方面的深度学习都是从基础的角度出发的,深度学习需要一个框架或者一个系统。总而言之,将你的大数据通过深度分析变为现实,这就是深度学习和大数据的最直接关系。 + + + +## 2.2 机器学习学习方式 -## 2.3 监督学习、非监督学习、半监督学习、弱监督学习? ​ 根据数据类型的不同,对一个问题的建模有不同的方式。依据不同的学习方式和输入数据,机器学习主要分为以下四种学习方式。 -**监督学习**: +### 2.2.1 监督学习 + 1. 监督学习是使用已知正确答案的示例来训练网络。已知数据和其一一对应的标签,训练一个预测模型,将输入数据映射到标签的过程。 2. 监督式学习的常见应用场景如分类问题和回归问题。 3. 常见的有监督机器学习算法包括支持向量机(Support Vector Machine, SVM),朴素贝叶斯(Naive Bayes),逻辑回归(Logistic Regression),K近邻(K-Nearest Neighborhood, KNN),决策树(Decision Tree),随机森林(Random Forest),AdaBoost以及线性判别分析(Linear Discriminant Analysis, LDA)等。深度学习(Deep Learning)也是大多数以监督学习的方式呈现。 -**非监督式学习**: +### 2.2.2 非监督式学习 + 1. 在非监督式学习中,数据并不被特别标识,适用于你具有数据集但无标签的情况。学习模型是为了推断出数据的一些内在结构。 2. 常见的应用场景包括关联规则的学习以及聚类等。 3. 常见算法包括Apriori算法以及k-Means算法。 -**半监督式学习**: +### 2.2.3 半监督式学习 + 1. 在此学习方式下,输入数据部分被标记,部分没有被标记,这种学习模型可以用来进行预测。 2. 应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,通过对已标记数据建模,在此基础上,对未标记数据进行预测。 3. 常见算法如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)等。 -**弱监督学习**: +### 2.2.4 弱监督学习 + 1. 弱监督学习可以看做是有多个标记的数据集合,次集合可以是空集,单个元素,或包含多种情况(没有标记,有一个标记,和有多个标记)的多个元素。 2. 数据集的标签是不可靠的,这里的不可靠可以是标记不正确,多种标记,标记不充分,局部标记等。 3. 已知数据和其一一对应的弱标签,训练一个智能算法,将输入数据映射到一组更强的标签的过程。标签的强弱指的是标签蕴含的信息量的多少,比如相对于分割的标签来说,分类的标签就是弱标签。 @@ -57,7 +136,7 @@ ​ 在企业数据应用的场景下, 人们最常用的可能就是监督式学习和非监督式学习的模型。 在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据, 目前半监督式学习是一个很热的话题。 -## 2.4 监督学习有哪些步骤 +### 2.2.5 监督学习有哪些步骤 ​ 监督学习是使用已知正确答案的示例来训练网络,每组训练数据有一个明确的标识或结果。想象一下,我们可以训练一个网络,让其从照片库中(其中包含气球的照片)识别出气球的照片。以下就是我们在这个假设场景中所要采取的步骤。 **步骤1:数据集的创建和分类** @@ -82,36 +161,6 @@ **步骤7:测试及应用** ​ 当有了一个准确的模型,就可以将该模型部署到你的应用程序中。你可以将预测功能发布为API(Application Programming Interface, 应用程序编程接口)调用,并且你可以从软件中调用该API,从而进行推理并给出相应的结果。 -## 2.5 多实例学习? -​ 多实例学习(Multiple Instance Learning, MIL) :已知包含多个数据的数据包和数据包的标签,训练智能算法,将数据包映射到标签的过程,在有的问题中也同时给出包内每个数据的标签。 -​ 比如说一段视频由很多张图组成,假如10000张,那么我们要判断视频里是否包含某一物体,比如气球。单张标注每一帧是否有气球太耗时,通常人们看一遍说这个视频里是否有气球,就得到了多示例学习的数据。10000帧的数据不是每一个都有气球出现,只要有一帧有气球,那么我们就认为这个数据包是有气球的。只有当所有的视频帧都没有气球,才是没有气球的。从这里面学习哪一段视频(10000张)是否有气球出现就是多实例学习的问题。 - -## 2.6 什么是神经网络? -​ 神经网络就是按照一定规则将多个神经元连接起来的网络。不同的神经网络,具有不同的连接规则。 -例如全连接(Full Connected, FC)神经网络,它的规则包括: - -1. 有三种层:输入层,输出层,隐藏层。 -2. 同一层的神经元之间没有连接。 -3. fully connected的含义:第 N 层的每个神经元和第 N-1 层的所有神经元相连,第 N-1 层神经元的输出就是第 N 层神经元的输入。 -4. 每个连接都有一个权值。 - - **神经网络架构** - ​ 图2-2就是一个神经网络系统,它由很多层组成。输入层负责接收信息,比如一只猫的图片。输出层是计算机对这个输入信息的判断结果,它是不是猫。隐藏层就是对输入信息的传递和加工处理。 - ![图2-2 神经网络系统](./img/ch2/2.5.1.png) - -## 2.7 理解局部最优与全局最优 - -​ 笑谈局部最优和全局最优 - -> ​ 柏拉图有一天问老师苏格拉底什么是爱情?苏格拉底叫他到麦田走一次,摘一颗最大的麦穗回来,不许回头,只可摘一次。柏拉图空着手出来了,他的理由是,看见不错的,却不知道是不是最好的,一次次侥幸,走到尽头时,才发现还不如前面的,于是放弃。苏格拉底告诉他:“这就是爱情。”这故事让我们明白了一个道理,因为生命的一些不确定性,所以全局最优解是很难寻找到的,或者说根本就不存在,我们应该设置一些限定条件,然后在这个范围内寻找最优解,也就是局部最优解——有所斩获总比空手而归强,哪怕这种斩获只是一次有趣的经历。 -> ​ 柏拉图有一天又问什么是婚姻?苏格拉底叫他到树林走一次,选一棵最好的树做圣诞树,也是不许回头,只许选一次。这次他一身疲惫地拖了一棵看起来直挺、翠绿,却有点稀疏的杉树回来,他的理由是,有了上回的教训,好不容易看见一棵看似不错的,又发现时间、体力已经快不够用了,也不管是不是最好的,就拿回来了。苏格拉底告诉他:“这就是婚姻。” - -​ 优化问题一般分为局部最优和全局最优。 - -1. 局部最优,就是在函数值空间的一个有限区域内寻找最小值;而全局最优,是在函数值空间整个区域寻找最小值问题。 -2. 函数局部最小点是它的函数值小于或等于附近点的点。但是有可能大于较远距离的点。 -3. 全局最小点是那种它的函数值小于或等于所有的可行点。 - ## 2.8 分类算法 ​ 分类算法和回归算法是对真实世界不同建模的方法。分类模型是认为模型的输出是离散的,例如大自然的生物被划分为不同的种类,是离散的。回归模型的输出是连续的,例如人的身高变化过程是一个连续过程,而不是离散的。 @@ -134,7 +183,7 @@ -### 2.8.2 分类算法的评估方法? +### 2.8.2 分类算法的评估方法 ​ 分类评估方法主要功能是用来评估分类算法的好坏,而评估一个分类器算法的好坏又包括许多项指标。了解各种评估方法,在实际应用中选择正确的评估方法是十分重要的。 - **几个常用术语** ​ 这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negative)分别是: @@ -195,13 +244,13 @@ ​ PR曲线是Precision Recall Curve的简称,描述的是precision和recall之间的关系,以recall为横坐标,precision为纵坐标绘制的曲线。该曲线的所对应的面积AUC实际上是目标检测中常用的评价指标平均精度(Average Precision, AP)。AP越高,说明模型性能越好。 -### 2.8.3 正确率能很好的评估分类算法吗? +### 2.8.3 正确率能很好的评估分类算法吗 ​ 不同算法有不同特点,在不同数据集上有不同的表现效果,根据特定的任务选择不同的算法。如何评价分类算法的好坏,要做具体任务具体分析。对于决策树,主要用正确率去评估,但是其他算法,只用正确率能很好的评估吗? ​ 答案是否定的。 ​ 正确率确实是一个很直观很好的评价指标,但是有时候正确率高并不能完全代表一个算法就好。比如对某个地区进行地震预测,地震分类属性分为0:不发生地震、1发生地震。我们都知道,不发生的概率是极大的,对于分类器而言,如果分类器不加思考,对每一个测试样例的类别都划分为0,达到99%的正确率,但是,问题来了,如果真的发生地震时,这个分类器毫无察觉,那带来的后果将是巨大的。很显然,99%正确率的分类器并不是我们想要的。出现这种现象的原因主要是数据分布不均衡,类别为1的数据太少,错分了类别1但达到了很高的正确率缺忽视了研究者本身最为关注的情况。 -### 2.8.4 什么样的分类器是最好的? +### 2.8.4 什么样的分类器是最好的 ​ 对某一个任务,某个具体的分类器不可能同时满足或提高所有上面介绍的指标。 ​ 如果一个分类器能正确分对所有的实例,那么各项指标都已经达到最优,但这样的分类器往往不存在。比如之前说的地震预测,既然不能百分百预测地震的发生,但实际情况中能容忍一定程度的误报。假设在1000次预测中,共有5次预测发生了地震,真实情况中有一次发生了地震,其他4次则为误报。正确率由原来的999/1000=99.9下降为996/1000=99.6。召回率由0/1=0%上升为1/1=100%。对此解释为,虽然预测失误了4次,但真的地震发生前,分类器能预测对,没有错过,这样的分类器实际意义更为重大,正是我们想要的。在这种情况下,在一定正确率前提下,要求分类器的召回率尽量高。 @@ -225,13 +274,13 @@ 4. 仅能用于线性问题。只有当目标和特征是线性关系时,才能用逻辑回归。在应用逻辑回归时注意两点:一是当知道模型是非线性时,不适用逻辑回归;二是当使用逻辑回归时,应注意选择和目标为线性关系的特征。 5. 各特征之间不需要满足条件独立假设,但各个特征的贡献独立计算。 -### 2.9.3 逻辑回归与朴素贝叶斯有什么区别? +### 2.9.3 逻辑回归与朴素贝叶斯有什么区别 1. 逻辑回归是判别模型, 朴素贝叶斯是生成模型,所以生成和判别的所有区别它们都有。 2. 朴素贝叶斯属于贝叶斯,逻辑回归是最大似然,两种概率哲学间的区别。 3. 朴素贝叶斯需要条件独立假设。 4. 逻辑回归需要求特征参数间是线性的。 -### 2.9.4 线性回归与逻辑回归的区别? +### 2.9.4 线性回归与逻辑回归的区别 (贡献者:黄钦建-华南理工大学) @@ -272,7 +321,7 @@ ## 2.10 代价函数 -### 2.10.1 为什么需要代价函数? +### 2.10.1 为什么需要代价函数 1. 为了得到训练逻辑回归模型的参数,需要一个代价函数,通过训练代价函数来得到参数。 2. 用于找到最优解的目的函数。 @@ -301,11 +350,11 @@ $$ ![](./img/ch2/2.16/2.jpg) -### 2.10.3 为什么代价函数要非负? +### 2.10.3 为什么代价函数要非负 ​ 目标函数存在一个下界,在优化过程当中,如果优化算法能够使目标函数不断减小,根据单调有界准则,这个优化算法就能证明是收敛有效的。 ​ 只要设计的目标函数有下界,基本上都可以,代价函数非负更为方便。 -### 2.10.4 常见代价函数? +### 2.10.4 常见代价函数 1. **二次代价函数(quadratic cost)**: $$ @@ -373,7 +422,7 @@ $$ ## 2.11 损失函数 -### 2.11.1 什么是损失函数? +### 2.11.1 什么是损失函数 ​ 损失函数(Loss Function)又叫做误差函数,用来衡量算法的运行情况,估量模型的预测值与真实值的不一致程度,是一个非负实值函数,通常使用$ L(Y, f(x))​$来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。 @@ -465,7 +514,7 @@ $$ 其中$l(wx_i+by_i)$是Hinge损失函数,$\Vert w\Vert ^2$可看做为正则化项。 -### 2.11.3 逻辑回归为什么使用对数损失函数? +### 2.11.3 逻辑回归为什么使用对数损失函数 假设逻辑回归模型 $$ P(y=1|x;\theta)=\frac{1}{1+e^{-\theta^{T}x}} @@ -498,7 +547,7 @@ cost(y,p(y|x)) = -\sum_{i=1}^m[y_i\ln p(y_i|x_i)+(1-y_i)\ln(1-p(y_i|x_i))] $$ 由此可看出,对数损失函数与极大似然估计的对数似然函数本质上是相同的。所以逻辑回归直接采用对数损失函数。 -### 2.11.4 对数损失函数是如何度量损失的? +### 2.11.4 对数损失函数是如何度量损失的 ​ 例如,在高斯分布中,我们需要确定均值和标准差。 ​ 如何确定这两个参数?最大似然估计是比较常用的方法。最大似然的目标是找到一些参数值,这些参数值对应的分布可以最大化观测到数据的概率。 ​ 因为需要计算观测到所有数据的全概率,即所有观测到的数据点的联合概率。现考虑如下简化情况: @@ -550,14 +599,14 @@ $$ ## 2.12 梯度下降 -### 2.12.1 机器学习中为什么需要梯度下降? +### 2.12.1 机器学习中为什么需要梯度下降 1. 梯度下降是迭代法的一种,可以用于求解最小二乘问题。 2. 在求解机器学习算法的模型参数,即无约束优化问题时,主要有梯度下降法(Gradient Descent)和最小二乘法。 3. 在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。 4. 如果我们需要求解损失函数的最大值,可通过梯度上升法来迭代。梯度下降法和梯度上升法可相互转换。 5. 在机器学习中,梯度下降法主要有随机梯度下降法和批量梯度下降法。 -### 2.12.2 梯度下降法缺点? +### 2.12.2 梯度下降法缺点 1. 靠近极小值时收敛速度减慢。 2. 直线搜索时可能会产生一些问题。 3. 可能会“之字形”地下降。 @@ -567,7 +616,7 @@ $$ 2. 梯度的方向是最大方向导数的方向。 3. 梯度的值是最大方向导数的值。 -### 2.12.3 梯度下降法直观理解? +### 2.12.3 梯度下降法直观理解 梯度下降法经典图示: ![](./img/ch2/2.25/1.png) @@ -626,7 +675,7 @@ $$ ​ 5)令上式$x^{(j)}_0=1$,更新完毕后转入1)。 ​ 由此,可看出,当前位置的梯度方向由所有样本决定,上式中 $\frac{1}{m}​$、$\alpha \frac{1}{m}​$ 的目的是为了便于理解。 -### 2.12.5 如何对梯度下降法进行调优? +### 2.12.5 如何对梯度下降法进行调优 实际使用梯度下降法时,各项参数指标不能一步就达到理想状态,对梯度下降法调优主要体现在以下几个方面: 1. **算法迭代步长$\alpha$选择。** 在算法参数初始化时,有时根据经验将步长初始化为1。实际取值取决于数据样本。可以从大到小,多取一些值,分别运行算法看迭代效果,如果损失函数在变小,则取值有效。如果取值无效,说明要增大步长。但步长太大,有时会导致迭代速度过快,错过最优解。步长太小,迭代速度慢,算法运行时间长。 @@ -635,7 +684,7 @@ $$ 3. **标准化处理。** 由于样本不同,特征取值范围也不同,导致迭代速度慢。为了减少特征取值的影响,可对特征数据标准化,使新期望为0,新方差为1,可节省算法运行时间。 -### 2.12.6 随机梯度和批量梯度区别? +### 2.12.6 随机梯度和批量梯度区别 ​ 随机梯度下降(SDG)和批量梯度下降(BDG)是两种主要梯度下降法,其目的是增加某些限制来加速运算求解。 下面通过介绍两种梯度下降法的求解思路,对其进行比较。 假设函数为: @@ -714,29 +763,6 @@ BGD、SGD、Mini-batch GD,前面均已讨论过,这里介绍一下Online GD ​ Online GD在互联网领域用的较多,比如搜索广告的点击率(CTR)预估模型,网民的点击行为会随着时间改变。用普通的BGD算法(每天更新一次)一方面耗时较长(需要对所有历史数据重新训练);另一方面,无法及时反馈用户的点击行为迁移。而Online GD算法可以实时的依据网民的点击行为进行迁移。 -## 2.13 计算图的导数计算? -​ 计算图导数计算是反向传播,利用链式法则和隐式函数求导。 - -​ 假设 $z = f(u,v)$ 在点 $(u,v)$ 处偏导连续,$(u,v)$是关于 $t$ 的函数,在 $t$ 点可导,求 $z$ 在 $t$ 点的导数。 - -根据链式法则有 -$$ -\frac{dz}{dt}=\frac{\partial z}{\partial u}.\frac{du}{dt}+\frac{\partial z}{\partial v} - .\frac{dv}{dt} -$$ - -​ 链式法则用文字描述:“由两个函数凑起来的复合函数,其导数等于里边函数代入外边函数的值之导数,乘以里边函数的导数。 -​ 为了便于理解,下面举例说明: - -$$ -f(x)=x^2,g(x)=2x+1 -$$ - -​ 则: -$$ -{f[g(x)]}'=2[g(x)] \times g'(x)=2[2x+1] \times 2=8x+4 -$$ - ## 2.14 线性判别分析(LDA) @@ -766,7 +792,7 @@ LDA分类思想简单总结如下: ​ 以上例子是基于数据是二维的,分类后的投影是一条直线。如果原始数据是多维的,则投影后的分类面是一低维的超平面。 -### 2.14.3 二类LDA算法原理? +### 2.14.3 二类LDA算法原理 ​ 输入:数据集 $D=\{(\boldsymbol x_1,\boldsymbol y_1),(\boldsymbol x_2,\boldsymbol y_2),...,(\boldsymbol x_m,\boldsymbol y_m)\}​$,其中样本 $\boldsymbol x_i ​$ 是n维向量,$\boldsymbol y_i \epsilon \{0, 1\}​$,降维后的目标维度 $d​$。定义 ​ $N_j(j=0,1)$ 为第 $j$ 类样本个数; @@ -802,7 +828,7 @@ $$ $$ ​ 根据广义瑞利商的性质,矩阵 $S^{-1}_{w} S_b$ 的最大特征值为 $J(\boldsymbol w)$ 的最大值,矩阵 $S^{-1}_{w} S_b$ 的最大特征值对应的特征向量即为 $\boldsymbol w$。 -### 2.14.4 LDA算法流程总结? +### 2.14.4 LDA算法流程总结 LDA算法降维流程如下: ​ 输入:数据集 $D = \{ (x_1,y_1),(x_2,y_2), ... ,(x_m,y_m) \}$,其中样本 $x_i $ 是n维向量,$y_i \epsilon \{C_1, C_2, ..., C_k\}$,降维后的目标维度 $d$ 。 @@ -818,7 +844,7 @@ LDA算法降维流程如下: 6. 转化样本集的每个样本,得到新样本 $P_i = W^Tx_i​$ 。 7. 输出新样本集 $\overline{D} = \{ (p_1,y_1),(p_2,y_2),...,(p_m,y_m) \}​$ -### 2.14.5 LDA和PCA区别? +### 2.14.5 LDA和PCA区别 |异同点|LDA|PCA| |:-:|:-|:-| @@ -829,7 +855,7 @@ LDA算法降维流程如下: ||选择分类性能最好的投影方向;|选择样本点投影具有最大方差的方向;| ||更明确,更能反映样本间差异;|目的较为模糊;| -### 2.14.6 LDA优缺点? +### 2.14.6 LDA优缺点 |优缺点|简要说明| |:-:|:-| @@ -939,7 +965,7 @@ $$ 5. 去除数据噪声。 6. 降低算法运算开销。 -### 2.15.7 KPCA与PCA的区别? +### 2.15.7 KPCA与PCA的区别 ​ 应用PCA算法前提是假设存在一个线性超平面,进而投影。那如果数据不是线性的呢?该怎么办?这时候就需要KPCA,数据集从 $n$ 维映射到线性可分的高维 $N >n$,然后再从 $N$ 维降维到一个低维度 $n'(n'0,c<0$ | -### 2.18.9 SVM主要特点? +### 2.18.9 SVM主要特点 特点: @@ -1623,7 +1649,7 @@ $$ (9) SVM在小样本训练集上能够得到比其它算法好很多的结果。SVM优化目标是结构化风险最小,而不是经验风险最小,避免了过拟合问题,通过margin的概念,得到对数据分布的结构化描述,减低了对数据规模和数据分布的要求,有优秀的泛化能力。 (10) 它是一个凸优化问题,因此局部最优解一定是全局最优解的优点。 -### 2.18.10 SVM主要缺点? +### 2.18.10 SVM主要缺点 (1) SVM算法对大规模训练样本难以实施 ​ SVM的空间消耗主要是存储训练样本和核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。 @@ -1985,7 +2011,7 @@ $$ ## 2.21 降维和聚类 -### 2.21.1 图解为什么会产生“维数灾难”? +### 2.21.1 图解为什么会产生维数灾难 ​ 假如数据集包含10张照片,照片中包含三角形和圆两种形状。现在来设计一个分类器进行训练,让这个分类器对其他的照片进行正确分类(假设三角形和圆的总数是无限大),简单的,我们用一个特征进行分类: @@ -2059,7 +2085,7 @@ $$ Lassio缩减系数法、小波分析法、 -### 2.21.3 聚类和降维有什么区别与联系? +### 2.21.3 聚类和降维有什么区别与联系 ​ 聚类用于找寻数据内在的分布结构,既可以作为一个单独的过程,比如异常检测等等。也可作为分类等其他学习任务的前驱过程。聚类是标准的无监督学习。 @@ -2083,7 +2109,7 @@ Lassio缩减系数法、小波分析法、 ​ 3、算法的数据输入属性:算法处理的结果与数据输入的顺序是否相关,也就是说算法是否独立于数据输入顺序;算法处理有很多属性数据的能力,也就是对数据维数是否敏感,对数据的类型有无要求。 -### 2.21.5 聚类和分类有什么区别? +### 2.21.5 聚类和分类有什么区别 **聚类(Clustering) ** 聚类,简单地说就是把相似的东西分到一组,聚类的时候,我们并不关心某一类是什么,我们需要实现的目标只是把相似的东西聚到一起。一个聚类算法通常只需要知道如何计算相似度就可以开始工作了,因此聚类通常并不需要使用训练数据进行学习,在机器学习中属于无监督学习。 @@ -2205,76 +2231,6 @@ $$ (2) 运行时间:即聚类整个过程所耗费的时间,单位为s; (3) 平均准确度:设原数据集有k个类,用$c_i$表示第i类,$n_i$为$c_i$中样本的个数,$m_i$为聚类正确的个数,则$m_i/n_i$为 第i类中的精度,则平均精度为:$avg=\frac{1}{k}\sum_{i=1}^{k}\frac{m_{i}}{n_{i}}$。 -## 2.22 GBDT和随机森林的区别 - -GBDT和随机森林的相同点: -1、都是由多棵树组成 -2、最终的结果都是由多棵树一起决定 - -GBDT和随机森林的不同点: -1、组成随机森林的树可以是分类树,也可以是回归树;而GBDT只由回归树组成 -2、组成随机森林的树可以并行生成;而GBDT只能是串行生成 -3、对于最终的输出结果而言,随机森林采用多数投票等;而GBDT则是将所有结果累加起来,或者加权累加起来 -4、随机森林对异常值不敏感,GBDT对异常值非常敏感 -5、随机森林对训练集一视同仁,GBDT是基于权值的弱分类器的集成 -6、随机森林是通过减少模型方差提高性能,GBDT是通过减少模型偏差提高性能 - -## 2.23 理解 One Hot Encodeing 原理及作用? - -问题由来: - -​ 在很多**机器学习**任务中,特征并不总是连续值,而有可能是分类值。 - -例如,考虑一下的三个特征: - -``` -["male", "female"] ["from Europe", "from US", "from Asia"] -["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"] -``` - -如果将上述特征用数字表示,效率会高很多。例如: - -``` -["male", "from US", "uses Internet Explorer"] 表示为 [0, 1, 3] -["female", "from Asia", "uses Chrome"] 表示为 [1, 2, 1] -``` - -​ 但是,即使转化为数字表示后,上述数据也不能直接用在我们的分类器中。因为,分类器往往默认数据数据是连续的(可以计算距离?),并且是有序的(而上面这个 0 并不是说比 1 要高级)。但是,按照我们上述的表示,数字并不是有序的,而是随机分配的。 - -**独热编码** - -​ 为了解决上述问题,其中一种可能的解决方法是采用独热编码(One-Hot Encoding)。独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对 N 个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。 - -例如: - -``` -自然状态码为:000,001,010,011,100,101 -独热编码为:000001,000010,000100,001000,010000,100000 -``` - -​ 可以这样理解,对于每一个特征,如果它有 m 个可能值,那么经过独热编码后,就变成了 m 个二元特征(如成绩这个特征有好,中,差变成 one-hot 就是 100, 010, 001)。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。 - -这样做的好处主要有: - -1. 解决了分类器不好处理属性数据的问题; -2. 在一定程度上也起到了扩充特征的作用。 - -## 2.24 大数据与深度学习之间的关系 - -**大数据**通常被定义为“超出常用软件工具捕获,管理和处理能力”的数据集。 -**机器学习**关心的问题是如何构建计算机程序使用经验自动改进。 -**数据挖掘**是从数据中提取模式的特定算法的应用。 -在数据挖掘中,重点在于算法的应用,而不是算法本身。 - -**机器学习和数据挖掘**之间的关系如下: -数据挖掘是一个过程,在此过程中机器学习算法被用作提取数据集中的潜在有价值模式的工具。 -大数据与深度学习关系总结如下: - -1. 深度学习是一种模拟大脑的行为。可以从所学习对象的机制以及行为等等很多相关联的方面进行学习,模仿类型行为以及思维。 -2. 深度学习对于大数据的发展有帮助。深度学习对于大数据技术开发的每一个阶段均有帮助,不管是数据的分析还是挖掘还是建模,只有深度学习,这些工作才会有可能一一得到实现。 -3. 深度学习转变了解决问题的思维。很多时候发现问题到解决问题,走一步看一步不是一个主要的解决问题的方式了,在深度学习的基础上,要求我们从开始到最后都要基于一个目标,为了需要优化的那个最终目标去进行处理数据以及将数据放入到数据应用平台上去,这就是端到端(End to End)。 -4. 大数据的深度学习需要一个框架。在大数据方面的深度学习都是从基础的角度出发的,深度学习需要一个框架或者一个系统。总而言之,将你的大数据通过深度分析变为现实,这就是深度学习和大数据的最直接关系。 -