1. K-Means
1.1 核函数的另一种观点
之前我们提到过高斯核函数:
其实根据高斯函数的形状,我们可以将其视为:对
那么这样再来看SVM的话:
高斯核函数又叫Radial Basis Function (RBF) kernel,
上述这种形式的函数称为RBF network。
RBF network中有组参数需要确定:centers
1.2 Full RBF Network
cnters的个数等于训练集数据的个数;而且每个
1.2.1 K近邻算法
令
1.2.2 Full RBF网络的含义
如果仅仅令
如果Z可逆,那么必然有
要解决Full RBF的过拟合问题,也可以减小centers的个数,譬如SVM。
1.3 K-Means 算法
1.3.1 K-Means算法原理
K-Means算法的主要作用是聚类分析。给定一组数据,我们能把它们如何分组?
那么如何分组呢?假设我有一组数据,要分成K个cluster,其中每一个cluster的中心点为
我们采用如下符号:
因为这里有两组变量;且
- 首先固定
c(i) ,最优化μk ; - 然后固定
μk ,最优化c(i) 。
很明显当
当
循环什么时候结束?等到
1.3.2 如何初始化
μk
首先是选择一个K——究竟分成多少个cluster合适?
很多情况下,根绝我们的目的来分类,譬如根据人的身高和体重分成衣服尺码:有多少个尺码是已经提前确定好的:
否则的话,可以根据“拐点”来判断:
画出代价函数随着k的变化图,如果存在一个“拐点K”:当
当选定了K之后,如何选定
从训练集中随机选择K个数据作为
1.4 RBF网络与K-Means的关系
之前我们提到过,减小中心点的数量,可以减小RBF网络的过拟合情况。那么如何减小中心点数量?使用K-Means算法。此处的K-Means算法的功能就像之前自动编码器的功能一样:
2. 异常检测
2.1 异常检测原理
如何检测出异常的数据?
其实Anomaly detection与 density estimation一脉相承。
我们建立一个概率模型
我们假设x的每一个维度
有了这个算法,我们如何知道它的表现良不良好?必然要使用带标签的数据对其性能进行评估:
(注意:其训练数据是无标签的)
一个自然而言产生的问题是:为什么不用监督式算法?为什么不用分类算法?
我们可以从算法的名字可见一斑:异常检测——就是这种情况出现的比较少,不足以作为一个类别。
可以看出,当异常类别的数据量比较少时;监督算法不足以学习出“什么样的输入特征下是异常情况”时,应当用异常检测算法。
2.2 上述算法的两个问题
上述算法依赖于假设:x每个输入特征维度都是高斯分布且相互独立。
2.2.1 不是高斯分布的情况
这时候我们需要对特征做一些处理:
当我们发现:算法效果不好的时候,需要使用error analysis寻找新的特征:
2.2.2 不是相互独立的时候
很明显这一假设是不合理的,这会导致如下情况:
无法准确拟合上述情况。
由此,我们引入多维高斯分布: