【李宏毅机器学习笔记】1、回归问题(Regression)
【李宏毅机器学习笔记】2、error产生自哪里?
【李宏毅机器学习笔记】3、gradient descent
【李宏毅机器学习笔记】4、Classification
【李宏毅机器学习笔记】5、Logistic Regression
【李宏毅机器学习笔记】6、简短介绍Deep Learning
【李宏毅机器学习笔记】7、反向传播(Backpropagation)
【李宏毅机器学习笔记】8、Tips for Training DNN
【李宏毅机器学习笔记】9、Convolutional Neural Network(CNN)
【李宏毅机器学习笔记】10、Why deep?(待填坑)
【李宏毅机器学习笔记】11、 Semi-supervised
【李宏毅机器学习笔记】 12、Unsupervised Learning - Linear Methods
【李宏毅机器学习笔记】 13、Unsupervised Learning - Word Embedding(待填坑)
【李宏毅机器学习笔记】 14、Unsupervised Learning - Neighbor Embedding(待填坑)
【李宏毅机器学习笔记】 15、Unsupervised Learning - Auto-encoder(待填坑)
【李宏毅机器学习笔记】 16、Unsupervised Learning - Deep Generative Model(待填坑)
【李宏毅机器学习笔记】 17、迁移学习(Transfer Learning)
【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)
【李宏毅机器学习笔记】 19、Structured Learning - Introduction(待填坑)
【李宏毅机器学习笔记】 20、Structured Learning - Linear Model(待填坑)
【李宏毅机器学习笔记】 21、Structured Learning - Structured SVM(待填坑)
【李宏毅机器学习笔记】 22、Structured Learning - Sequence Labeling(待填坑)
【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)
【李宏毅机器学习笔记】 24、集成学习(Ensemble)
------------------------------------------------------------------------------------------------------
【李宏毅深度强化学习】视频地址:https://www.bilibili.com/video/av10590361?p=38
课件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html
-------------------------------------------------------------------------------------------------------
Ensemble就是让几个模型(这几个模型通常各自的作用比较不同。)一起合作完成一个任务,那毋庸置疑,最后效果肯定会好过只有一个模型的。
接下来就看下有哪些方法可以使几个模型Ensemble。
上图是第二篇笔记说过的:
上图是假设在不同的世界预测神奇宝贝的CP值。
使用复杂的model,最后预测结果的variance比较大。但是可以把不同模型的输出做平均,得到新的模型的输出。这时的预测值就会和实际值比较接近。
Bagging做的事情就和这个类似。
model容易发生过拟合的情况下,就可以使用Bagging。比如下面的决策树(Decision Tree)就容易发生过拟合。
假设 x 有两个维度,以这两个维度来判断 x 属于哪一类。
这棵树和图像如上图,很容易看懂。
在训练的时候要调整的有:
下面是一个分类初音的例子。
红色区域是class 1,蓝色区域是class 2 。
下面看不同深度的决策树的分类效果。
可以看到,随着决策树深度的加深,分类效果越来越好。
事实上,只要决策树一直加深下去,没有它分类不了的结果1(即 0% 的error)。
但是注意,这里说的 0% 的error是在training data的结果,所以决策树是比较容易过拟合的方法。
所以,需要用上刚才说的Bagging,来缓解过拟合。
Bagging+决策树 = Random Forest。
上图是决策树和随机森林的结果对比。
随机森林由于有做平均,所以它的结果会比较平滑(即比较有泛化性)。
上面的Bagging方法是应用在太强的model上,防止它发生过拟合。
而Boosting则是应用在太弱的model上,使它的拟合能力更强。
它的框架是这样:
最后将这些分类器合起来,就形成一个很强的分类器。
注意:这个过程一定要按顺序做下去,要先找到,再找…… 不能平行地训练模型。
既然要训练不同的分类器,就需要用不同的training data。
既然要使 和 两个分类器互补,那就要找到一个新的data set, 在这个data set上分类效果很差。然后以这个新的data set去训练 ,就能起到两个分类器互补的结果。
实验中可以这样实现:
下面是具体的例子。
接下来看下怎么重新给data设置weight。
Re-weighting Training Data
接下来看下怎么确定 的值。
上面2图就是推导过程,没有涉及复杂的数学,如果需要详细的讲解可以看下视频。
上图就是AdaBoost的算法示意图。
由于这里的问题是二分类(结果为+1或-1),所以红框中的内容可以简写为 。
现在我们有了很多的分类器,如何把它们合起来呢?
如上图,有两种方法。
下面举个例子,可以看看AdaBoost的威力。
这里用的分类器是decision stump,一个很弱的模型,不认识它没事,反正就知道它只是切一刀就行。
同上。
同上。
现在训练出三个模型了,也有它们各自的权重了,来进行最后的分类了。
由于有三条线,把空间切成6块。以右上角那一块为例子。
其他区域的分类过程也同理。