数据集分类
❶ 机器学习中的数据集合
机器学习中的数据集合
数据集分类
在有监督(supervise)的机器学习中,数据集常被分成2~3个,即:训练集(train set) 验证集(validation set) 测试集(test set)。
训练集用来估计模型,验证集用来确定网络结构或者控制模型复杂程度的参数,而测试集则检验最终选择最优的模型的性能如何。
Ripley, B.D(1996)在他的经典专著Pattern Recognition and Neural Networks中给出了这三个词的定义。
Training set:
A set of examples used for learning, which is to fit the parameters [i.e., weights] of the classifier.
Validation set:
A set of examples used to tune the parameters [i.e., architecture, not weights] of a classifier, for example to choose the number of hidden units in a neural network.
Test set:
A set of examples used only to assess the performance [generalization] of a fully specified classifier.
显然,training set是用来训练模型或确定模型参数的,如ANN中权值等; validation set是用来做模型选择(model selection),即做模型的最终优化及确定的,如ANN的结构;而 test set则纯粹是为了测试已经训练好的模型的推广能力。当然,test set这并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。但实际应用中,一般只将数据集分成两类,即training set 和test set,大多数文章并不涉及validation set。
选择训练集和测试集
其中一个典型的划分是训练集占总样本的50%,而其它各占25%,三部分都是从样本中随机抽取。样本少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法(leave one out)。
数据归一化问题
数据归一化属于数据的预处理。因为sigmoid函数根据不同的变换,输出在0到1或者-1到1之间,因此如果不做归一,就会出现样本输出超出神经网络输出的范围。选择最大的值max和最小值min,做如下变换
x=(x-min)/(max-min)
就是归一化。
需要注意的是max和min不应该直接选择为x中的最大值和最小值。原因是样本只是有限的观测,有可能还有更大或者更小的观测,因此合适的选择应该max选取xmax大一些和min比xmin小一些的。归一化并不总是合适的预处理,因为它不能使分布不对称的样本变得更对称一些,标准化要好一些。另外,有时候主成分分析也能起到降维的作用。
❷ 数据集的原理与分类
从历史上看,这个术语起源于大型机领域,在那里它有一个明确界定的意义,非常接近现代的计算机档案。这个主题是不包括在这里的。
最简单的情况下,只有一个变量,然后在数据集由一列列的数值组成,往往被描述为一个列表。尽管名称,这样一个单数据集不是一套通常的数学意义,因为某一个指定数值,可能会出现多次。通常的顺序并不重要,然后这样数值的集合可能被视为多重集,而不是(顺序)列表。
值可能是数字,例如真正的数字或整数,例如代表一个人的身高多少厘米,但也可能是象征性的数据(即不包括数字),例如代表一个人的种族问题。更一般的说,价值可以是任何类型描述为某种程度的测量。对于每一个变量,通常所有的值都是同类。但是也可能是“遗漏值”,其中需要指出的某种方式。
数据集可以分成类型化数据集与非类型化数据集。
类型化数据集:这种数据集先从基DataSet 类派生,然后,使用XML 架构文件(.xsd 文件)中的信息生成新类。架构中的信息(表、列等)被作为一组第一类对象和属性生成并编译为此新数据集类。可以直接通过名称引用表和列,在VS.NET中可以智能感知元素的类型。
非类型化数据集:这种数据集没有相应的内置架构。与类型化数据集一样,非类型化数据集也包含表、列等,但它们只作为集合公开。需要通过Tables集合引用列。
❸ 数据分类和聚类有什么区别
简单地说,分类(Categorization or Classification)就是按照某种标准给对象贴标签(label),再根据标签来区分归类。
简单地说,聚类是指事先没有“标签”而通过某种成团分析找出事物之间存在聚集性原因的过程。
区别是,分类是事先定义好类别 ,类别数不变 。分类器需要由人工标注的分类训练语料训练得到,属于有指导学习范畴。聚类则没有事先预定的类别,类别数不确定。 聚类不需要人工标注和预先训练分类器,类别在聚类过程中自动生成 。分类适合类别或分类体系已经确定的场合,比如按照国图分类法分类图书;聚类则适合不存在分类体系、类别数不确定的场合,一般作为某些应用的前端,比如多文档文摘、搜索引擎结果后聚类(元搜索)等。
分类的目的是学会一个分类函数或分类模型(也常常称作分类器 ),该模型能把数据库中的数据项映射到给定类别中的某一个类中。 要构造分类器,需要有一个训练样本数据集作为输入。训练集由一组数据库记录或元组构成,每个元组是一个由有关字段(又称属性或特征)值组成的特征向量,此外,训练样本还有一个类别标记。一个具体样本的形式可表示为:(v1,v2,...,vn; c);其中vi表示字段值,c表示类别。分类器的构造方法有统计方法、机器学习方法、神经网络方法等等。
聚类(clustering)是指根据“物以类聚”原理,将本身没有类别的样本聚集成不同的组,这样的一组数据对象的集合叫做簇,并且对每一个这样的簇进行描述的过程。它的目的是使得属于同一个簇的样本之间应该彼此相似,而不同簇的样本应该足够不相似。与分类规则不同,进行聚类前并不知道将要划分成几个组和什么样的组,也不知道根据哪些空间区分规则来定义组。其目的旨在发现空间实体的属性间的函数关系,挖掘的知识用以属性名为变量的数学方程来表示。聚类技术正在蓬勃发展,涉及范围包括数据挖掘、统计学、机器学习、空间数据库技术、生物学以及市场营销等领域,聚类分析已经成为数据挖掘研究领域中一个非常活跃的研究课题。常见的聚类算法包括:K-均值聚类算法、K-中心点聚类算法、CLARANS、 BIRCH、CLIQUE、DBSCAN等。