首页 > 其他分享 >模型 聚类模型

模型 聚类模型

时间:2024-07-20 21:00:43浏览次数:9  
标签:DBSCAN end means 模型 算法 MinPts 聚类

零、写在前面

所谓聚类,就是将样本划分为由类似的对象组成的多个类的过程。聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计、分析和预测;也可以探究不同类之间的相关性和主要差异。

聚类模型中,有一个名词叫簇频繁出现,可以理解为类,一簇就是一类。

聚类一般对对象分类,也可以对指标分类。

一、分类

1.1辨析

聚类和分类的区别:分类是已知类别的,聚类未知。

二、模型/算法

 2.1K-means聚类算法

2.1.1优缺点

优点:

1.算法简单、快速。

2.处理大数据集效率高。

缺点:

1.最后的分类与起始聚类中心的选择有关(对初值敏感)。

2.对孤立点数据敏感。

3.必须事先给出K值。

2.2K-means++算法

K-means++算法是K-means算法的升级版,最主要的不同就是K-means算法选择初始聚类中心的原则。当然也有其他的不同点,乃至有些操作过程不同,不过无关紧要。

K-means算法选择初始聚类中心的原则是:初始的聚类中心之间的距离尽可能的远。

2.2.1探讨K-means++算法:

Q:聚类个数K怎么确定?

A:分几类主要取决于个人的经验与感觉,通常的做法是多尝试几个K值,看分成几类的结果更好解释,更符合分析目的。

Q:数据的量纲不一致怎么办?

A:如果数据的量纲不一样,计算的距离就没有意义。如X1的单位是米,而X2的单位是吨,用距离公式计算出来的单位是\sqrt{m^2t^2},最后算出来的东西没有数学意义。于是要进行标准化处理(规范化处理)newx_i=\frac{x_i-\bar x}{\sigma}。在SPSS中可以进行标准化处理:分析—描述统计—描述—将标准化数据另存为变量。

本算法虽然优化了K-means算法对于孤立点和初值敏感的不足,但仍然需要我们人为指定要分几类,前文也提到过要分几类要依据个人经验和多次操作来判断是否利于解释。

2.3系统(层次)聚类算法

系统(层次)聚类算法不需要人为给定分几类。

系统聚类的合并算法通过计算两类数据点间的距离,对最为接近的两类数据点进行组合,并反复迭代这一过程,直到将所有数据点合成一类,并生产聚类谱系图。 

2.3.1样本间距离

绝对值距离:用于网状图

欧式距离:除了用网状图一般都用这个

minkowski距离

chebyshev距离

马氏距离

2.3.2指标间距离

相关系数

夹角余弦

2.3.3类间距离

如何选择看自己能不能解释的通,每种方法都差不多

重心法

最短距离法

最长距离法

组间平均连接法

组内平均连接法

分几类:先画竖线分类,后解释。怎么更好解释怎么来。

2.3.4需要注意的点 

1.对于一个实际问题要根据分类的目的来选取指标,指标选取的不同分类结果一般也不同。

2.样本间距离定义方式的不同,聚类结果一般也不同。

3.聚类方法的不同,聚类结果一般也不同。最好能通过各种方法找出其中的共性。

4.要注意指标的量纲,量纲差别太大会导致聚类结果不合理。

5.聚类分析的结果可能不令人满意,因为我们所做的是一个数学的处理,对于结果我们要找到一个合理的解释。

2.3.5肘部法则和聚类系数折线图

用来辅助确定K

肘部法则:通过图形大致的估计出最优的聚类数量。

各个类畸变程度之和:各个类的畸变程度等于该类重心与其内部成员位置距离的平方和,假设一共将n个样本划分到K个类中,用C_k表示第个k(k=1,2,...,K),且该类重心的位置记为u_k,那么第k个类的畸变程度为\sum_{i\in C_k}\left | x_i-u_k \right |^2(这里的绝对值符号意义表示为距离,可视为一种广义记号)。

定义所有类的总畸变程度:J=\sum^K_{k=1}\sum_{i\in C_k}\left | x_i-u_k \right |^2J也被称作聚合系数。

聚合系数折线图:横坐标为聚类的类别数K,纵坐标为聚合系数J。  

如何制作聚合系数折线图?

现在SPSS上找到集中计划,找到系数,复制后放到Excel表格内(匹配目标格式),选择降序(阶段数和K相反,K越小,系数越大,为了制作聚合系数折线图,所以先要降序),选中数据后点击插入,点击推荐的图标,选择散点图。

最后得到上图,随后进行分析。

1.根据聚合系数折线图可知,当类别数为5时,折线的下降趋势缓慢,故可将类别数设定为5。

2.从图中可以看出,K值从1到5时,畸变程度变化最大。超过5以后,畸变程度变化显著降低。因此肘部就是K=5,故可将类别数设定为5(选择K=3也能解释)。

2.3.6制作示意图(散点图)

只适用于两、三个指标的情况 

