吴恩达机器学习全课程笔记第六篇

目录

前言

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)很大但其实它就是异常数据,这时候我可以去识别、添加进去一些新的特征去解决这个问题

通过组合旧特征来形成新特征也是常见的,以检测计算机为例

相关推荐
xuanyu222 小时前
Linux常用指令
linux·运维·人工智能
静心问道2 小时前
WGAN算法
深度学习·算法·机器学习
Ylucius2 小时前
动态语言? 静态语言? ------区别何在?java,js,c,c++,python分给是静态or动态语言?
java·c语言·javascript·c++·python·学习
LvManBa2 小时前
Vue学习记录之六(组件实战及BEM框架了解)
vue.js·学习·rust
凡人的AI工具箱2 小时前
AI教你学Python 第11天 : 局部变量与全局变量
开发语言·人工智能·后端·python
LvManBa2 小时前
Vue学习记录之三(ref全家桶)
javascript·vue.js·学习
晓星航2 小时前
Docker本地部署Chatbot Ollama搭建AI聊天机器人并实现远程交互
人工智能·docker·机器人
洛寒瑜2 小时前
【读书笔记-《30天自制操作系统》-23】Day24
开发语言·汇编·笔记·操作系统·应用程序
Kenneth風车2 小时前
【机器学习(五)】分类和回归任务-AdaBoost算法-Sentosa_DSML社区版
人工智能·算法·低代码·机器学习·数据分析