【2022吴恩达机器学习】聚类和异常检测

机器学习(聚类和异常检测)


无监督学习--聚类

监督学习中,数据集包括输入x和目标输出y

无监督学习中,得到一个只有输入x的数据集,但没有目标标签y

K-means聚类


假设黄点是数据,我们需要把黄点用k-means分为两类。

第一步是(将点分配给簇质心)随机设置中心位置,然后遍历所有的样本,把每一个黄点分配给最近的中心。红叉和蓝叉就是我们设置的两个中心。

第二步是(移动簇质心)遍历所有的红点,然后对他们取平均值,并将红叉移动到红点所在的平均位置。蓝点同理。

重复这两步,直到中心的位置不再变化。这个时候的颜色就是最终的结果。

k-means算法


随机初始化k个簇质心,u1,u2,...,uk

在我们的例子中,k=2,红叉为u1,蓝叉为u2,u1,u2两个向量与我们示例中的训练样本x1到x30有相同的维度

然后k-means将重复以上两个步骤

第一步:将点分配给簇质心

为i=1到m,共m个训练样本,设置ci为索引,它可以是最接近训练样本xi的簇质心的从1到k的任何值,可以写成计算xi和uk之间的距离,也被称为L2范数。对于这个式子,想找到最小化这个式子的k值,然后将ci赋值为k。(平方距离更适合最小化)

第二步:移动簇质心

xi为n维向量

uk为分配给该聚类k的点的平均值对应的簇质心位置

优化目标


ci是簇的索引,是目前训练样本xi所在簇的索引(1-k)

uk是簇质心的位置

k=ci时,uci是样本xi分配到的簇的簇质心

k-means的损失函数就是计算数据和中心的平均距离

计算距离的平方,然后所有红点和蓝点的差异的平方的平均值就是损失函数J的值

假设只有两个点,中心的位置是第一个x,那么可以看出,中心在偏左的位置。计算x与两个点的平均距离为41,而我们移动中心到6的位置再计算时,得到损失函数值为25,比41小。

初始化k-means


如何猜测u1-uk以找到更好的簇

如果运行三次k-means得到这三个不同的簇,要计算损失函数J,选择J最低的。

异常检测


检测异常的做法是密度估计,通过正常的数据分布,来估计每个数据出现的频率,然后把低于一定概率的数据分类为异常数据。

如图,在估计了热量和振幅的分布之后我们可以划出概率等高线,绿叉明显处于数据外圈,所以为异常数据

异常检测算法


异常检测实际上就是所有特征量的联合概率,即所有的概率相乘。例子:有温度和振幅两个特征量,有一个数据,温度出现的概率是1/10,振幅出现的概率是1/20,所以这个数据是正常的概率是1/200。

具体来说,数据中有两个特征量,假设两个特征量都是正态分布。在算出两个特征量的平均和方差之后,我们可以知道两个特征量的分布。然后把两个特征量分别作为x轴和y轴,把数据出现的概率作为z轴,可以得到左下角的密度分布图。即第一个数据在中心位置,所以是正常数据,第二个数据在边缘位置,说明它出现的概率很低,是异常数据。

异常数据集:监督学习需要用大量的数据来学习异常的模式,如果异常数据少,用异常检测的方法较好。

异常出现的模式:如果每一次异常出现的原因都不一样,那么用异常检测比较好。因为监督学习只能预测之前见过的模式。如果数据足够多,用监督学习还是可以找到规律的。

选择合适的特征量


根据原理来说,异常例子的发生概率应该很小,但有一些异常例子的概率很高,如图,这说明特征量设计的不好,没有照顾到所有的例子。再找一个相关的特征量x2,算法可以拟合高斯分布,该分布将高概率分配给该区域中的点,区域向外扩张逐渐降低,可以发现x2的值非常反常。

例子:检测欺诈行为,x1是他们进行交易数量,发现这个用户打字速度非常快,如果要添加一个新特征x2,就是用户打字速度。算法更容易识别x2是异常用户。

总结:先训练模型,然后查看算法在交叉验证集中没能检测出的异常,查看这些样本,考虑是否需要新建一个特征,从而使算法能够发现这些异常。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值