k- 机器学习_机器学习实战之k-近邻算法(3)---如何可视化数据 - CSDN
  • K-svd算法,个人感觉跟k-means差不多,是k-means的一种扩展,字典D的每一列就相当于k-means的聚类中心。其实球面k-means也是一种特殊的稀疏编码(具体可参考文献《Learning Feature Representations with K-means》...

    k-svd字典学习

    原文地址:http://blog.csdn.net/hjimce/article/details/50810129

    作者:hjimce

    一、字典学习

    字典学习也可简单称之为稀疏编码,字典学习偏向于学习字典D。从矩阵分解角度,看字典学习过程:给定样本数据集Y,Y的每一列表示一个样本;字典学习的目标是把Y矩阵分解成D、X矩阵:


    同时满足约束条件:X尽可能稀疏,同时D的每一列是一个归一化向量。

    D称之为字典,D的每一列称之为原子;X称之为编码矢量、特征、系数矩阵;字典学习可以有三种目标函数形式

    (1)第一种形式:


    这种形式因为L0难以求解,所以很多时候用L1正则项替代近似。

    (2)第二种形式:


    ε是重构误差所允许的最大值。

    (3)第三种形式:

     

    L是一个常数,稀疏度约束参数,上面三种形式相互等价。

    因为目标函数中存在两个未知变量D、X,K-svd是字典学习的一种经典算法,其求解方法跟lasso差不多,固定其中一个,然后更新另外一个变量,交替迭代更新。

    如果D的列数少于Y的行数,就相当于欠完备字典,类似于PCA降维;如果D的列数大于Y的行数,称之为超完备字典;如果刚好等于,那么就称之为完备字典。

    二、k-svd字典学习算法概述

    给定训练数据Y,Y的每一列表示一个样本,我们的目标是求解字典D的每一列(原子)。K-svd算法,个人感觉跟k-means差不多,是k-means的一种扩展,字典D的每一列就相当于k-means的聚类中心。其实球面k-means也是一种特殊的稀疏编码(具体可参考文献《Learning Feature Representations with K-means》),只不过k-means的编码矩阵X是一个高度稀疏的矩阵,X的每一列就只有一个非零的元素,对应于该样本所归属的聚类中心;而稀疏编码X的每一列允许有几个非零元素。

    1、随机初始化字典D(类似k-means一样初始化)

    从样本集Y中随机挑选k个样本,作为D的原子;并且初始化编码矩阵X为0矩阵。

    2、固定字典,求取每个样本的稀疏编码

    编码过程采用如下公式:


    ε是重构误差所允许的最大值。

    假设我们的单个样本是向量y,为了简单起见我们就假设原子只有这4个,也就是字典D=[α1、α2、α3、α4],且D是已经知道的;我们的目标是计算y的编码x,使得x尽量的稀疏。

    (1)首先从α1、α2、α3、α4中找出与向量y最近的那个向量,也就是分别计算点乘:

    α1*y、α2*y、α3*y、α4*y

    然后求取最大值对应的原子α。

    (2)假设α2*y最大,那么我们就用α2,作为我们的第一个原子,然后我们的初次编码向量就为:

    x1=(0,b,0,0)

    b是一个未知参数。

    (3)求解系数b:

    y-b*α2=0

    方程只有一个未知参数b,是一个高度超静定方程,求解最小二乘问题。

    (4)然后我们用x1与α2相乘重构出数据,然后计算残差向量:

    y’=y-b*α2

    如果残差向量y’满足重构误差阈值范围ε,那么就结束,否则就进入下一步;

    (5)计算剩余的字典α1、α3、α4与残差向量y’的最近的向量,也就是计算

    α1*y’、α3*y’、α4*y’

    然后求取最大值对应的向量α,假设α3*y’为最大值,那么就令新的编码向量为:

    x2=(0,b,c,0)

    b、c是未知参数。

    (6)求解系数b、c,于是我们可以列出方程:

    y-b*α2-c*α3=0

    方程中有两个未知参数b、c,我们可以进行求解最小二乘方程,求得b、c。

    (7)更新残差向量y’:

    y’=y-b*α2-c*α3

    如果y’的模长满足阈值范围,那么就结束,否则就继续循环,就这样一直循环下去。

    3、逐列更新字典、并更新对应的非零编码

    通过上面那一步,我们已经知道样本的编码。接着我们的目标是更新字典、同时还要更新编码。K-svd采用逐列更新的方法更新字典,就是当更新第k列原子的时候,其它的原子固定不变。假设我们当前要更新第k个原子αk,令编码矩阵X对应的第k行为xk,则目标函数为:


    上面的方程,我们需要注意的是xk不是把X一整行都拿出来更新(因为xk中有的是零、有的是非零元素,如果全部抽取出来,那么后面计算的时候xk就不再保持以前的稀疏性了),所以我们只能抽取出非零的元素形成新的非零向量,然后Ek只保留xk对应的非零元素项。

    上面的方程,我们可能可以通过求解最小二乘的方法,求解αk,不过这样有存在一个问题,我们求解的αk不是一个单位向量,因此我们需要采用svd分解,才能得到单位向量αk。进过svd分解后,我们以最大奇异值所对应的正交单位向量,作为新的αk,同时我们还需要把系数编码xk中的非零元素也给更新了(根据svd分解)。

    然后算法就在1和2之间一直迭代更新,直到收敛。

    #更新字典第k列,<span style="font-family: Arial, Helvetica, sans-serif;">phi为字典,y为样本集、sparse为上面稀疏编码矩阵X</span>
    def dict_update(phi, matrix_y, matrix_sparse, k):
        indexes = np.where(matrix_sparse[k, :] != 0)[0]#取出稀疏编码中,第k行不为0的列的索引
        phi_temp = phi
        sparse_temp = matrix_sparse
    
        if len(indexes) > 0:
            phi_temp[:, k][:] = 0#把即将更新的字典的第k列先给设置为0
    
            matrix_e_k = matrix_y[:, indexes] - phi_temp.dot(sparse_temp[:, indexes])#取出样本数据中,字典第k列有贡献的值,并求Ek
            u, s, v = svds(np.atleast_2d(matrix_e_k), 1)
    
            phi_temp[:, k] = u[:, 0]
            sparse_temp[k, indexes] = np.asarray(v)[0] * s[0]
        return phi_temp, sparse_temp

    参考文献:

    1、《Learning Feature Representations with K-means》

    2、Restauration parcimonieuse d'unsignal multidimensionnel :algorithme K-SVD

    **********作者:hjimce     联系qq:1393852684    原创文章,转载请保留原文地址、作者信息******************

    展开全文
  • 1.K-Means简介 K均值(K-Means)算法是无监督的聚类方法,实现起来比较简单,聚类效果也比较好,因此应用很广泛。K-Means算法针对不同应用场景,有不同方面的改进。我们从最传统的K-Means算法讲起,然后在此基础上...

    1.K-Means简介

    K均值(K-Means)算法是无监督的聚类方法,实现起来比较简单,聚类效果也比较好,因此应用很广泛。K-Means算法针对不同应用场景,有不同方面的改进。我们从最传统的K-Means算法讲起,然后在此基础上介绍初始化质心优化K-Means++算法,距离计算优化Elkan K-Means算法和大样本情况下Mini Batch K-Means算法。

    K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽可能紧密的连在一起,而让簇间的距离尽量的大,下面我们引入K-Means目标函数。

    假设样本集输入变量为(x1,x2,x3,…,xm),样本集划分为K个簇(C1,C2,C3,…,Ck),则我们的目标是最小化平方误差E。
    E=i=1kxCixμi2 E=\sum _{i=1}^{k} \sum _{x \in C_i}||x-\mu _i||^2
    其中μi是簇Ci的均值向量,也可称作质心,表达式为
    μi=1CixCix \mu _i=\frac{1}{|C_i|}\sum _{x \in C_i}x
    如果直接求解上述最小值的话,那么为NP Hard问题,因此K-Means算法采用启发式的迭代方法。下面我们通过一个简单聚类来介绍K-Means算法迭代过程。

    • 如图(a)所示:表示初始化数据集。
    • 如图(b)所示:假设K=2,随机选择两个点作为类别质心,分别为图中的红色质心和蓝色质心。
    • 如图©所示:分别求样本点xi到这两个质心的距离,并标记每个样本点的类别为距离质心最近的类别。划分得到两个簇C1和C2,完成一次迭代。
    • 如图(d)所示:对标记为红色的点和蓝色的点分别求新的质心。
    • 如图(e)所示:重复图©(d)过程,标记每个样本点的类别为距离质心最近的类别,重新划分得到两个簇C1和C2。
    • 如图(f)所示:直到质心不再改变后完成迭代,最终得到两个簇C1和C2。
      01

    2.K-Means算法流程

    假设输入样本集D=x1,x2,,xmD={x_1,x_2,…,x_m},聚类簇数为K,最大迭代次数为N。输出的簇划分为C=C1,C2,,CmC={C_1,C_2,…,C_m}

    • 从数据集D中随机选择K个样本作为初始的质心向量$ \mu={ \mu_1,\mu_2,\mu_3,…,\mu_k }$。

    • 迭代n=1,2,,Nn=1,2,…,N

      • 划分初始化簇Ct=; t=1,2,,kC_t=\varnothing ;\ t=1,2,…,k
      • 对于i=1,2,,mi=1,2,…,m,计算样本xix_i和各个质心向量μj( j=1,2,,k)\mu_j(\ j=1,2,…,k)的距离dijd_{ij}。将xix_i标记为最小的dijd_{ij}所对应的类别λi\lambda_i,此时更新Cλi=CλixiC_{\lambda i}=C_{\lambda i} \cup{x_i}

      dij=xiμj2 d_{ij}=||x_i-\mu_j||^2

      • 对于j=1,2,,kj=1,2,…,k,对CjC_j中所有样本点重新计算新的质心。

      μj=1CjxCjx \mu_j=\frac{1}{|C_j|}\sum_{x\in C_j}x

      • 如果K个质心向量都不再发生变化,则结束迭代。
    • 输出K个划分簇CCC={C1,C2,C3,,Ck}C=\{C_1,C_2,C_3,…,C_k \}

    对于K-Means算法,首先要注意K值的选择和K个初始化质心的选择。

    • **对于K值的选择:**我们可以通过对数据的先验经验选择合适的K值,如果没有先验条件的话,还可以通过交叉验证选择合适的K值。
    • **对于K个初始化质心:**由于我们采用启发式迭代方法,K个初始化质心的位置选择对最后的聚类结果和运行时间都有较大的影响,最好选择的K个质心不要离得太近。

    3.初始化优化K-Means++

    如果是完全随机的选择, 算法的收敛可能很慢。我们在此介绍K-Means++算法,针对随机初始化质心进行优化,具体算法流程如下所示。

    • 从输入的数据点集合中随机选择一个点作为第一个聚类中心μ1。
    • 对于数据集中的每个点xi,计算与他最近的聚类中心距离。

    D(x)=argminr=1kselectedxiμr2 D(x)=\arg \min_{r=1}^{k_{selected}}||x_i-\mu_r||^2

    • 选择一个数据点作为新的聚类中心,其中D(x)较大的点被选作新的聚类中心的概率较大。
    • 重复上述两步,直到选择出K个聚类中心。然后利用这K个质心来作为初始化质心去运行传统K-Means算法。

    4.距离计算优化Elkan K-Means算法

    传统K-Means算法中,我们每次迭代时都要计算所有样本点到所有质心之间的距离,那么有没有什么方法来减少计算次数呢? Elkan K-Means算法提出利用两边之和大于第三边、两边之差小于第三边的三角形特性来减少距离的计算。

    • 对于一个样本点xx和两个质心μj1,μj2\mu_{j1},\mu_{j2},如果我们预先计算出这两个质心之间的距离D(j1,j2)D(j_1,j_2),如果发现2D(x,j1)D(j1,j2)2D(x,j_1)≤D(j_1,j_2),那么我们便能得到D(x,j1)D(x,j2)D(x,j_1)≤D(x,j_2)。此时我们不再计算D(x,j2)D(x,j_2),也就节省了一步距离计算。
    • 对于一个样本点xx和两个质心μj1,μj2μ_{j1},μ_{j2},我们能够得到D(x,j2)max0,D(x,j1)D(j1,j2)D(x,j_2)≥max{0,D(x,j_1)−D(j_1,j_2)}

    Elkan K-Means迭代速度比传统K-Means算法迭代速度有较大提高,但如果我们的样本特征是稀疏的,或者有缺失值的话,此种方法便不再使用。

    5.大样本优化Mini Batch K-Means算法

    传统的K-Means算法中需要计算所有样本点到所有质心的距离,计算复杂度较高。如果样本量非常大的情况下,比如数据量达到10万,特征在100以上,此时用传统K-Means算法非常耗时。故此针对大样本情况下采用Mini Batch K-Means算法。

    Mini Batch K-Means采用无放回随机采样的方法从样本集中选取部分数据,然后用选取的数据进行传统的K-Means算法训练。然后进行迭代并更新质心,直到质心稳定或达到指定的迭代次数。

    Mini Batch K-Means可以避免样本量太大带来的计算问题,算法收敛速度也能够加快,当然带来的代价就是我们的聚类精确度降低。为增加算法的准确性,我们可以多训练几次Mini Batch K-Means算法,用不同的随机采样集来得到聚类簇,选择其中最优的聚类簇。

    6.Sklearn实现K-Means算法

    我们经常需要通过改变参数来让模型达到聚类结果,具体参数设置可参考sklearn官方教程

    from sklearn.cluster import KMeans
    from sklearn.datasets import load_iris
    import matplotlib.pyplot as plt
    
    #load iris
    iris=load_iris()
    X=iris.data[:,:2]
    print(X.shape)
    #150,2
    
    #plot data
    plt.figure()
    plt.scatter(X[:,0],X[:,1],c='blue',
                marker='o',label='point')
    plt.legend(loc=2)
    plt.show()
    

    02

    # fit data
    kmeans=KMeans(n_clusters=3)
    kmeans.fit(X)
    label_pred=kmeans.labels_
    
    #plot answer
    plt.figure()
    x0 = X[label_pred == 0]
    x1 = X[label_pred == 1]
    x2 = X[label_pred == 2]
    plt.scatter(x0[:, 0], x0[:, 1], c = "red",
                marker='o', label='label0')
    plt.scatter(x1[:, 0], x1[:, 1], c = "green",
                marker='*', label='label1')
    plt.scatter(x2[:, 0], x2[:, 1], c = "blue",
                marker='+', label='label2')
    plt.legend(loc=2)
    plt.show()
    

    03

    7.K-Means算法优缺点

    7.1优点

    • 聚类效果较优。

    • 原理简单,实现容易,收敛速度快。

    • 需要调整的参数较少,通常只需要调整簇数K。

    7.2缺点

    • K值选取不好把握。
    • 对噪音和异常点比较敏感。
    • 采用迭代方法,得到的结果是局部最优。
    • 如果各隐含类别的数据不平衡,则聚类效果不佳。

    8.推广

    更多内容请关注公众号谓之小一,若有疑问可在公众号后台提问,随时回答,欢迎关注,内容转载请注明出处。
    推广

    参考

    展开全文
  • K-L变换-机器学习

    2018-08-26 16:25:08
    K-L变换的理论知识 K-L变换是除了PCA外的另一种常用的特征提取方法,它有很多种形式,最基本的形式跟PCA类似,它跟PCA的不同在于,PCA是一种无监督的特征变换,而K-L变换能够考虑到不同的分类信息,实现有监督的...

    K-L变换的理论知识

    K-L变换是除了PCA外的另一种常用的特征提取方法,它有很多种形式,最基本的形式跟PCA类似,它跟PCA的不同在于,PCA是一种无监督的特征变换,而K-L变换能够考虑到不同的分类信息,实现有监督的特征提取。

    根据随机过程中的KL展开理论,将随机过程描述为无数个正交函数的线性组合,而在模式识别问题中,通常可以将一个样本看成是随机向量的某一次实现结果,所以假设有一d维随机向量x,可以写成一组正交基的线性组合,且它们的模为1:

    对上式变形得到:

                               (初见K-L变换,通常需要先对样本进行零均值化或平移

    假设有用信息就集中在其中的q维上,那么现在我们来尝试用着q维去近似x:

    近似前后样本向量的差向量为:

    考查上述差向量的均方误差(MSE)为:

    其中,变换矩阵是原样本向量x的二阶矩阵(注意,这里还可以是其他矩阵,如协方差矩阵),可以与PCA中比较一下,形式大致相同,但在PCA中使用的变换矩阵是协方差矩阵;

    我们的目的是最小化上述MSE,同PCA中的求解方法,得到下面拉格朗日目标函数:

    对sigma求导并令其等于零,有:

    看到熟悉的面孔了,哈哈,就是的特征值,所以上面要求的均方误差就解开了神秘的面纱:

    分析到这里,应该不难看出,简直跟PCA就是一对双胞胎啊,太像了有木有,其实当K-L变换的变换矩阵为协方差矩阵时,K-L变换就变成了PCA。

    回到使用q维逼近样本向量x的问题上来,通过上面的分析我们知道了,如果想用q维来表示样本向量并使MSE最小化,合理的做法就是:把变换矩阵的特征值从大到小排列,然后选择前q个特征值对应的特征向量就行,此时截断误差能够保证最小,其中中的前q个正交向量就组成了新的特征空间,而原样本向量x在这个新特征空间上的展开系数yi就组成了新的特征向量,这种变换就叫做K-L变换,对于它的其他不同的形式,主要是基于变换矩阵的具体形式。

    可以发现,得到这q个新特征与PCA中的d个主成分是类似的,当对原特征x进行中心化时,K-L变换等价于PCA;

    K-L变换的几个重要性质

    1.变换后得到的新特征满足零均值:

    证明:

    设有如下K-L变换:,其中矩阵A是变换核矩阵;

    对X的变换结果Y球其均值:

    2.K-L变换是一种正交变换;

    3.K-L变换的新特征彼此之间不相关;

    4.K-L变换的新特征向量的二阶矩阵是对角阵,且对角线元素就是原特征的二阶矩阵的特征值;

    证明:


    5.K-L变换是信号的最佳压缩表示,用q维新特征表示原样本特征带来的误差在所有q维正交坐标变换中最小;

    6.用K-L坐标系来表示原数据,意味着熵最小,即样本的方差信息最大程度的集中在较少的维数上;

    K-L变换与PCA的联系与区别

    联系:

    都属于正交变换;

    当对原特征x进行中心化时(即变换矩阵为协方差矩阵),K-L变换等价于PCA;

    PCA是离散K-L变换;

    都可以实现降维变换;

    区别:

    K-L变换可以实现有监督的特征提取,但是PCA的变换是一种无监督的;

    在含义上,K-L变换较广义,PCA较狭义;

    K-L变换可以处理连续和离散情况,而PCA只针对离散情况;

    K-L变换的变换矩阵可以是很多种,如二阶矩阵、协方差矩阵(总体散布矩阵)等,或者说自相关矩阵,而PCA的变换矩阵就是协方差矩阵;

    但是,在一些地方就认为两者是没什么区别的,因为实际应用中不管是协方差矩阵,还是自相关矩阵,其实只是差了个对样本进行均值的平移,但是在PCA中这种平移并不会影响主成分的方向,所以PCA中也通常会先对样本平移,这样看来自相关矩阵就变成了协方差矩阵。

     

    协方差矩阵:

    自相关矩阵:

    其中,是共轭转置矩阵,当为实矩阵时,等价于转置矩阵;

    协方差矩阵和自相关矩阵的关系:

    展开全文
  • 本次文章内容: Coursera吴恩达机器学习课程,第八周编程作业。编程语言是Matlab。 本文只是从代码结构上做的小笔记,更复杂的推导不在这里。算法分两部分进行理解,第一部分是根据code对算法进行综述,第二部分是...

    本次文章内容: Coursera吴恩达机器学习课程,第八周编程作业。编程语言是Matlab。

    本文只是从代码结构上做的小笔记,更复杂的推导不在这里。算法分两部分进行理解,第一部分是根据code对算法进行综述,第二部分是代码。

    本次作业分两个part,第一个是K-Means Clustering algorithm 压缩图片,第二个部分是PCA

    1 K-means Clustering

    Implement the K-means algorithm and use it for image compression. first, start on an example 2D dataset, then use the K-means algorithm for image compression

    part 0: Initialization

                clear ; close all; clc

    Part 1: Find Closest Centroids 

                编写函数findClosestCentroids,计算每个样本与centroid的距离,返回距离最近的点的index。

     Part 2: Compute Means

               编写函数computeCentroids,计算新的centroid。

    Part 3: K-Means Clustering

                 编写函数brunkMeans。迭代max_iters次, 首先从初始点开始initial_centroids,找所有样本点离centroid最近的点,then循环K次,计算新的centroids

    Part 4: K-Means Clustering on Pixels

                将像素信息转换成矩阵,use K-Means to compress an image.

    Part 5: Image Compression

                use the clusters of K-Means to compress an image. 将像素recover并显示出来。

     

    2 Principal Component Analysis

     

    Part 0: Initialization
    clear ; close all; clc

    Part 1: Load Example Dataset

               加载二位数据集,并画出dataset。

    Part 2: Principal Component Analysis

               implement PCA, a dimension reduction technique.先做featureNormalize,之后做PCA。

               PCA的过程是先求covariance matrix,再做SVD得到eigenvector和eigenvalues 。画出reduced向量。

     Part 3: Dimension Reduction

               计算projection后的向量,计算recover的向量,并绘出。

    Part 4: Loading and Visualizing Face Data

               加载face data,并画出100张face。

    Part 5: PCA on Face Data: Eigenfaces

               应用PCA,画出eigenvector的facedata

    Part 6: Dimension Reduction for Faces

               输出 Dimension Reducted.

    Part 7: Visualization of Faces after PCA Dimension Reduction

              recoverData,绘出PCA Dimension Reduction后的data。

     Part 8(a): Optional (ungraded) Exercise: PCA for Visualization

     Part 8(b): Optional (ungraded) Exercise: PCA for Visualization

              应用Kmeans,画出dataset。将PCA应用image visualized.

    展开全文
  • K-means算法 (无监督算法,聚类算法) 1-1 基本流程 一、概念: 二、主要特点: 三、算法流程: kmeans作用:去除奇异值 小结: 1-2 算法效果衡量标准 一、K值确定: 二、轮廓系数: 三、Canopy算法配合初始...
  • 机器学习中,将数据集A 分为训练集(training set)B和测试集(testset)C,在样本量不充足的情况下,为了充分利用数据集对算法效果进行测试,将数据集A随机分为k个包,每次将其中一个包作为测试集,剩下k-1个包...
  • 一、理论准备1.1、图像分割图像分割是图像处理中的一种方法,图像分割是指将一幅图像...1.2、K-Means算法K-Means算法是基于距离相似性的聚类算法,通过比较样本之间的相似性,将形式的样本划分到同一个类别中,K-Mean
  • 初探k-means(Matlab) 俗话说:“物以类聚,人以群分”,聚类分析的目的是:在数据中发现数据对象之间的关系,并将数据进行分组,使得组内的相似性尽...在机器学习中,聚类分析也可以作为其他分析算法的一个预处...
  • (1)K-means简介k-meansalgorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k &lt; n。假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小。 假设有k个群组Si, i=1,2,....
  • K-Means++
  • 机器学习 Androw NG在coursera上的课程学习总结 聚类算法中的k-means
  • 本文将从k-邻近算法的思想开始讲起,使用python3一步一步编写代码进行实战训练。并且,我也提供了相应的数据集,对代码进行了详细的注释。除此之外,本文也对sklearn实现k-邻近算法的方法进行了讲解。实战实例:电影...
  • 机器学习(1) —- 机器学习算法综述 个人博客,欢迎参观: http://www.ioqian.top/about/ 本着拓展知识的态度看了机器学习的一个视频,把自己的理解做个总结,分为3部分 1.机器学习算法分类,主要看分类,...
  • 在无监督学习中,训练样本的标记信息是未知的,我们的目标是通过对无标记训练样本的学习来解释数据的内在性质及规律,为了进一步的数据分析提供基础,此类学习应用最多的就是“聚类”(clustering)。 聚类(clusteri....
  • 从上次SVM之后几节课讲的是学习理论,这块理论性比较深,我得好好消化一下。所以先总结一下第一个无监督的机器学习算法,K-means聚类方法。
  • ____tz_zs学习笔记聚类(Clustering) 顾名思义,就是将相似样本聚合在一起,属于机器学习中的非监督学习 ...层次聚类K-均值聚类算法(K-means Clustering)K-means是机器学习中一个比较常用的算法,属于无监督学...
  • 数据聚类是对于静态数据分析的一门技术,在许多领域内都被广泛地应用,包括机器学习、数据挖掘、模式识别、图像分析、信息检索以及生物信息等。聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集,...
  • 二分k-means算法  二分k-means算法是分层聚类(Hierarchical clustering)的一种,分层聚类是聚类分析中常用的方法。 分层聚类的策略一般有两种: 聚合。这是一种自底向上的方法,每一个观察者初始化本身为一类,...
  • k-折叠交叉验证就是将训练集的1/k作为测试集,每个模型训练k次,测试k次,错误率为k次的平均,然后平均率最小的模型Mi。
  •     k均值(k-means)是一种聚类算法,其工作流程如下:随机选择k个点作为初始质心(质心即簇中所有点的中心),然后将数据集中的每个点分配到一个簇中,具体来讲,为每个点找距其最近的质心,并将其分配给该...
1 2 3 4 5 ... 20
收藏数 170,102
精华内容 68,040
关键字:

k- 机器学习