AI实训(三):聚类算法、支持向量机算法

1. 聚类算法

聚类概念:

  • 无监督问题:我们手里没有标签了
  • 聚类:相似的东西分到一组
  • 难点:如何评估,如何调参

有个比较好玩的聚类算法可视化网站,可以方便理解聚类算法。
k-means
DBSCAN

1.1 K_means算法

1、基本概念

  • 要得到簇的个数,需要指定K值(也就是分为K类)
  • 质心:均值,即向量各维取平均即可(K个质心)
  • 距离的度量:常用欧几里得距离和余弦相似度(先标准化)
  • 优化目标: m i n ∑ i = 1 K ∑ x ∈ C i d i s t ( c i , x ) 2 min \sum \limits_{i=1}^K \sum \limits_{x \in C_i} dist(c_i,x)^2 mini=1KxCidist(ci,x)2

2、工作流程

AI实训(三):聚类算法、支持向量机算法_第1张图片
(a)一堆没有标签的样本点
(b)随机初始化两个中心点(一红标签一蓝标签)
(c)遍历所有样本点,样本点到哪个中心点的距离最短,就贴上相应的标签。
(d)分别计算红色簇和蓝色簇的质心,作为新的中心点
(e)根据新中心点,重复(c)步骤
(f)重复(d)步骤
一直到质心不再改变,有时候可能会无限迭代下去,这时可以设置最大迭代次数。

由于是随机初始化中心点,所以同样的数据集,相同的K值,运行多次,每次得到的聚类效果可能都不一样。sklearn工具包中的k-means算法是默认跑10次然后取最好的那一次。

3、评估方法

注意:这里的评估方法只是一个参考,并不代表最佳的参数选择方案。

  • Inertia指标:也就是每个样本与其质心的距离的平方的总和,在sklearn工具包中,这个指标值可以通过kmeans.inertia_属性来获得
  • 轮廓系数
    • : 计算样本i到同簇其他样本的平均距离ai。ai 越小,说明样本i越应该被聚类到该簇。将ai 称为样本i的簇内不相似度。
    • : 计算样本i到其他某簇Cj 的所有样本的平均距离bij,称为样本i与簇Cj 的不相似度。定义为样本i的簇间不相似度:bi =min{bi1, bi2, …, bik}
      AI实训(三):聚类算法、支持向量机算法_第2张图片
    • 结论:
      • si接近1,则说明样本i聚类合理;
      • si接近-1,则说明样本i更应该分类到另外的簇;
      • 若si 近似为0,则说明样本i在两个簇的边界上。

4、优劣势

优势:简单、快速、适合常规数据集(成堆形状的数据集,比如上面流程中的数据集)

劣势:

  • K值难确定
  • 复杂度与样本呈线性关系
  • 很难发现任意形状的簇,比如下面这种
    AI实训(三):聚类算法、支持向量机算法_第3张图片

1.2 DBSCAN算法

如果要用聚类算法,首选 DBSCAN算法

1、基本概念

Density-Based Spatial Clustering of Applications with Noise

  • 核心对象:若某个点的密度达到算法设定的阈值则其为核心点。(即 r 邻域内点的数量不小于 minPts)
    像下面图中的红色点,以其为圆心、半径为 r 画一个圆,圆内的样本数若大于某个值,那红色点就是一个核心对象。
    AI实训(三):聚类算法、支持向量机算法_第4张图片
  • ϵ-邻域的距离阈值:设定的半径r
  • 直接密度可达:若某点p在点q的 r 邻域内,且q是核心点则p-q直接密度可达。
  • 密度可达:若有一个点的序列q0、q1、…qk,对任意 q i q_i qi- q i − 1 q_{i-1} qi1 是直接密度可达的,则称从q0到qk密度可达,这实际上是直接密度可达的“传播”。
    如下图,q0和q1是直接密度可达,q1和q2直接密度可达,则q0和q2是密度可达。
    AI实训(三):聚类算法、支持向量机算法_第5张图片
  • 密度相连:若从某核心点p出发,点q和点k都是密度可达的,则称点q和点k是密度相连的。
  • 边界点:边界点不是核心点,但落在某个核心点的邻域内。
  • 噪声点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的。
    AI实训(三):聚类算法、支持向量机算法_第6张图片
    红色点:核心对象
    黄色点:边界点
    蓝色点:离群点(噪声点)

