深度学习机器学习算法

聚类随笔

2019-11-12  本文已影响0人  zidea
机器学习基础

聚类分析

个人认为这是一个比较简单容易理解的机器学习算法

一个例子

假设我们在超市做客群分析,不同顾客有不同关注点,不同顾客按特征可以划分为不同群体,但是如何划分和划分为那些群体我们都不知道。

我们可以让没有任何知识背景的小朋友尝试对动物进行分类,他们就可以根据动物体型和颜色、有没有翅膀等一些特征对动物做出简单分类。

相似的东西进行分组

无监督学习

基本概念

距离

明氏距离

对于样本点x_i(x_{1}^i,x_{2}^i,\dots , x_{m}^i) 和样本点x_i(x_{1}^j,x_{2}^j,\dots , x_{m}^j)
d_{min}(x_i,x_j) = (\sum_{k=1}^m|x_{ik} - x_{jk}|^p)^{\frac{1}{p}}

根据明氏距离我们根据不同 p 取值来得到曼哈顿距离、欧式距离和切比雪夫距离

d_{min}(x_i,x_j) = \lim_{p \rightarrow \infty}(\sum_{k=1}^m|x_{ik} - x_{jk}|^p)^{\frac{1}{p}} = \max_{k} (|x_{k}^i - x_{k}^j|)

kmean 算法

  1. 指定聚类 k
  2. 初始化 k 个类群的质心,初始化质心的方法有如下两种
  1. 依次计算每一个样本点到各类群质心的距离,根据最小距离的原则,把每一个样本点分配到距离他最近的质心。
  2. 分配完每一个样本点,更新每一个类群的质心,Kmeans 算法的质心计算公式为该类群所有样本点的均值向量,第 i 类群的C_i 的质心计算公式为
    \mu_i =\frac{1}{n_i} \sum_{x \in C_i} x
  3. 判断是否满足停止条件

kmean 算法

聚类的注意事项

记录 x x_1 x_2 x_3
1 A 1 0 0
2 A 0 1 0
3 A 0 0 1

但是值得注意是,虽然采用虚拟变量的方法来解决了分类型变量的距离计算问题,但是通过虚拟变量进行计算将导致分类型变量的权重大于其他数值型变量。例如上表所示,记录1和记录2虽然只是一个相差一个水平,但是两者在变量x距离变为
\sqrt{(1-0)^2 + (0-1)^2 + (0 -0)^2} = \sqrt{2} \approx 1.414

为了保证分类类型变量的权重和数值型变量一致,会同样要对虚拟变量进行标准化,
\sqrt{\frac{1}{2}} =\approx 0.707

\sqrt{(\sqrt{\frac{1}{2}}-0)^2 + (0-\sqrt{\frac{1}{2}})^2 + (0 -0)^2} = 1

上一篇 下一篇

猜你喜欢

热点阅读