姓名:Jyx
描述:人工智能学习笔记
聚类
- 聚类是一种非监督学习,聚类需要将一系列样本输入到聚类算法中,学习样本的内在结构。聚类往往不单独存在,而是作为一个大的监督学习算法的一部分存在
- 聚类的原则。 类内散度最小,类间散度最大
- 聚类的用途
3.1 减少计算量。通过对样本分类,以分类标签代替原始向量,大大减少计算量
3.2 识别离群点。
3.3 可视化 - 聚类的要素。特征选择,近邻测度,聚类准则,聚类算法,结果验证,结果判定
##近邻测度
- 距离测度
d(x,y)=∣∣x−y∣∣p1p d(x,y) = || x - y ||_p^{\frac{1}{p}} d(x,y)=∣∣x−y∣∣pp1 - 余弦相似度
d(x,y)=xTy∣x∣ ∣y∣ d(x,y) = \frac{x^T y}{|x| \ |y|} d(x,y)=∣x∣ ∣y∣xTy - 相关系数
d(x,y)=cov(x,y)δxδy d(x,y) = \frac{cov(x,y)}{\delta_x \delta_y} d(x,y)=δxδycov(x,y) - 杰卡德相似系数
d(x,y)=∑i=1k−1aiinx+ny−∑i=1k−1∑j=1k−1aijwhere nx=∑i=1k−1∑j=0k−1aij,ny=∑i=0k−1∑j=1k−1aij d(x,y) = \frac{\sum_{i = 1}^{k - 1} a_{ii}}{n_x + n_y - \sum_{i = 1}^{k - 1} \sum_{j = 1}^{ k - 1}a_{ij}} \\ where\ n_x = \sum_{i = 1}^{k - 1} \sum_{j = 0}^{ k - 1}a_{ij}, n_y = \sum_{i = 0}^{k - 1} \sum_{j = 1}^{ k - 1}a_{ij} d(x,y)=nx+ny−∑i=1k−1∑j=1k−1aij∑i=1k−1aiiwhere nx=i=1∑k−1j=0∑k−1aij,ny=i=0∑k−1j=1∑k−1aij
其中矩阵{aij}\{ a_{ij }\}{aij}称为相依表(Contingency table)
##聚类算法 - 分类
1.1 基于距离的聚类算法
1.2 基于密度的聚类算法
1.3 基于连接的聚类算法 - 基于距离的聚类算法
2.1 KMeans
对于一个k类问题,KMeans 的优化目标为
argminC∑i=1k∑x∈Ci(x−μi)2,ui=1nCi∑x∈Cix \mathop{\arg \min}_{C} \sum_{i = 1}^k \sum_{ x \in C_i}(x - \mu_i)^2, u_i = \frac{1}{n_{C_i}}\sum_{x \in C_i}x argminCi=1∑kx∈Ci∑(x−μi)2,ui=nCi1x∈Ci∑x
这是一个组合优化问题,完全的求解几乎不可能。一般的的思路都是采用贪婪算法,求解局部最优,因此KMeans一般要使用随机初值多尝试几次算法描述
- 选择随机的聚类中心μi\mu_iμi初始化算法
- 根据每个样本距离聚类中心的距离对每个样本进行分类,x∈Ci,argmini(x−ui)2x \in C_i , \mathop{\arg \min} \limits _i(x - u_i)^2x∈Ci,iargmin(x−ui)2
- 利用分类好的聚类结果更新新的聚类中心ui=1nCi∑x∈Cixu_i = \frac{1}{n_{C_i}}\sum_{x \in C_i}xui=nCi1∑x∈Cix
- 重复2,3步直uiu_iui基本不变
2.2 层次聚类
层次聚类来源于生物学的生物分类,一级包含一级,形成一个层次聚类。层次算法并不存在一个优化目标。层次聚类有两种,一种是分裂,一种是聚合。分裂是自顶向下,聚合是自底向上
基本算法描述:
1 将每一个样本初始化一个类CiC_iCi
2 选取一对Cnew=Ci∪Cj,argmini,jd(Ci,Cj)C_{new} = C_i \cup C_j, \mathop{\arg\min} \limits _{i, j}d(C_i, C_j)Cnew=Ci∪Cj,i,jargmind(Ci,Cj)
3 删除原来的$ C_i , C_j$
4重复2,3直至只有一个类
这样就形成了一个分类树,然后根据某些知识和准则选取每一级作为最后的聚类结果
2.3 吸引力传播
2.4 DBSCAN