码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 机器学习——聚类算法


    11. 聚类算法

    文章目录

      • 11. 聚类算法
        • 11.1 现实应用
        • 11.2 概念
        • 11.3 聚类算法与分类算法最大的区别
        • 11.4 API
          • 11.4.1 sklearn.cluster.KMeans(n_clusters=8)
          • 11.4.2 方法
        • 11.5 聚类算法实现流程
          • 11.5.1 k-means其实包含两层内容
          • 11.5.2 k-means聚类步骤
        • 11.6 模型评估
          • 11.6.1 误差平方和(SSE \The sum of squares due to error)
          • 11.6.2 “肘”方法 (Elbow method) — K值确定
          • 11.6.3 轮廓系数法(Silhouette Coefficient)
          • 11.6.4 CH系数(Calinski-Harabasz Index)
        • 11.7 算法优化
          • 11.7.1 k-means算法
          • 11.7.2 优化方法
        • 11.8 特征工程 - 特征降维
          • 11.8.1 方式
        • 11.9 案例:探究用户对物品类别的喜好细分降维
        • 11.10 算法选择

    使用不同的聚类准则,产生的聚类结果不同

    11.1 现实应用

    • 用户画像,广告推荐,Data Segmentation,搜索引擎的流量推荐,恶意流量识别

    • 基于位置信息的商业推送,新闻聚类,筛选排序

    • 图像分割,降维,识别;离群点检测;信用卡异常消费;发掘相同功能的基因片段

    11.2 概念

    一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中

    11.3 聚类算法与分类算法最大的区别

    聚类算法是无监督的学习算法,而分类算法属于监督的学习算法

    11.4 API

    11.4.1 sklearn.cluster.KMeans(n_clusters=8)

    • n_clusters:开始的聚类中心数量

      • 整型,缺省值=8,生成的聚类数,即产生的质心(centroids)数

    11.4.2 方法

    • estimator.fit(x)
    • estimator.predict(x)
    • estimator.fit_predict(x)

    11.5 聚类算法实现流程

    11.5.1 k-means其实包含两层内容

    • K : 初始中心点个数(计划聚类数)
    • means:求中心点到其他数据点距离的平均值

    11.5.2 k-means聚类步骤

      1. 随机设置K个特征空间内的点作为初始的聚类中心
      1. 对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心点作为标记类别
      1. 接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值)
      1. 如果计算得出的新中心点与原中心点一样(质心不再移动),那么结束,否则重新进行第二步过程

    由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢

    11.6 模型评估

    11.6.1 误差平方和(SSE \The sum of squares due to error)

    • 在这里插入图片描述

    • SSE图最终的结果,对图松散度的衡量

    • SSE随着聚类迭代,其值会越来越小,直到最后趋于稳定

    11.6.2 “肘”方法 (Elbow method) — K值确定

    • 下降率突然变缓时即认为是最佳的k值

    11.6.3 轮廓系数法(Silhouette Coefficient)

    • 结合了聚类的凝聚度(Cohesion)和分离度(Separation)
    • 目的:内部距离最小化,外部距离最大化

    11.6.4 CH系数(Calinski-Harabasz Index)

    • 目的:用尽量少的类别聚类尽量多的样本,同时获得较好的聚类效果
    • 类别内部数据的协方差越小越好,类别之间的协方差越大越好
    • 在这里插入图片描述

    11.7 算法优化

    11.7.1 k-means算法

    • 优点

      • 原理简单(靠近中心点),实现容易
      • 聚类效果中上(依赖K的选择)
      • 空间复杂度o(N),时间复杂度o(IKN)
    • 缺点

      • 对离群点,噪声敏感 (中心点易偏移)
      • 很难发现大小差别很大的簇及进行增量计算
      • 结果不一定是全局最优,只能保证局部最优(与K的个数及初值选取有关)

    11.7.2 优化方法

    • Canopy算法配合初始聚类
    • K-means++
    • 二分k-means
    • k-medoids(k-中心聚类算法)
    • Kernel k-means
    • ISODATA
    • Mini Batch K-Means
    • 在这里插入图片描述

    11.8 特征工程 - 特征降维

    降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程

    11.8.1 方式

    • 特征选择

      • 数据中包含冗余或无关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征

      • 方法

        • Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联

          • 方差选择法:低方差特征过滤

            • 删除低方差的一些特征

            • 特征方差小:某个特征大多样本的值比较相近

            • 特征方差大:某个特征很多样本的值都有差别

            • API

              • sklearn.feature_selection.VarianceThreshold(threshold = 0.0)
          • 相关系数

            • 实现方式

              • 皮尔逊相关系数

                • 反映变量之间相关关系密切程度的统计指标

                • API

                  • from scipy.stats import pearsonr
              • 斯皮尔曼相关系数

                • 反映变量之间相关关系密切程度的统计指标

                • API

                  • from scipy.stats import spearmanr
        • Embedded (嵌入式):算法自动选择特征(特征与目标值之间的关联)

          • 决策树:信息熵、信息增益
          • 正则化:L1、L2
          • 深度学习:卷积等
    • 主成分分析PCA

      • 高维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量

      • 作用

        • 数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息
      • 应用

        • 回归分析
        • 聚类分析
      • API

        • sklearn.decomposition.PCA(n_components=None)

          • 将数据分解为较低维数空间

          • n_components

            • 小数:表示保留百分之多少的信息
            • 整数:减少到多少特征
          • PCA.fit_transform(X) X:numpy array格式的数据[n_samples,n_features]

          • 返回值:转换后指定维度的array

    11.9 案例:探究用户对物品类别的喜好细分降维

    11.10 算法选择

    在这里插入图片描述

  • 相关阅读:
    JMeter笔记9 | JMeter参数化
    【Rust】4 一文讲解重点 pattern matching | trait | 生命周期 | 闭包 | 迭代器 | 智能指针 | 并发与并行
    Linux硬盘掉了手动挂载的解决方案
    【Git】安装和常用命令的使用与讲解及项目搭建和团队开发的出现的问题并且给予解决
    计算机网络 5 - 链路层
    《uni-app》一个非canvas的飞机对战小游戏实现-敌机模型实现
    利用向导创建MFC
    VUE3中 reacitive源码理解
    netty系列之:channel和channelGroup
    旭日图超越了传统的饼图和圆环图,能表达清晰的多层级和归属关系
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126170299
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号