您的位置  > 互联网

数据分析的术语之聚类和分类是两种技术

分类:分类实际上是从特定数据中挖掘模式并做出判断的过程。 这意味着我们已经知道了事物的类别,需要从样本中学习分类规则。 这是一种引导式学习。 例如,Gmail邮箱中有一个垃圾邮件分类器。 它一开始可能不会过滤任何东西。 在日常使用中,我会手动为每封电子邮件点击“垃圾邮件”或“非垃圾邮件”。 一段时间后,Gmail就会表现出一定程度的智能,可以自动过滤掉一些垃圾邮件。 这是因为在点击的过程中,每封邮件实际上都被赋予了一个“标签”。 该标签只有两个值,“垃圾”或“非垃圾”。 Gmail会不断研究哪些特征邮件是垃圾邮件,哪些特征不是垃圾邮件,形成一些区分模式,这样当邮件到达时,可以自动将邮件分为两个手动设置的类别:“垃圾”和“非垃圾” ”。 中的一个。

聚类:聚类的目的也是为了对数据进行分类,但是我们事先不知道如何分类。 完全由算法来判断每条数据之间的相似度,并将相似的放在一起。 在聚类的结论出来之前,我们不知道每个类别的特征是什么。 我们必须通过人类的经验来分析聚类结果,看看聚类出的类别有什么特征。

聚类分析( ):是一组统计分析技术,将研究对象划分为相对同质的组( )。 聚类分析也称为分类分析或数值分类。 聚类的输入是一组未标记的样本。 聚类根据数据本身的距离或相似性将数据分为若干组。 划分的原则是最小化组内距离,最大化组间距离(外部)。

聚类与分类的区别:分类的目标是预先已知的,而聚类则不同。 聚类事先不知道目标变量是什么,也不像分类那样预先定义类别。 也就是说,分类是监督学习,聚类是无监督学习。

本文介绍机器学习中一个经典实用的聚类算法---k-means

k-均值聚类算法

基本概念

K值:指希望将数据集分为几类。 要获取簇的数量,您需要指定 K 值。 例如,设置K=4意味着将数据集分为4类。

质心:指每个簇(类别)的中心点,即向量各个维度的平均值。 例如,数据集是二维数据。 x 轴上的所有点均取 x0 的平均值,y 轴上的所有点均取 y0 的平均值。 那么质心可以表示为(x0,y0)。

距离的度量:常用的欧氏距离和余弦相似度(需要先标准化)

数据标准化是指数据需要在同一纬度进行测量。 最常用的标准化方法有两种:

Min-max标准化(离散标准化):对原始数据进行线性变换,使结果落入[0, 1]区间。 变换方法为X'=(X-min)/(max-min),其中max是样本数据的最大值,min是样本数据的最小值。

z-score标准化(标准差标准化):处理后的数据符合标准正态分布(均值为0,方差为1),转换公式:X减去均值,然后除以标准差

优化目标:这个和我们的机器学习套路是一样的。 我们需要找到一个整体误差最小的平衡点,以最小化整体分类的欧式距离(损失值)。 簇的距离是指该簇的所有数据到该簇质心的距离。 欧氏距离之和; 总距离是指K个簇的距离之和。

我们的目标是最小化总距离。 目标函数可以用以下公式表示:

工作过程

k-means算法的工作流程可以参考下图。

阐明:

1)假设初始情况有一堆点,如图a所示。 初始状态,因为是无监督学习,数据没有标签,不知道分为多少类;

2)使用k-means算法时,需要指定k值,设置k=2(分为2类)。 k-means算法会自动随机初始化2个质心点(蓝色和红色的区别);

3)现在需要自动将数据集中剩余的点分类为红色x或蓝色x。 分类方法是遍历数据集中的每个点,计算该点分别到红色x和蓝色x的距离(欧式),根据距质心点的距离来划分属于哪个类别。 经过第一轮遍历后,分为2类(红色标记和蓝色标记),如图c所示;

4)显然第一轮的分类效果并不理想。 这时候就需要更新质心。 第一轮的质心是随机选择的。 新一轮迭代需要更新质心。 更新方法:在上一轮中,我们初步将点集分为2(k=2)类,并分别计算所有红色点集和蓝色点集的质心。 计算方法是计算对应纬度的平均值。 例如,分别取红色点集和蓝色点集在x轴和y轴纬度的平均值作为第二轮的质心,如图d所示。 新的红x和蓝x;

5)更新质心后,用新的质心重新遍历样本中的所有点,对样本中的点进行重新分类。 操作方法同步骤3,分类完成后效果如图e所示。

