机器学习 无监督学习

无监督学习最常出现的就是聚类(clustering)、异常检测场景

K均值聚类(K-means clustering)

  1. 决定类别数,在样本中随机选个样本作为聚类中心。
  2. 将每一个样本划分给特征空间(坐标系)里,中心最近的类。
  3. 对每个类的多个样本坐标求均值,生成新的聚类中心。
  4. 重复步骤2、3,直到不再有变化。

手肘法确定值
先用各种值分别进行聚类,找出值和样本到聚类中心平均距离都较小的情况。该曲线类似手肘,因此拐点也成为手肘点,该方法称为手肘法(elbow method)

相册中的人脸自动聚类
  1. 使用人脸目标检测模型在图像中搜索人脸位置,如有则返回其边界框坐标。其本质为目标检测
  2. 使用特征点定位模型检测人脸五官等特征点坐标,并将人脸旋转矫正为正向
  3. 通过人脸特征比对模型将人脸图像转化成多维特征向量(此处同人脸识别的卷积神经网络的倒数第二层)
  4. 进行K均值聚类

层次聚类

  1. 将每个样本都当成单独的一类
  2. 重复合并最相似的两类,直到所有类别的间距都超过某一预设的截止距离

文本分类

特征提取:词袋模型(bag-of-words model)

将一篇文档视为装有多个词语的口袋,不考虑其出现顺序和语法结构。对照一个特定的词典,根据词典中每个词在文档中出现次数建立词计数向量,或归一化后获得词频率向量
如王建国喜欢打篮球,也喜欢打羽毛球:

词典: 王建国 喜欢 篮球 羽毛球
次数: 1 2 2 1 1 1


对词频率向量中每个元素分别乘以该次的逆文档频率,得到文档的特征,也称为词频率-逆文档频率(tf-idf)

  • 语料库
    所有需要分类的文章的集合
  • 中文分词
    不同于英文,中文需要先通过算法将文本中的词语分割。如Python的jieba分词库等。
  • 停止词(stop word)
    如“的”,“也”,“了”等对区分文本主体无帮助的虚词。
    通常词典会包含停止词。
  • 低频词
    如随机的人名、不常用的专有名词等,为减小词典大小,降低计算量,且防止过拟合,通常词典不收录低频词。
  • 逆文档频率(inverse document frequency)
    用于修正词典中每个词对文章分类的影响程度。
    或,其中为文档数,为其中出现过该词的文档数。
    当一个词在语料库中每一篇文章中都出现时,其逆文档频率达到最小(如将腾讯新闻作为语料库,每篇文章都会出现“腾讯”,此时的“腾讯”对文章分类并无影响)。

实现分类

主题模型(topic model)

从已知主题的文章中,可以提取到各个主题的特征向量。通过对比新文章的特征向量和各主题的特征向量,可最终得到新文章的主题。

潜在语义分析(latent semantic analysis)

文本通常具有多个主题,不适用于K类均值聚类和层次聚类,可使用潜在语义分析(latent semantic analysis)计算某文章中各个主题的比重:

\begin{bmatrix}文章1词语1频率&文章2词语1频率\\文章1词语2频率&文章2词语2频率\end{bmatrix} = \underbrace{ \begin{bmatrix}文章1主题1比重&文章1主题2比重\\文章2主题1比重&文章2主题2比重\end{bmatrix}}_{待求结果} ⋅ \begin{bmatrix}主题1词语1比重&主题1词语2比重\\主题2词语1比重&主题2词语2比重\end{bmatrix}
该方程组可能无解,可通过非负矩阵分解(non-negative matrix factorization)等方法求得近似解。


生成对抗网络(generative adversarial network,GAN)

通过生成网络(generative network)生成数据,判别网络(discriminative network)分辨数据真实性。两个网络之间交替固定和训练,最终达到一个稳定的状态:

  • 固定生成网络,训练判别网络
    将一些真实图片和生成网络生成的图片组成一个数据集,输入给判别网络进行训练(有监督学习)。
  • 固定判别网络,训练生成网络
    用生成网络不断生成图片提供给判别网络,根据判断网络的反馈调整生成策略,使真实性概率尽量提高。
条件生成对抗网络(conditional generative adversarial network)

生成对抗网络可以生成以假乱真的图片,但是生成内容是随机的。通过条件生成对抗网络可以生成符合条件的图片。

你可能感兴趣的:(机器学习 无监督学习)