先聚类完成,选择少量指标(两到三个),点击图形,点击图标构造器,拖动散点图/点图,拖动指标到X轴和Y轴(如果有Z轴也拖),拖动聚类结果到设置颜色,点击组/点ID,选择点标签,将对象拖到点ID处,最后双击图表后自己美化。

2.4DBSCAN算法(基于密度的聚类算法)

DBSCAN算法全称具有噪音的基于密度的聚类算法,我们前面学习的K-means++算法和系统聚类算法是基于距离的聚类算法。

DBSCAN算法在聚类前不需要预先指定聚类的个数,生成的类的个数也不确定(和数据有关)。该算法基于密度聚类的概念,即要求聚类空间中的一定区域内包含对象的数目不小于某一给定阈值。该方法能在具有噪声的空间数据库中发现任意形状的类,可将密度足够大的相邻区域连接,能有效处理异常数据。

2.4.1基本慨念

MinPts:中文翻译为最少点

三种数据点:

1.核心点:在半径Eps内含有不小于MinPts数目的点

2.边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内

3.噪音点:既不是核心点也不是边界点的

2.4.2优缺点

优点:

1.基于密度定义,能处理任意形状和大小的簇

2.可在聚类的同时发现异常点

3.与K-means比较起来,不需要输入要划分的聚类个数

缺点:

1.对输入参数Eps和MinPts敏感,确定参数困难

2.当聚类密度不均匀时,由于聚类参数Eps和MinPts是不变的,会导致聚类距离相差很大,聚类质量差

3.当数据量大时,计算密度单元的计算复杂度大

2.5建议

只有两个指标,且散点图表示数据非常的“DBSCAN”,再取使用DBSCAN进行聚类分析。

其他情况下,全部使用系统聚类。

K-means也可以用,用了的话论文能写的东西会比较少。

三、代码/操作

3.1K-means++算法

SPSS实现

打开SPSS—导入数据—Excel(最好在桌面)—分析—分类—(K-均值聚类)K-means聚类(实际上是K-means++聚类)—选择变量和个案标注依据(变量可以理解为指标,个案标注依据可以理解为对象)—选择聚类数—迭代(最大迭代次数,随便输个数,如20)—保存(聚类成员和与聚类中心的距离)—选项(初始聚类中心和每个个案的聚类信息)—确定。

最后获得这些图。

3.2系统聚类算法

SPSS实现:

打开SPSS—导入数据—Excel(最好在桌面)—分析—分类—系统聚类分析—选择变量和个案标注依据(变量可以理解为指标,个案标注依据可以理解为对象)—图(勾选谱系图)—方法(选择聚类方法和区间(计算距离的方法),还可以进行标准化操作(按需))—保存(勾选无)。

最后得到上图(聚类谱系图,又称树状图)。

3.3DBSCAN算法(基于密度的聚类算法)

MATLAB实现

主文件

clc;
clear;
close all;

%% Run DBSCAN Clustering Algorithm

epsilon=0.5;%自己调参数
MinPts=10;%自己调参数
IDX=DBSCAN(X,epsilon,MinPts);%X需要自己输入


%% Plot Results
% 如果只要两个指标的话就可以画图啦
PlotClusterinResult(X, IDX);
title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);

DBSCAN(放在主文件的同一文件夹内)

function [IDX, isnoise]=DBSCAN(X,epsilon,MinPts)

    C=0;
    
    n=size(X,1);
    IDX=zeros(n,1);  % 初始化全部为0,即全部为噪音点
    
    D=pdist2(X,X);
    
    visited=false(n,1);
    isnoise=false(n,1);
    
    for i=1:n
        if ~visited(i)
            visited(i)=true;
            
            Neighbors=RegionQuery(i);
            if numel(Neighbors)<MinPts
                % X(i,:) is NOISE
                isnoise(i)=true;
            else
                C=C+1;
                ExpandCluster(i,Neighbors,C);
            end
            
        end
    
    end
    
    function ExpandCluster(i,Neighbors,C)
        IDX(i)=C;
        
        k = 1;
        while true
            j = Neighbors(k);
            
            if ~visited(j)
                visited(j)=true;
                Neighbors2=RegionQuery(j);
                if numel(Neighbors2)>=MinPts
                    Neighbors=[Neighbors Neighbors2];   %#ok
                end
            end
            if IDX(j)==0
                IDX(j)=C;
            end
            
            k = k + 1;
            if k > numel(Neighbors)
                break;
            end
        end
    end
    
    function Neighbors=RegionQuery(i)
        Neighbors=find(D(i,:)<=epsilon);
    end

end

PlotClusterinResult(放在主文件的同一文件夹内)

