学习资料:吴恩达机器学习课程
K-均值的一个问题在于,它有可能会停留在一个局部最小值处,而这取决于初始化的情况。
解决方法:通常需要多次运行(50-1000次)K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行K-均值的结果,选择代价函数最小的结果。
初始化时随机选择训练样本作为聚类中心
这种方法在较小的时候\(K\)较小时(2-10)还是可行的,但是\(K\)如果较大,就没有必要多次随机初始化了。
首先进行数据预处理,均值标准化
n维度\(X^{[i]}\) 降到k维度$Z^{[i]} $,PCA算法找到k维度:能够最小化投影距离的平方
SVD 奇异值分解
压缩后的维度K重新变回之前的维度n
之前是 \(Z = U_{reduce} ^T*X\) 矩阵维度分析: kn * n1 = k*1
现在可以用 \(X = U_{reduce}*Z\) 变回之前的维度 矩阵维度分析: nk * k1 = n*1
使得平均最小投影距离/平均距离原点的距离<=0.01,即保留99%方差,降维后的数据更接近原数据。
仅仅通过SVD中的S就可以得到k的最优值
参数估计:一些参数分布满足高斯分布的时候,可以求出这些参数的平均值和方差用来表示这些参数的分布情况
异常检测大多用于非监督学习。因为无监督学习中特征没有label,所以可以根据这些特征的分布情况来建立一个模型,当有新的样本进来时检测样本的这些特征是否符合模型,不符合则代表异常
异常检测也可以用于监督学习。这时候异常检测与监督学习算法类似,异常样本有对应的label=0,正常样本对应的label=1。两种算法都是建立模型来区分异常和正常样本。
两种算法的应用情况:
对于一个样本(无论正常还是异常),有许多特征可以选择来判断是否一个样本是异常。例如:对于电脑是否损坏,有大量正常电脑和很少的异常电脑样本。我们可以选择的特征有CPU load,network traffc等。如下图:
那么如何选择合适的特征:
x个特征的高斯分布直接累积有个缺点是不能反映2个特征之间相互关系的影响。
多元高斯分布降特征合在一起建立一个高斯分布模型
原始高斯分布和多元高斯分布最大的区别是是否捕捉相关性的特征
两种分布在可视化图中的区别是:原始高斯分布得到的椭圆是轴对齐的(轴与x轴或y轴平行),而多元高斯分布椭圆轴可以是任意方向。所以原始高斯分布是多元的一种特殊情况。
多元高斯分布优点:可以自动寻找特征间的关系,其实原始高斯分布中手动设计特征就是在找特征之间的关系
多元高斯分布缺点:需要训练样本远大于特征值,而且计算要求更高。反之原始高斯分布不需要
原文:https://www.cnblogs.com/z1xiang/p/12675650.html