2、工作流程

  • 参数D:输入数据集
  • 参数ϵ:指定半径
  • MinPts:密度阈值
    AI实训(三):聚类算法、支持向量机算法_第7张图片

3、参数选择

  • 半径ϵ,可以根据K距离来设定:找突变点
    K距离:给定数据集P={p(i); i=0,1,…n},计算点P(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序,d(k)就被称为k-距离。
  • MinPts: k-距离中k的值,一般取的小一些,多次尝试

4、优劣势

优势:

  • 不需要指定簇个数(簇个数由半径 r 决定)
  • 擅长找到离群点(检测任务)
  • 两个参数就够了
  • 可以发现任意形状的簇
    AI实训(三):聚类算法、支持向量机算法_第8张图片

劣势:

  • 高维数据有些困难(可以做降维)
  • 参数难以选择(参数对结果的影响非常大)
  • Sklearn中效率很慢(数据削减策略)

5、评估方法

可以用上面提到过的轮廓系数。

2. 支持向量机(SVM)算法

Support Vector Machine

决策边界

选出来离雷区最远的边界(雷区就是边界上的点,要Large Margin)
AI实训(三):聚类算法、支持向量机算法_第9张图片

距离的计算

如果数据的特征是2维的,决策边界为一条线
如果数据的特征是3维的,决策边界为一个面

AI实训(三):聚类算法、支持向量机算法_第10张图片
求出点 x x x 到平面的距离?

现在假设数据的特征是3维度的,决策平面的方程为 W T x + b = 0 W^Tx+b=0 WTx+b=0

在决策平面上有两个点 x ′ x' x x ′ ′ x'' x,则有 W T x ′ = − b , W T x ′ ′ = − b W^Tx'=-b,W^Tx''=-b WTx=bWTx=b

W(法向量)垂直于决策平面,则 ( x ′ ′ − x ′ ) (x''-x') (xx)是平面上的一条向量,法向量 W W W 垂直于平面上的任意一条向量,因此两者点积为0,即 W T ( x ′ ′ − x ′ ) = 0 W^T(x''-x')=0 WT(xx)=0
AI实训(三):聚类算法、支持向量机算法_第11张图片
由以上铺垫可以得到, d i s t ( x , b , w ) = ∣ W T ∣ ∣ W ∣ ∣ ( x − x ′ ) ∣ = 1 ∣ ∣ W ∣ ∣ ∣ W T x + b ∣ dist(x,b,w)=|\frac{W^T}{||W||}(x-x')|=\frac{1}{||W||}|W^Tx+b| dist(x,b,w)=WWT(xx)=W1WTx+b

数据标签定义

数据集: ( x 1 , Y 1 ) 、 ( x 2 , Y 2 ) … ( x n , Y n ) (x_1,Y_1)、(x_2,Y_2)… (x_n,Y_n) (x1,Y1)(x2,Y2)(xn,Yn)

Y为样本的类别: 当 x x x 为正例时候 Y = +1 ;当 x x x 为负例时候 Y = -1。

决策方程: y ( x ) = w T Φ ( x ) + b y(x)=w^TΦ(x)+b y(x)=wTΦ(x)+b(其中 Φ ( x ) Φ(x) Φ(x)是对数据做了变换,后面继续说)
于是有:
{ y ( x i ) > 0 ⇔ Y i = + 1 y ( x i ) < 0 ⇔ Y i = − 1 } ⇒ Y i ⋅ y ( x i ) > 0 \left\{ \begin{array}{lr} y(x_i)>0 \Leftrightarrow Y_i=+1 \\ y(x_i)<0 \Leftrightarrow Y_i=-1\\ \end{array} \right\} \Rightarrow Y_i · y(x_i)>0 {y(xi)>0Yi=+1y(xi)<0Yi=1}Yiy(xi)>0

优化的目标

通俗解释:找到一个条线(w和b),使得离该线最近的点(雷区)能够最远

将点到直线的距离化简得: Y i ⋅ ( W T Φ ( x i ) + b ) ∣ ∣ W ∣ ∣ \frac{Y_i · (W^TΦ(x_i)+b)}{||W||} WYi(WTΦ(xi)+b)(由于 Y i ⋅ y ( x i ) > 0 Y_i · y(x_i)>0 Yiy(xi)>0,所以将绝对值展开原始依旧成立)

放缩变换:对于决策方程(w,b)可以通过放缩使得其结果值 ∣ y ( x i ) ∣ ≥ 1 |y(x_i)|≥1 y(xi)1,则有 Y i ⋅ ( W T Φ ( x i ) + b ) ≥ 1 Y_i · (W^TΦ(x_i)+b)≥1 Yi(WTΦ(xi)+b)1(之前我们认为恒大于0,现在严格了些)

优化目标: arg max ⁡ w , b { 1 ∣ ∣ W ∣ ∣ min ⁡ i [ Y i ⋅ ( W T Φ ( x i ) + b ) ] } \argmax \limits_{w,b} \big\{ \frac{1}{||W||} \min \limits_i [Y_i · (W^TΦ(x_i)+b)] \big \} w,bargmax{W1imin[Yi(WTΦ(xi)+b)]},由于 Y i ⋅ ( W T Φ ( x i ) + b ) ≥ 1 Y_i · (W^TΦ(x_i)+b)≥1 Yi(WTΦ(xi)+b)1,只需要考虑 arg max ⁡ w , b 1 ∣ ∣ W ∣ ∣ \argmax \limits_{w,b} \frac{1}{||W||} w,bargmaxW1(目标函数搞定!)

当前目标: max ⁡ w , b 1 ∣ ∣ W ∣ ∣ \max \limits_{w,b} \frac{1}{||W||} w,bmaxW1,约束条件: Y i ⋅ ( W T Φ ( x i ) + b ) ≥ 1 Y_i · (W^TΦ(x_i)+b)≥1 Yi(WTΦ(xi)+b)1

常规套路:将求解极大值问题转换成极小值问题----> min ⁡ w , b 1 2 W 2 \min \limits_{w,b} \frac{1}{2}W^2 w,bmin21W2

如何求解:应用拉格朗日乘子法求解!

拉格朗日乘子法
AI实训(三):聚类算法、支持向量机算法_第12张图片
我们的式子: L ( w , b , α ) = 1 2 W 2 − ∑ i = 1 n α i ( Y i ⋅ ( W T Φ ( x i ) + b ) − 1 ) L(w,b,α)= \frac{1}{2}W^2-\sum \limits_{i=1}^n α_i(Y_i · (W^TΦ(x_i)+b)-1) L(w,b,α)=21W2i=1nαi(Yi(WTΦ(xi)+b)1)

SVM求解

AI实训(三):聚类算法、支持向量机算法_第13张图片
AI实训(三):聚类算法、支持向量机算法_第14张图片
AI实训(三):聚类算法、支持向量机算法_第15张图片

SVM求解实例

数据:3个点,其中正例有 x 1 ( 3 , 3 ) x_1(3,3) x1(3,3) x 2 ( 4 , 3 ) x_2(4,3) x2(4,3),负例 x 3 ( 1 , 1 ) x_3(1,1) x3(1,1)
AI实训(三):聚类算法、支持向量机算法_第16张图片
求解: 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) − ∑ j = 1 n α i \frac{1}{2} \sum \limits_{i=1}^n \sum \limits_{j=1}^n α_iα_jy_i y_j(x_i·x_j)- \sum\limits_{j=1}^n α_i 21i=1nj=1nαiαjyiyj(xixj)j=1nαi

约束条件:
α 1 + α 2 − α 3 = 0 α_1+α_2-α_3=0 α1+α2α3=0
α i ≥ 0 , i = 1 , 2 , 3 α_i≥0,i=1,2,3 αi0,i=1,2,3

将数据代入: 1 2 ( 18 α 1 2 + 25 α 2 2 + 2 α 3 2 + 42 α 1 α 2 − 12 α 1 α 3 − 14 α 2 α 3 ) − α 1 − α 2 − α 3 \frac{1}{2}(18α_1^2+25α_2^2+2α_3^2+42α_1α_2-12α_1α_3-14α_2α_3)-α_1-α_2-α_3 21(18α12+25α22+2α32+42α1α212α1α314α2α3)α1α2α3
由于: α 1 + α 2 = α 3 α_1+α_2=α_3 α1+α2=α3
化简可得: 4 α 1 2 + 13 2 α 2 2 + 10 α 1 α 2 − 2 α 1 − 2 α 2 4α_1^2+\frac{13}{2}α_2^2+10α_1α_2-2α_1-2α_2 4α12+213α22+10α1α22α12α2

分别对 α 1 α_1 α1 α 2 α_2 α2求偏导,偏导等于0可得: α 1 = 1.5 , α 2 = − 1 α_1=1.5,α_2=-1 α1=1.5α2=1(并不满足约束条件 α i ≥ 0 , i = 1 , 2 , 3 α_i≥0,i=1,2,3 αi0,i=1,2,3,所以解应在边界上)

α 1 = 0 , α 2 = − 2 13 α_1=0,α_2=-\frac{2}{13} α1=0α2=132,带入原式=-0.153(不满足约束)
α 1 = 0.25 , α 2 = 0 α_1=0.25,α_2=0 α1=0.25α2=0,带入原式=-0.25(满足啦!)

最小值在(0.25,0,0.25)处取得。

将ɑ结果带入求解: w = ∑ i = 1 n α 1 y i Φ ( x n ) w=\sum \limits_{i=1}^n α_1y_iΦ(x_n) w=i=1nα1yiΦ(xn)

w = 1 4 ∗ 1 ∗ ( 3 , 3 ) + 1 4 ∗ ( − 1 ) ∗ ( 1 , 1 ) = ( 1 2 , 1 2 ) b = y i − ∑ i = 1 n α i y i ( x i x j ) = 1 − ( 1 4 ∗ 1 ∗ 18 + 1 4 ∗ ( − 1 ) ∗ 6 ) = − 2 w=\frac{1}{4}*1*(3,3)+\frac{1}{4}*(-1)*(1,1)=(\frac{1}{2},\frac{1}{2}) \\ b=y_i-\sum \limits_{i=1}^n α_iy_i(x_ix_j)=1-(\frac{1}{4}*1*18+\frac{1}{4}*(-1)*6)=-2 w=411(3,3)+41(1)(1,1)=(21,21)b=yii=1nαiyi(xixj)=1(41118+41(1)6)=2

平面方程为: 0.5 x 1 + 0.5 x 2 − 2 = 0 0.5x_1+0.5x_2-2=0 0.5x1+0.5x22=0

支持向量:真正发挥作用的数据点,是ɑ值不为0的点
AI实训(三):聚类算法、支持向量机算法_第17张图片

soft-margin

AI实训(三):聚类算法、支持向量机算法_第18张图片
软间隔:有时候数据中有一些噪音点,如果考虑它们咱们的线就不太好了

之前的方法要求要把两类点完全分得开,这个要求有点过于严格了,我们来放松一点!

为了解决该问题,引入松弛因子: y i ( w ⋅ x i + b ) ≥ 1 − ξ i y_i(w·x_i+b)≥1-ξ_i yi(wxi+b)1ξi

新的目标函数: m i n 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n ξ i min \frac{1}{2} ||w||^2+C \sum \limits_{i=1}^n ξ_i min21w2+Ci=1nξi

C是我们需要指定的一个参数!
当C趋近于很大时:意味着分类严格不能有错误
当C趋近于很小时:意味着可以有更大的错误容忍

AI实训(三):聚类算法、支持向量机算法_第19张图片

低维不可分问题

核变换:既然低维的时候不可分,那我给它映射到高维呢?
AI实训(三):聚类算法、支持向量机算法_第20张图片
目标:找到一种变换的方法,也就是 Φ()
AI实训(三):聚类算法、支持向量机算法_第21张图片
AI实训(三):聚类算法、支持向量机算法_第22张图片
高斯核函数: K ( X , Y ) = e x p { − f r a c ∣ ∣ X − Y ∣ ∣ 2 2 σ 2 } K(X,Y)=exp \{ -frac{||X-Y||^2}{2σ^2} \} K(X,Y)=exp{fracXY22σ2}

AI实训(三):聚类算法、支持向量机算法_第23张图片

附加

空间中形如 Ax+By+Cz+D=0 的方程确定一个平面,其法向量就是向量(A,B,C)
写成矩阵形式就是 W T X + B = 0 W^TX+B=0 WTX+B=0 确定平面,法向量为 W

向量积,又称外积、叉积,物理中称矢积、叉乘,是一种在向量空间中向量的二元运算。它的运算结果是一个向量。并且两个向量的叉积与这两个向量和垂直。
AI实训(三):聚类算法、支持向量机算法_第24张图片

数量积,又称内积、点积,是一种在向量空间中向量的二元运算,它的运算结果是一个标量。它是欧几里得空间的标准内积。
AI实训(三):聚类算法、支持向量机算法_第25张图片

你可能感兴趣的:(AI实训,机器学习,聚类算法)