function PlotClusterinResult(X, IDX)

    k=max(IDX);

    Colors=hsv(k);

    Legends = {};
    for i=0:k
        Xi=X(IDX==i,:);
        if i~=0
            Style = 'x';
            MarkerSize = 8;
            Color = Colors(i,:);
            Legends{end+1} = ['Cluster #' num2str(i)];
        else
            Style = 'o';
            MarkerSize = 6;
            Color = [0 0 0];
            if ~isempty(Xi)
                Legends{end+1} = 'Noise';
            end
        end
        if ~isempty(Xi)
            plot(Xi(:,1),Xi(:,2),Style,'MarkerSize',MarkerSize,'Color',Color);
        end
        hold on;
    end
    hold off;
    axis equal;
    grid on;
    legend(Legends);
    legend('Location', 'NorthEastOutside');

end

标签:DBSCAN,end,means,模型,算法,MinPts,聚类
From: https://blog.csdn.net/2402_84668171/article/details/140543309

相关文章

  • 知识图谱数据模型
    文章目录RDF图属性图    随着知识图谱规模的日益增长,数据管理愈加重要。一方面,以文件形式保存的知识图谱显然无法满足用户的查询、检索、推理、分析及各种应用需求;另一方面,传统数据库的关系模型与知识图谱的图模型之间存在显著差异,关系数据库无法有效地管......
  • 在 pydantic 模型中包含非验证方法是一种不好的做法吗?
    我正在使用pydantic1.3来验证我正在编写的API的模型。在继承自pydantic.BaseModel的类中包含任意方法是否常见/良好实践?我需要一些与对象,我正在尝试决定是否需要一个“处理程序”类。这些模型正在转换为JSON并发送到我也在编写的一个宁静的服务......
  • 用于检查 Google Gemini 支持的所有 GenerativeAI 模型的 Python 代码是什么?
    作为GenerativeAI世界的新手,我正在尝试加载预先训练的文本生成模型并做一些不起作用的事情。这就是我加载GenerativeAI模型的方式。fromvertexai.generative_modelsimportGenerativeModelgeneration_model=GenerativeModel("gemini-pro")由于它不......
  • 万字长文|LLM大模型基础入门(非常详细)从入门到精通系列之:(三)Transformer 架构
    引言在本文中,我们将介绍并解释基于Transformer的大语言模型的每个步骤。当第一次接触Transformer架构时,我被可用于理解它的大量概念和教程所淹没。一些视频或文章假设了自然语言处理(NLP)概念的先验知识,而另一些则太长且难以理解。为了掌握Transformer架构,我不得不阅......
  • 入局大模型!(非常详细)从入门到精通,值得开发者好好看一看的 AI 入门法!(内附教程)
    今年招聘市场确实是好点了,我发现群友都在讨论,得赶快学点AI大模型。他们有的是想正式转到一些新兴的AI行业,需要系统的学习训练。更多的是想跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。这也可以理解,ChatGPT推出仅一年半的时间,就将生成式AI推......
  • 大模型如何学习知识?
    HowDoLargeLanguageModelsAcquireFactualKnowledgeDuringPretraining?通常认为,LLM在预训练中学习知识。但是LLM对长尾知识的习得很差。有观点认为,Attention的qkv结构是对知识进行抽取(q*k计算attn_score对v加权平均),MLP结构是知识记忆。下面通过实验进行深入分析。创建虚......
  • BRAVE:扩展视觉编码能力,推动视觉-语言模型发展
    视觉-语言模型(VLMs)在理解和生成涉及视觉与文本的任务上取得了显著进展,它们在理解和生成结合视觉与文本信息的任务中扮演着重要角色。然而,这些模型的性能往往受限于其视觉编码器的能力。例如,现有的一些模型可能对某些图像特征视而不见,或者在处理图像时产生视觉幻觉,这些局限严重......
  • 国内20家公司大模型岗位面试经验汇总(淘天/字节/蚂蚁/商汤/美团/夸克/腾讯等)你想去的都
    面试情况投过的公司:淘天,字节,蚂蚁,商汤,美团,夸克,腾讯,minimax,零一万物,阿里控股,潞晨科技,阿里巴巴国际,网易实验室,Momenta。Offer:淘天,字节AML,商汤,蚂蚁,美团,夸克,腾讯混元,天翼云。以下是面经分享淘天【offer】部门:未来生活实验室介绍:淘天集团的大模型研究将主要围绕两个场景展......
  • 生成模型
    AEVAEGAN应用目标生成式任务(生成、重建、超分辨率、风格迁移、补全、上采样等)核心思想生成器G和判别器D的一代代博弈生成器G:生成网络,通过输入生成图像,希望生成的数据可以让D分辨不出来判别器D:二分类网络,将生成器生成图像作为负样本,真实图像作为正样本,希望尽可能分辨出G......
  • 使用Python的Turtle库绘制中国火箭模型,点燃航天梦!
    引言在编程教育中,turtle模块是一个非常受欢迎的图形化编程工具,尤其适合初学者学习和实践。它允许我们通过控制一个可以在屏幕上移动的“小乌龟”来绘制各种形状和图案,从而让编程变得直观且有趣。Turtle库简介turtle是Python标准库的一部分,它提供了一个简单而强大的绘图环......