机器学习--K折交叉验证和非负矩阵分解

1、交叉验证

交叉验证(Cross validation),交叉验证用于防止模型过于复杂而引起的过拟合.有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法。

于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。

交叉验证是一种评估统计分析、机器学习算法对独立于训练数据的数据集的泛化能力(generalize)。
交叉验证一般要尽量满足:

1)训练集的比例要足够多,一般大于一半
2)训练集和测试集要均匀抽样

 

将数据集A随机分为k个包,每次将其中一个包作为测试集,剩下k-1个包作为训练集进行训练。
在matlab中,可以利用:
indices=crossvalind('Kfold',x,k);
来实现随机分包的操作,其中x为一个N维列向量(N为数据集A的元素个数,与x具体内容无关,只需要能够表示数据集的规模),k为要分成的包的总个数,输出的结果indices是一个N维列向量,每个元素对应的值为该单元所属的包的编号(即该列向量中元素是1~k的整随机数),利用这个向量即可通过循环控制来对数据集进行划分。例:
[M,N]=size(data);//数据集为一个M*N的矩阵,其中每一行代表一个样本
    indices=crossvalind('Kfold',data(1:M,N),10);//进行随机分包
    for k=1:10//交叉验证k=10,10个包轮流作为测试集
        test = (indices == k); //获得test集元素在数据集中对应的单元编号
        train = ~test;//train集元素的编号为非test元素的编号
        train_data=data(train,:);//从数据集中划分出train样本的数据
 train_target=target(:,train);//获得样本集的测试目标,在本例中是实际分类情况
        test_data=data(test,:);//test样本集
 test_target=target(:,test);
[HammingLoss(1,k),RankingLoss(1,k),OneError(1,k),Coverage(1,k),Average_Precision(1,k),Outputs,Pre_Labels.MLKNN]=MLKNN_algorithm(train_data,train_target,test_data,test_target);//要验证的算法
 end
//上述结果为输出算法MLKNN的几个验证指标及最后一轮验证的输出和结果矩阵,每个指标都是一个k元素的行向量

 

交叉验证的目的:假设分类器或模型有一个或多个未知的参数,并且设这个训练器(模型)与已有样本数据集(训练数据集)匹配。训练的过程是指优化模型的参数,以使得分类器或模型能够尽可能的与训练数据集匹配。我们在同一数据集总体中,取一个独立的测试数据集。

当用于模型训练的数据量越大时,训练出来的模型通常效果会越好。所以训练集和测试集的划分意味着我们无法充分利用我们手头已有的数据,所以得到的模型效果也会受到一定的影响。

K折交叉验证能充分利用现有的数据。

K倍交叉验证(K>=2)。将样本数据集随机划分为K个子集(一般是均分),将一个子集数据作为测试集,其余的K-1组子集作为训练集;

将K个子集轮流作为测试集,重复上述过程,这样得到了K个分类器或模型,并利用测试集得到了K个分类器或模型的分类准确率。

用K个分类准确率的平均值作为分类器或模型的性能指标。10-倍交叉证实是比较常用的。
优点:每一个样本数据都即被用作训练数据,也被用作测试数据。避免的过度学习和欠学习状态的发生,得到的结果比较具有说服力。

2、

非负矩阵分解(NMF,Non-negative matrix factorization)
NMF的基本思想
  NMF的基本思想可以简单描述为:对于任意给定的一个非负矩阵A,NMF算法能够寻找到一个非负矩阵U和一个非负矩阵V,使得满足 ,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。
NMF问题描述
传统的NMF问题可以描述如下

 

 

论文作者实际的解释是:

  • 非负性会引发稀疏
  • 非负性会使计算过程进入部分分解

 

