HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    gap statistic(gapstatistic k值)

    发布时间:2023-05-24 15:32:56     稿源: 创意岭    阅读: 133        

    大家好!今天让创意岭的小编来大家介绍下关于gap statistic的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    只需要输入关键词,就能返回你想要的内容,有小程序、在线网页版、PC客户端和批量生成器jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    官网:https://ai.de1919.comjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    本文目录:jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    gap statistic(gapstatistic k值)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    R语言学习笔记之聚类分析jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    R语言学习笔记之聚类分析jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    使用k-means聚类所需的包:jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    factoextrajb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    cluster #加载包jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    library(factoextra)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    library(cluster)l jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #数据准备
    使用内置的R数据集USArrestsjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #load the datasetjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    data("USArrests")jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #remove any missing value (i.e, NA values for not available)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #That might be present in the datajb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    USArrests <- na.omit(USArrests)#view the first 6 rows of the datajb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    head(USArrests, n=6) jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在此数据集中,列是变量,行是观测值
    在聚类之前我们可以先进行一些必要的数据检查即数据描述性统计,如平均值、标准差等jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    desc_stats <- data.frame( Min=apply(USArrests, 2, min),#minimumjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Med=apply(USArrests, 2, median),#medianjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Mean=apply(USArrests, 2, mean),#meanjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    SD=apply(USArrests, 2, sd),#Standard deviationjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Max=apply(USArrests, 2, max)#maximumjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    )jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    desc_stats <- round(desc_stats, 1)#保留小数点后一位head(desc_stats)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    变量有很大的方差及均值时需进行标准化jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    df <- scale(USArrests)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #数据集群性评估
    使用get_clust_tendency()计算Hopkins统计量jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    res <- get_clust_tendency(df, 40, graph = TRUE)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    res$hopkins_statjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ## [1] 0.3440875jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #Visualize the dissimilarity matrixjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    res$plotjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Hopkins统计量的值<0.5,表明数据是高度可聚合的。另外,从图中也可以看出数据可聚合。jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #估计聚合簇数
    由于k均值聚类需要指定要生成的聚类数量,因此我们将使用函数clusGap()来计算用于估计最优聚类数。函数fviz_gap_stat()用于可视化。jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    set.seed(123)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ## Compute the gap statisticjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    gap_stat <- clusGap(df, FUN = kmeans, nstart = 25, K.max = 10, B = 500)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    # Plot the resultjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    fviz_gap_stat(gap_stat)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    图中显示最佳为聚成四类(k=4)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #进行聚类jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    set.seed(123)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    km.res <- kmeans(df, 4, nstart = 25)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    head(km.res$cluster, 20)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    # Visualize clusters using factoextrajb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    fviz_cluster(km.res, USArrests)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #检查cluster silhouette图jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Recall that the silhouette measures (SiSi) how similar an object ii is to the the other objects in its own cluster versus those in the neighbor cluster. SiSi values range from 1 to - 1:jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    A value of SiSi close to 1 indicates that the object is well clustered. In the other words, the object ii is similar to the other objects in its group.jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    A value of SiSi close to -1 indicates that the object is poorly clustered, and that assignment to some other cluster would probably improve the overall results.jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    sil <- silhouette(km.res$cluster, dist(df))jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    rownames(sil) <- rownames(USArrests)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    head(sil[, 1:3])jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #Visualizejb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    fviz_silhouette(sil)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    图中可以看出有负值,可以通过函数silhouette()确定是哪个观测值jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    neg_sil_index <- which(sil[, "sil_width"] < 0)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    sil[neg_sil_index, , drop = FALSE]jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ##          cluster    neighbor     sil_widthjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ## Missouri    3          2        -0.07318144jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #eclust():增强的聚类分析jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    与其他聚类分析包相比,eclust()有以下优点:jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    简化了聚类分析的工作流程jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    可以用于计算层次聚类和分区聚类jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    eclust()自动计算最佳聚类簇数。jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    自动提供Silhouette plotjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    可以结合ggplot2绘制优美的图形jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #使用eclust()的K均值聚类jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    # Compute k-meansjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    res.km <- eclust(df, "kmeans")jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    # Gap statistic plotjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    fviz_gap_stat(res.km$gap_stat)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    # Silhouette plotfviz_silhouette(res.km)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ##    cluster size ave.sil.widthjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ## 1     1     13      0.31jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ## 2     2     29      0.38jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ## 3     3      8      0.39jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #使用eclust()的层次聚类jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    # Enhanced hierarchical clusteringjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    res.hc <- eclust(df, "hclust") # compute hclustjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    fviz_dend(res.hc, rect = TRUE) # dendrogamjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #下面的R代码生成Silhouette plot和分层聚类散点图。jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    fviz_silhouette(res.hc) # silhouette plotjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ##   cluster size ave.sil.widthjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ## 1    1     19      0.26jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ## 2    2     19      0.28jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ## 3    3     12      0.43jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    fviz_cluster(res.hc) # scatter plotjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #Infosjb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    This analysis has been performed using R software (R version 3.3.2)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    gap statistic(gapstatistic k值)jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    K均值算法jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    代价函数可以定义为各个样本距离所属簇中心点的误差平方和

    K均值算法有一些缺点,例如受初值和离群点的影响每次的结果不稳定、结果 通常不是全局最优而是局部最优解、无法很好地解决数据簇分布差别比较大的情 况(比如一类是另一类样本数量的100倍)、不太适用于离散分类等。但是瑕不掩 瑜,K均值聚类的优点也是很明显和突出的,主要体现在:对于大数据集,K均值 聚类算法相对是可伸缩和高效的,它的计算复杂度是O(NKt)接近于线性,其中N是 数据对象的数目,K是聚类的簇数,t是迭代的轮数。尽管算法经常以局部最优结 束,但一般情况下达到的局部最优已经可以满足聚类的需求。
    其实书中也少讲了缺点,那就是关于k的选择,当维度很高的时候,你很难判断选择k多少比较合适。
    不过书中在算法调优中说了。所谓的调优其是也是变相的说那些缺点。

    K均值算法的调优一般可以从以下几个角度出发。

    (1)数据归一化和离群点处理。
    K均值聚类本质上是一种基于欧式距离度量的数据划分方法,均值和方差大的 维度将对数据的聚类结果产生决定性的影响,所以未做归一化处理和统一单位的 数据是无法直接参与运算和比较的。同时,离群点或者少量的噪声数据就会对均 值产生较大的影响,导致中心偏移,因此使用K均值聚类算法之前通常需要对数据 做预处理。

    (2)合理选择K值。
    K值的选择是K均值聚类最大的问题之一,这也是K均值聚类算法的主要缺 点。实际上,我们希望能够找到一些可行的办法来弥补这一缺点,或者说找到K值 的合理估计方法。但是,K值的选择一般基于经验和多次实验结果。例如采用手肘 法,我们可以尝试不同的K值,并将不同K值所对应的损失函数画成折线,横轴 为K的取值,纵轴为误差平方和所定义的损失函数,如图5.3所示

    由图可见,K值越大,距离和越小;并且,当K=3时,存在一个拐点,就像人 的肘部一样;当K (1,3)时,曲线急速下降;当K>3时,曲线趋于平稳。手肘法认 为拐点就是K的最佳值。
    手肘法是一个经验方法,缺点就是不够自动化,因此研究员们又提出了一些 更先进的方法,其中包括比较有名的Gap Statistic方法[5]。Gap Statistic方法的优点 是,不再需要肉眼判断,而只需要找到最大的Gap statistic所对应的K即可,因此该 方法也适用于批量化作业。在这里我们继续使用上面的损失函数,当分为K簇时, 对应的损失函数记为Dk。Gap Statistic定义为
    Gap(K)=E(logDk)−logDk

    内按照均匀分布随机地产生和原始样本数一样多的随机样本,并对这个随机样本
    做K均值,得到一个Dk;重复多次就可以计算出E(logDk)的近似值。那么Gap(K)有
    什么物理含义呢?它可以视为随机样本的损失与实际样本的损失之差。试想实际 样本对应的最佳簇数为K,那么实际样本的损失应该相对较小,随机样本损失与实 际样本损失之差也相应地达到最小值,从而Gap(K)取得最大值所对应的K值就是最 佳的簇数。根据式(5.4)计算K =1,2,...,9所对应的Gap Statistic

    (3)采用核函数。
    采用核函数是另一种可以尝试的改进方向。传统的欧式距离度量方式,使得K 均值算法本质上假设了各个数据簇的数据具有一样的先验概率,并呈现球形或者 高维球形分布,这种分布在实际生活中并不常见。面对非凸的数据分布形状时, 可能需要引入核函数来优化,这时算法又称为核K均值算法,是核聚类方法的一种 [6]。核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到 高位的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线 性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到 更为准确的聚类结果。

    K均值算法的主要缺点如下。
    (1)需要人工预先确定初始K值,且该值和真实的数据分布未必吻合。
    (2)K均值只能收敛到局部最优,效果受到初始值很大。
    (3)易受到噪点的影响。
    (4)样本点只能被划分到单一的类中。

    ■ K-means++算法
    K均值的改进算法中,对初始值选择的改进是很重要的一部分。而这类算法 中,最具影响力的当属K-means++算法。原始K均值算法最开始随机选取数据集中 K个点作为聚类中心,而K-means++按照如下的思想选取K个聚类中心。假设已经 选取了n个初始聚类中心(0<n<K),则在选取第n+1个聚类中心时,距离当前n个 聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。在选取第一个聚类中 心(n=1)时同样通过随机的方法。可以说这也符合我们的直觉,聚类中心当然是 互相离得越远越好。当选择完初始点后,K-means++后续的执行和经典K均值算法 相同,这也是对初始值选择进行改进的方法等共同点。

    ■ ISODATA算法
    当K值的大小不确定时,可以使用ISODATA算法。ISODATA的全称是迭代自 组织数据分析法。在K均值算法中,聚类个数K的值需要预先人为地确定,并且在 整个算法过程中无法更改。而当遇到高维度、海量的数据集时,人们往往很难准 确地估计出K的大小。ISODATA算法就是针对这个问题进行了改进,它的思想也 很直观。当属于某个类别的样本数过少时,把该类别去除;当属于某个类别的样 本数过多、分散程度较大时,把该类别分为两个子类别。ISODATA算法在K均值 算法的基础之上增加了两个操作,一是分裂操作,对应着增加聚类中心数;二是 合并操作,对应着减少聚类中心数。ISODATA算法是一个比较常见的算法,其缺 点是需要指定的参数比较多,不仅仅需要一个参考的聚类数量Ko,还需要制定3个
    阈值。下面介绍ISODATA算法的各个输入参数。
    (1)预期的聚类中心数目Ko。在ISODATA运行过程中聚类中心数可以变 化,Ko是一个用户指定的参考值,该算法的聚类中心数目变动范围也由其决定。 具体地,最终输出的聚类中心数目常见范围是从Ko的一半,到两倍Ko。
    (2)每个类所要求的最少样本数目Nmin。如果分裂后会导致某个子类别所包 含样本数目小于该阈值,就不会对该类别进行分裂操作。
    (3)最大方差Sigma。用于控制某个类别中样本的分散程度。当样本的分散 程度超过这个阈值时,且分裂后满足(1),进行分裂操作。
    (4)两个聚类中心之间所允许最小距离Dmin。如果两个类靠得非常近(即这 两个类别对应聚类中心之间的距离非常小),小于该阈值时,则对这两个类进行
    合并操作。
    如果希望样本不划分到单一的类中,可以使用模糊C均值或者高斯混合模型, 高斯混合模型会在下一节中详细讲述。

    K均值聚类的迭代算法实际上是一种最大期望算法 (Expectation-Maximization algorithm),简称EM算法。EM算法解决的是在概率模 型中含有无法观测的隐含变量情况下的参数估计问题。
    EM算法只保证收敛到局部最优解

    以上就是关于gap statistic相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。jb8创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司


    推荐阅读:

    ChatGPT智障(智障gary)

    gai骂人(Gai骂人房管所)

    openai国内版(opengapps各版本详细)

    上海4A广告公司(上海4a广告公司有哪些)

    菲律宾读初中(菲律宾上初中)