6)第二轮更新后,从效果来看分类操作已经完成。 再次更新质心(重复步骤4),再次遍历所有样本点,重新分类,依次循环,直到分类结果不再发生变化。

这里的例子是k=2,k=3,表示分为3类,原理是一样的。

的优点和缺点

优势:

缺点:

K-Means 的详细信息

1)如何确定K值? 如何确定应该分为多少类?

这确实没有确定的方法。 分成几类主要看个人的经验和感受。 通常的方法是多尝试几个K值,看看分成几类的结果是否能更好地解释,更符合分析的目的。 或者可以比较各个K值计算出的总体损失值,选择总体损失值最小的K值。

2)如何选择初始K个质心?

最常用的方法是随机选择。 初始质心的选择对最终的聚类结果有影响。 因此,该算法必须执行多次。 将使用哪个结果更准确。 当然,还有一些优化方法。 第一个是选择彼此最远的点。 具体来说,先选择第一个点,然后选择距离第一个点最远的点作为第二个点,然后选择第三个点。 点,则第三点到第一点和第二点的距离之和最小,以此类推。 第二种是首先根据其他聚类算法(例如层次聚类)获得聚类结果,并从结果中的每个类别中选择一个点。

3)K-Means会不会在选择质心的过程中卡住,永远停不下来?

答案是不。 有数学证明 K-Means 肯定会收敛。 总体思路是利用SSE(即误差平方和)的概念,即每个点到所属质心的距离的平方和。 这个平方和就是一个函数,然后能够证明这个函数是一个最终能够收敛的函数。

3)如何计算距离来确定每个点属于哪个质心?

我们看一个例子(可能不太恰当):在一次歌手比赛中,三位评委给三位歌手打分。 第一个评委的分数是(10,8,9),第二个评委的分数是(4,3,2),而三位评委的分数是(8,9,10) 如果我们用余弦相似度来看差异在每位评委之间,虽然每个评委对同一选手的评分不同,但第一评委和第二评委对四位评委的评分不同。 歌手们的能力排名是一样的,但是第二评委对满分的标准更高,这说明第一评委和第二评委对音乐的品味是一致的。 因此,利用余弦相似度,第一和第二判断者属于一种类型,第三判断者属于另一种类型。 如果采用欧式距离,则第一和第三评判者的欧式距离更近,他们被划分为同一类型的人。 不过,这并不是很合理,因为他们四位参赛者的排名完全颠倒了。 总之,如果你关注的是数值本身的差异,你应该使用欧氏距离。 如果您关注上面示例中的差异(我无法总结差异是什么...),您应该使用余弦相似度。 计算。 还有其他计算距离的方法,但它们都是欧氏距离和余弦相似度的导数。 简单列出如下:明可夫斯基距离、切比雪夫距离、曼哈顿距离、马哈拉诺比斯距离、调整余弦相似度、相似系数等。

4)单位必须一致(数据需要标准化)

比如单位“的平方”然后取平方根,最后计算出来的东西没有数学意义,这是一个问题。 另外,即使X和Y的单位相同,如果整体Y的作用比X大得多,而X对距离的影响几乎可以忽略不计,这也是有问题的。 因此,如果在K-Means聚类中选择欧氏距离来计算距离,并且数据集中出现上述情况,则必须对数据进行标准化(),即对数据进行缩放,使其落入一个小的特定范围内。间隔。 去除数据的单位限制,将其转换为无量纲的纯数值,从而可以计算和比较不同单位或量值的指标。 标准化方法请参考前面的介绍。

5)如何在每次迭代中选择新的质心

各维度的算术平均值,如(X1,Y1,Z1),(X2,Y2,Z2),(X3,Y3,Z3),则新的质心为[(X1+X2+X3)/3 ,(Y1+Y2+Y3)/3,(Z1,Z2,Z3)/3],这里需要注意的是,新的质心不一定是实际的数据点。

6)关于异常值

异常值是指与整体相距甚远的非常异常、特殊的数据点。 在聚类之前,应该去除这些“极大”和“很小”的异常值,否则会影响聚类结果。 。 然而,异常值本身往往具有很大的分析价值,可以将异常值作为一个单独的类别进行分析。

最后介绍一个非常有趣的网站,动态演示k-means效果(外部链接地址不能直接发送,参考图中的URL),非常有趣。 有兴趣的话可以玩一下,参考图中的网址。

总结:

本文较为详细地介绍了聚类的概念、k-means算法中的K值、质心、距离和目标函数、工作原理和流程、优缺点、细节和动态演示。 通过本文的介绍,您应该对机器学习中的k-means算法有一定的了解。 如有疑问,请留言讨论。 感谢您的阅读~