分类与聚类的主要区别在于:
分类算法中,类别是已知的,类别数不变;而
聚类中,类别是未知的,类别数不确定。
分类需要依赖先验概率,把所有的数据点所组成的空间进行划分,组成一个个不同类别的集合,这些集合通常是不重合的
聚类:没有先验知识,属于无监督学习
适用与多维度,连续变量,基本的思路是概念建模和迭代优化
凝聚型层次聚类算法:
1:定义初始树,类似与B+树,所有数据都在叶子节点
2:逐步提高层级值,判断哪些元素可以构成新的聚类
eg:ROCK链接型聚类 :处理非线性的数据,如关键字,布尔值,枚举等,通过雅可比相似度来反映距离
分裂型层次聚类算法:
自上而下将数据拆成更小的聚类
k-means算法:效率最高(空间复杂度,时间复杂度),但是无法处理类别型数据,也无法处理异常点(实际上远离任何聚类的点)
通过配置k值来确定中心点的数量
根据数据到中心点的距离不断迭代调整中心点的位置,直到中心点不在大幅改变的时候
(距离可采用欧几里德距离和Kullback-Leibler发散度等)
DBSCAN:基于密度的空间聚类算法(相较与k-means复杂度增大了,但是可以有效的去除异常点)
用于根据eps(聚类圈的半径)和miniPoints(聚类内最小数据点数)找出数据集中的密度和噪声
BIRCH:通过数据挤压算法对大规模数据进行聚类算法
大数据规模下的聚类算法应该:
1:通过采样,索引等的实现减少对数据的寻址
2:随时都能够给出一个当前最好的结果
3:算法能够暂停和恢复
4:充分考虑内存限制
分类
通常我们将分类分为二分类和多分类
二分类:回答是或者否
多分类又分成离散的或者连续的
例如:
我们根据一段时间的股票情况来推测明天的股票,如果我们只想知道明天是涨还是跌那么就是离散的,如果我们想得到一个确切的预测值那么就是连续的
分类常使用的算法有:
统计算法
1:回归算法:预测连续变量的值,通过一个待处理数据的线性函数,来拟合我们的数据,其本质是找到与数据最拟合的公式
回归算法适合处理连续的数值变量,而不适合处理散列的数据(枚举等)常用的有logistic回归
2:贝叶斯理论:常用的有朴素贝叶斯
3:贝叶斯网络:将贝叶斯理论与概率网络结构组合在一起,描述变量间的依赖关系
结构算法
1:基于规则的算法:决策树
2:基于距离的算法:适用于低纬度,低复杂度的情况
函数式分类器:类似回归,找出数据的近似数值
最近邻算法:计算数据点与有效类别的距离,常用的有k最近邻k nearest neighbors,KNN 和 学习矢量量化learning vector quantization,LVQ
3:神经网络:通过有计算能力的节点构造人工神经网络,来模拟人脑中神经元与连接神经元突触的结构(需要相当的数学背景)