一、聚类学习(Clustering)
有监督学习:给定一个含有原始数据x和标签y的数据集进行训练
无监督学习,只有输入x的数据集,没有标签或者目标标签y。
聚类学习会将数据集分组成簇(clusters),一组彼此相似的点
K-均值聚类算法(K-Means)
30个未标记的数据集,KMeans算法首先要估计两个簇的中心位置我,随机在图中画出:
算法分为两步:第一步确定簇的质心,遍历所有样本,30个数据点,算法会判断数据点更接近于哪一个簇的中心点,并且自动分配;第二步,对于红点,所有的红点然后取平均值,将红叉移动到红点的平均位置,蓝色同理。
第一次移到中心点后,发现在蓝色(红色)区域某些点到预先规定的质心处的距离并不是最近,需要在进行KMeans计算
经过第二次计算后,得到:
继续重复:
当点的颜色和质心位置不变时,算法收敛。
算法实现:(1)随机指定k个质心,n1,n2,n3,,,,,,,,nk.
(2)计算簇中点的中心位置
如果随机分配质心时,有n个质心没有被分配到簇中,通常采用消除簇的做法,k=k-n,或者也可以重新随机分配,但最常用的还是第一种
对于连续的点,也可以使用K-Means算法
与有监督学习相同,无监督学习中的K-Means算法其实也是一个不断优化函数的过程。
C(i)代表簇的索引,nk表示质心,x为训练样本
K-Means算法随机猜测簇质心位置:
(1)选取的质心位置不能太多,K<M(k=2,m=30)
(2)随机挑选训练样本
(3) 选择质心后,通过得到的代价函数来判断使用哪一种
使用簇的数量:
1.肘部法则:将代价函数视为簇数量的函数,看看是否有弯曲
2. 通过划分的簇数量,判断数量与成本之间的关系来做出衡量
异常检测(Anomaly Detection)
异常检测算法通过观察正常事件的未标记数据集,从而学会检测异常或者在异常事件发生时能够发出危险信号
常见的异常检测方法为密度估计的技术,首先为样本x找到一个高概率事件和在数据集中不太可能遇到(概率小)的值。
正态分布(高斯)
异常检测算法: