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

目录

前言

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

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

相关推荐
IT猿手2 分钟前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解TP1-TP10及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·深度学习·算法·机器学习·matlab·多目标算法
thesky1234567 分钟前
活着就好20241224
学习·算法
蜗牛hb15 分钟前
VMware Workstation虚拟机网络模式
开发语言·学习·php
咸鱼桨19 分钟前
《庐山派从入门到...》PWM板载蜂鸣器
人工智能·windows·python·k230·庐山派
强哥之神30 分钟前
Nexa AI发布OmniAudio-2.6B:一款快速的音频语言模型,专为边缘部署设计
人工智能·深度学习·机器学习·语言模型·自然语言处理·音视频·openai
汤姆和杰瑞在瑞士吃糯米粑粑30 分钟前
【C++学习篇】AVL树
开发语言·c++·学习
yusaisai大鱼34 分钟前
tensorflow_probability与tensorflow版本依赖关系
人工智能·python·tensorflow
18号房客34 分钟前
一个简单的深度学习模型例程,使用Keras(基于TensorFlow)构建一个卷积神经网络(CNN)来分类MNIST手写数字数据集。
人工智能·深度学习·机器学习·生成对抗网络·语言模型·自然语言处理·tensorflow
神秘的土鸡42 分钟前
神经网络图像隐写术:用AI隐藏信息的艺术
人工智能·深度学习·神经网络
虾球xz42 分钟前
游戏引擎学习第58天
学习·游戏引擎