转载于:https://www.cnblogs.com/bfshm/p/7684525.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阵的低秩逼近是一种大规模矩阵低秩近似表示技术,是从大规模、复杂的数据中 寻求数据潜在信息的一种强有力方法。非负矩阵分解( Nonnegative MatrixFactorization, NMF)) 是矩阵的低秩逼近方法之一,它是指被分解的矩阵和分解结果矩阵的数都 是非负的。由于该方法符合数据的真实物理属性,数据的可解释性强,分解结果能够表 示事物的局部特征,且模型符合人们对于客观世界的认识规律(整体是由局部组成的) 等优点, 模型和算法自提出以来得到了广泛研究和应用,已经被成功地应用到许多领域。 当模型数据的指标集多于两个时,模型数据就可以表示成张量的形式,因此张量可以看 成是向量和矩阵在高维空间的推广。对于张量代数理论及其应用的研究也是近来研究的 一个热点。非负矩阵分解与张量分解理论与应用方面的研究虽然取得了很多成果,但仍 然有一些问题需要进一步解决,如寻找好的非负矩阵分解算法,在线数据模型如何应用 非负矩阵分解非负矩阵分解在具体问题中的进一步应用等。另外,大规模的非负性约 束给所有分解算法带来了求解的困难,影响了非负矩阵分解模型的应用效率,如果取消 一部分非负性约束会提高算法的效率,但得到的特征子空间会如何变化?这也是一个前 人没有进行研究的工作,围绕非负矩阵与张量分解及其应用的研究,本文从几个方面对 于非负矩阵与张量分解进行了以下研究工作: 1. 给出了基于轮换极小化原则的一个非负矩阵分解二次规划模型算法。 借助于内点 罚函数,把子问题的求解转化为一个无约束的二次规划问题模型来求解,再把二次规划 模型求解归结到一个线性方程组的求解,在求解过程中引入了一个降维策略,在一定程 度上降低了问题的求解规模,并给出了算法的收敛性证明,数试验表明算法能够提取 到局部特征且得到的非负矩阵分解算法具有好的收敛性。 2. 研究了基于非负矩阵分解的一个局部图像识别策略和算法,利用非负矩阵分解算 法提取到的残缺测试图像的局部特征进行有效识别,论文主要研究了残缺区域为已知情 况下的局部图像识别问题,并给出相应的数试验。 3. 对于训练集图像数据有缺失的识别问题进行了研究。本文首先对图像数据缺失模 式进行了分类,划分了数据缺失模式的三种类型,给出了三种数据缺失模式下利用非负 矩阵分解算法来提取局部特征的模型,分析了三种模型的特点和计算量,通过数试验 对三种模型提取局部特征能力的进行了比较比较,指出了各种模型的适用于不同实际问山东科技大学博士学位论文 摘要 题时的优缺点。 4.在利用特征子空间进行线人脸识别问题中,当增加或者减少训练样本时,相应地 特征子空间就要发生改变,由于人脸图像数据规模较大,如果对新的训练样本重新进行 特征提取则浪费已有的计算结果和计算资源。 本文给出了一个处理在线人脸识别的算法, 对于训练集增量和减量的情况推导了基于非负矩阵分解的在线迭代公式, 数试验表明, 该算法可以节约一定的计算时间和计算量,且逼近效果与对训练集数据重新计算得到的 结果相比较更好。 5.在非负矩阵分解中,编码矩阵的非负性约束使得算法求解起来速度较慢,并且, 在实际问题中,由于往往只需要部分分解结果(基矩阵)是非负的。如果我们对于矩阵 分解实行部分非负约束,不仅可以提高算法的效率,还可以节省计算和存储资源,但这 时相应的模型和算法会有什么变化,提取到的特征子空间有什么变化?还能不能表示局 部特征?另外,在非负矩阵分解中,提取局部特征的能力是和模型有关系还是和算法有 关系?本文从这些角度进行了一定的研究,得到了一些结论并进行了数试验验证。 6.作为向量和矩阵的推广,张量相当于一个高维的矩阵。由于张量模型可以处理指 标集为多维的数据, 所以在描述实际问题时相比矩阵模型其更能接近于实际问题的属性, 因此能更好地描述实际问题。本文对于Web社区发现,给出了一个基于张量的模型及其 相应的算法。模型考虑了权威,中心,文本三个指标,同矩阵模型相比较,由于 张量模型可以很好地保留模型数据的内在本质特征,得到的社区发现模型结果更准确, 可以有效地防止主题漂流的现象,数试验表明,算法是有效的。 最后, 针对非负矩阵和张量分解研究现状和存在的问题,提出了进一步研究的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值