目录
前言
P96-P100
使用多个决策树
随机森林算法
XGBoost
什么时候使用决策树
P101-P107
聚类
K-means
初始化K-means
选择聚类的个数
P108-P113
异常检测算法
开发和评估异常检测系统
异常检测vs监督学习
选择要使用的特征
前言
这是吴恩达机器学习笔记的第六篇,第五篇笔记请见:
吴恩达机器学习全课程笔记第五篇
完整的课程链接如下:
吴恩达机器学习教程(bilibili)
推荐网站:
scikit-learn中文社区
吴恩达机器学习资料(github)
P96-P100
使用多个决策树
使用单一决策树的缺点之一是对数据中微小的变化非常敏感,一个使算法不那么敏感或更健壮的方案是建立大量的决策树
每个决策树给出一个结果、少数服从多数
放回抽样
随机森林算法
随机森林算法是一种强大的树集成算法,比使用单个的决策树工作得更好
用放回抽样生成B组数据,训练每一组数据得到B个决策树,一般来说随着B的增大,算法的性能会先提高再递减
即使是使用放回抽样,有时总是在根节点上使用相同的拆分或者和根节点非常相似的分裂
因此,对算法进行了一次修改,以进一步尝试在每个结点随机化特性选择,这会导致你学习的一组树变得更加不同,您将选择k个特性作为允许的特性,然后在这些K个特性中,选择信息增益最高的一个作为使用拆分的特性的选择,当n很大时,常见的一种选择方法是令
XGBoost
XGBoost背后的想法是看看到目前为止我们已经训练过的决策树,看看我们还没有做得很好的例子,而不是看所有的训练例子
需要注意的此算法不使用放回抽样,XGBoost实际上给不同的训练例子分配了不同的权重,所以它实际上不需要生成大量的数据集
XGBoost的低层实现非常复杂,所以大多数情况下,许多从业者要使用开源库来实现
什么时候使用决策树
下面是决策树和神经网络的对比和适用场景
P101-P107
聚类
聚类(Clustering):是指把相似的数据划分到一起,具体划分的时候并不关心这一类的标签,目标就是把相似的数据聚合到一起,聚类是一种无监督学习(Unsupervised Learning)方法
下面是聚类的一些应用:
K-means
该算法的过程:在坐标轴上随机设置两个点A、B,对于坐标轴上每个点,分别求出和A、B的距离,把距离A较近的一组点标记为a类,把距离B较近的一组点标记为b类,然后求出a类所有点的平均点(x坐标和y坐标都取平均数)替代原来的A,求出b类所有点的平均点(x坐标和y坐标都取平均数)替代原来的B,然后重复上述过程,一直用上述方法进行迭代,直到两次操作之后a类的点b类的点不会发生变化,此时就把所有的点分成了a类点和b类点两个cluster
在那些没有分离的很好的数据集上运行k-means也会取得效果
k-means算法的成本函数如下所示
可以通过移动中心来降低成本(损失)
初始化K-means
初始化聚类中心的第一种方法是随机选取样本中的点
但有的时候会陷入成本函数的局部最优解
一种方法是运行多次k-means然后计算每一种结果的成本函数,选择最小的情况
总结初始化的方法如下,注意,100可以是随意选择的,但是随着这个数的增大,有可能产生一定的负面效果
选择聚类的个数
聚类个数k的选择是具有二义性的
一种选择聚类个数的方法叫做肘法
但是在很多情况下,这个曲线没有一个明显的肘部的位置
所以,大多数情况下,还是要根据问题的实际情况选择合适的聚类个数
P108-P113
异常检测算法
下面是一个飞机引擎检测的例子
一种方法是密度预测
一种应用是用来检测骗子(机器人)
高斯分布(高中应该都学过,不多写了)
下面是异常检测算法的表达式
算法具体步骤如下:
举一个具体的例子进行说明
开发和评估异常检测系统
以飞机引擎检测为例,由于异常数据较少,一种替代方法是仅设置交叉验证集而不设置测试集
评估异常检测系统的方法如下
异常检测vs监督学习
选择要使用的特征
异常特征的选择对于异常检测算法相当重要
对于一些不满足高斯分布的特征,可以对它进行调整,是他接近高斯分布
有些情况,即使p(x)很大但其实它就是异常数据,这时候我可以去识别、添加进去一些新的特征去解决这个问题
通过组合旧特征来形成新特征也是常见的,以检测计算机为例