20190619
1聚类算法
#分类和聚类区别
分类是有标签的,聚类是没有的
2K-MEANS
#算法接受参数k,然后将实现输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;不同聚类中的对象相似度较小。
例:k=3 就将对象聚类成三个类别
#算法设计思想:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代地方法,逐次更新各聚类中心的值,直至得到最好的聚类结果
#1先从没有标签的元素集合A中随机取k个元素,作为k个子集各自的重心
#2分别计算剩下的元素到k个子集重心的距离(可以使欧氏距离),根据距离将这些元素分别划归到最近的子集
#3根据聚类结果,重新计算重心(重心的计算方法是计算子集中所有元素各个维度的算术平均数)
#4将集合A中全部元素按照新的重心然后再重新聚类
#5重复第四步,直到聚类结果不再发生变化
3例子
4Mini Batch K-Means
#使用场景,当有100万个数据要聚类成5个类,要计算的距离500万次;Mini Batch K-Means通过选取其中1万个数据进行聚类,能大大提高效率。
5K-Means算法局限性
#对k个初始质心的选择比较敏感,容易陷入局部最小值
#k值的选择是用户指定的,不同的k得到的结果会有挺大的不同
#存在局限性,对于非球状的数据分布就搞不定
#数据比较大的时候,收敛比较慢(解决:使用Mini Batch)
20190622
1K-Means算法优化1
使用多次的随机初始化,计算每一次建模得到的代价函数的值,选取代价函数最小结果作为聚类结果
2K-MEANS肘部法则(K值的选择)
#K值的选择可以根据肘部法则或者通过经验来进行选取
3DBSCAN(基于密度的方法)
#ε领域:给定对象半径ε内的区域称为该对象的ε邻域
#核心对象:如果给定ε邻域内的样本点数大于等于Minpoints(设置的参数),则该对象为核心对象
#直接密度可达:给定一个对象集合D,如果p在q的ε邻域,且q是一个核心对象,则我们说对象p从q出发是直接密度可达的(directly density-reachable)
#密度可达:集合D,存在一个对象链p1,p2…pn ,p1=q,pn=p,pi+1是从pi关于ε和Minipoints密度可达的,则称点p是从q关于ε和Minpoints密度可达的
#密度相连:集合D存在点o,使得点p,q是从o关于ε和Minpoints密度可达的,那么点p、q是关于ε和Minpoints密度相连的
#DBSCAN算法思想
#指定合适的ε和Minpoints
#计算所有的样本点,如果点p的ε邻域里有超过Minpoints个点,则创建一个以p为核心点的新簇。
#反复寻找这些核心点直接密度可达(之后可能是密度可达)的点,将其加入到相应的簇,对于核心点发生“密度相连”状况的簇,给予合并
#当没有新的点可以被添加到任何簇时,算法结束
#算法缺点:
#当数据量增大时,要求较大的内存支持I/O消耗也很大
#当空间聚类的密度不均匀、聚类间距差很大时,聚类质量较差
#DBSCAN和K-MEANS比较:
#DBSCAN不需要输入聚类个数
#聚类簇的形状没有要求
#可以在小时输入过滤噪声的参数(ε和Minpoints)