人智导(十五):无指导学习

人智导(十五):无指导学习

无指导学习与聚类分析

  • 有指导学习与无指导学习:
    • 有指导:通过示例 → \to 分类
    • 无指导:没有示例,如何分类?
  • 聚类(clustering):无指导学习的典型应用场景
    • 没有学习的样例
    • 对事物根据其相似性进行分组或分类(“物以类聚”)

聚类(clustering)分析

聚类的基本原则:类内高相似,类间低相似

无指导的聚类应用场景

  • 市场分析:用购买模式刻画不同的顾客群
  • 标识资源分布与使用
  • 城市规划
  • 地震规划
  • 搜索引擎

数据表示

  • 数据矩阵:对象与变量(元组与属性)
  • 相异度矩阵:对象与对象
  • 相似度矩阵:相异度衍生

相似性度量

  • 欧几里得距离: d ( i , j ) = ( ∣ x i 1 − x j 1 ∣ 2 + ∣ x i 2 − x j 2 ∣ 2 + ⋯ + ∣ x i p − x j p ∣ 2 ) d(i,j)=\sqrt{(|x_{i1}-x_{j1}|^2+|x_{i2}-x_{j2}|^2+\dots +|x_{ip}-x_{jp}|^2)} d(i,j)=(xi1xj12+xi2xj22++xipxjp2)
  • 海明距离(Hamming): d ( i , j ) = p − m p d(i,j)=\frac{p-m}{p} d(i,j)=ppm
  • Jaccard距离: d ( i , j ) = b + c a + b + c d(i,j)=\frac{b+c}{a+b+c} d(i,j)=a+b+cb+c

聚类是主观的

  • 有多少簇?
    在这里插入图片描述

  • 六个簇
    在这里插入图片描述

  • 两个簇
    在这里插入图片描述

  • 四个簇
    在这里插入图片描述

划分式聚类方法

划分式聚类算法

  • 划分方法:针对数据集D其中包含了n个数据记录,发现一个有效划分使得数据集被分为k组
  • 事先给定k值,寻找一种划分,以把数据集划分成k组,使其最优化一个划分准则(目标函数)
    • 全局优化:划分涉及了每一条数据记录
    • k-means(k-均值算法):每一个簇由其中心值(平均值)来表示
    • k-medoids(k-中心点算法):每一个簇由其距中心值最近的数据点来表示

K-means算法

  • 输入:拟聚类的个数k和n个数据
  • 输出:k个聚类,最小化误差平方准测(目标函数)
Select K points as the initial centroids
repeatForm K clusters by assigning all points to the closest centroidRecompute the centroid of each cluster
until The centroids don't change
  • 目标函数:误差平方和最小 E = Σ i = 1 k Σ p ∈ C i ∣ p − m i ∣ 2 E=\Sigma^k_{i=1}\Sigma_{p \in C_i}|p-m_i|^2 E=Σi=1kΣpCipmi2
    • p: 数据对象
    • m i m_i mi: 簇 C i C_i Ci的平均值
  • 算法的局限
    • 算法是可应用的,仅当“平均”赋有意义
    • 须事先明确给出待分组(聚类)的数目
    • 较适合于发现球状的簇
  • 初始中心点选择问题
    • 进行多次运行和观察,选择合适的
    • 选择数倍于k的初始中心点,然后采用层次聚类方式决定k个初始点
    • 二分(Bisecting)K-means算法
  • K-means算法的局限性
    • 处理非球状的数据分布

二叉K-means算法

  • K-means算法的一种变体
  • 每次一份为二,逐次划分,直到产生k个簇
Initialize the list of clusters to contain the cluster containing all points
repeatSelect a cluster from the list of clustersfor i=1 to number_of_iterations doBisect the selected cluster using basic K-meansend forAdd the two clusters from the bisection with the lowest SSE to the list of clusters
until the list of clusters contains K clusters

K-Medoids算法

用最接近簇中心位置的数据记录代表其簇的中心点,而非平均值

  • 任意选择k个数据作为初始中心点
  • 分配每一个其余的数据点给到最近的中心点
  • 随机选择一个非中心点 O r a n d o m O_{random} Orandom
  • 接替目前的中心点观察聚类结果
  • 若聚类效果改善,就用 O r a n d o m O_{random} Orandom替换原有的中心点
  • 过程迭代地进行直到聚簇结果没有变化为止

层次式聚类方法

层次聚类方法

两种主要类型的层次聚类方法:

  • 凝聚法(Agglomerative)
    • 开始时,每一个数据记录作为一个单一的聚簇cluster
    • 然后每步合并两个最接近的簇作为一个聚簇,直到满足结束条件或者归并成最终一个簇
  • 分裂法(Divisive)
    • 开始时,只有一个簇,包含了所有数据记录
    • 然后每步分裂一个簇,直到满足结束条件或者最终分裂成每个簇都只包含单一的数据记录

层次聚类方法示意图

在这里插入图片描述

层次聚类方法不需要事先给出聚类的数目,但须给出结束条件

凝聚式聚类算法

compute the proximity matrix
Let each data point be a cluster
RepeatMerge the two closest clustersUpdate the proximity matrix
Until only a single cluster remains

关键是如何计算两个簇间的相似度
聚类过程:

  • 开始时,每个数据记录作为一个单一簇,其相似度矩阵
  • 经过几步合并后,我们获得一些聚簇
  • 连续地合并两个最接近的簇,须进一步更新相似矩阵
  • 簇合并后如何修改相似度矩阵?
  • 需要计算两个簇间的相似度
    • 最小法(MIN)
    • 最大法(MAX)
    • 组平均法(Group Average)
    • 中心点间距离度量法
    • 目标函数法

簇间相似度计算

  • 最小法(MIN)
    • 能够发现不规则形状的簇
    • 对噪音数据敏感,易出现“链接效果”(chain effect)
  • 最大法(MAX)
    • 两个簇的相似度计算:基于这两个簇中的两个最远点的距离
    • 较少受噪音数据的影响
    • 数据分布不平衡时,易导致较大的簇被拆分
  • 组平均方法
    • 两个簇的相似度计算:基于这两个簇中所有组对点的平均距离 KaTeX parse error: Undefined control sequence: \* at position 112: …j)}{|Cluster_i|\̲*̲|Cluster_j|}
  • 目标函数法
    • 两个簇的相似度计算:以这两个簇合并后的平方误差作为距离
    • 较少受噪音数据影响
    • 偏向于处理球状簇分布

层次聚类算法的局限

  • 两个簇被决定合并后,就不能回溯(一步错,步步错)
  • 没有目标函数来指示优化
  • 不同的簇间相似性计算策略会导致出现不同的问题:
    • 对噪音数据敏感
    • 不适合于处理不同尺度、不同形状的聚簇
    • 拆分较大的簇,等等


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部