元数据是“关于数据的数据”,存在于电子信息环境中,用于描述资源的属性,呈现其关系,支持资源发现、管理与有效利用(徐筱红,2006),是对所采集到的数据的说明。一般来说,它有两方面的用途:首先,元数据能提供基于用户的信息,如记录数据项的业务描述信息的元数据能帮助用户使用数据;其次,元数据能支持系统对数据的管理和维护,如关于数据项存储方法的元数据能支持系统以最有效的方式访问数据。具体来说,在塔里木河流域生态环境动态监测及辅助决策支持系统综合数据库系统中,元数据机制主要支持以下几类系统管理功能:①描述哪些数据在综合数据库中;②定义要进入数据库中的数据和从数据库中产生的数据;③记录并检测系统数据一致性的要求和执行情况;④衡量数据质量。
(一)元数据分级与特征
1.元数据分级
基本元数据:提供地理数据源基本文档所需要的最少的元数据元素集。
完全元数据:提供完整的地理数据源(单独的数据集、数据集系列、各种地理要素)文档所需要的必选的和可选的元数据元素集。它完整地定义全部元数据,以便标识、评价、摘录、使用和管理地理信息。
2.元数据特征
(1)名称:赋给元数据实体或元素的标记。
(2)标识码:计算机中使用的定义每个元数据实体和元素的唯一代码。代码结构为:XXXXXX
前2位为元数据子集,2位数字码;中间2位为元数据实体/独立元素,2位数字码;后2位为元数据实体包含的元素,2位数字码。
(3)定义:对元数据实体和元素的说明。
(4)性质:说明元数据实体或元素是否总是出现,或有时出现的描述符。描述符分别为:M-必选;C-一定条件下必选;O-可选。
(5)条件:说明何种条件下元数据子集、实体或元素是必选的。如果对所说明的条件成立,那么该子集、实体或元素就是必选的。
(6)最大出现次数:指定元数据实体或元素在实际使用时,可能重复出现的最大次数。只出现一次的表示为“1”,重复出现的表示为“N”。
(7)数据类型:表示元数据元素的一组不同的值,例如,“文本”、“整型”、“短语”、“坐标串”、“实型”和“日期”。
(8)值域:指定每个元数据元素的取值范围。“任意长文本”表示所述内容不受限制,实型数和基于代码的整型数等只能使用一个限定的(闭合的)值域内的值。
(二)元数据库主要内容
塔里木河流域生态环境动态监测系统的元数据包括数字影像图、数字栅格图、数字高程模型、数字线划图等。大部分数据都有相应的国家或行业元数据标准规范,有国家或行业标准的按照标准规范采集;没有规范的,按照元数据的分级特征进行定义。主要包括有关数据源、数据分层、成果归属、空间参照系、数据质量(包含数据精度和数据评价)、数据更新、图幅接边等方面的信息(周骋等,2006)。其主要内容描述如下:
(1)标识信息:是唯一标识数据集的元数据信息。包括数据集名称、发布时间、版本、语种、摘要、现状、空间范围(地理范围、时间范围)、表示方式、空间分辨率、信息类别。
(2)数据质量信息:是数据集质量的总体评价。包括数据集内容完整性说明、数据集在概念、值域、格式和拓扑关系等方面的一致性程度、位置精度(空间位置绝对精度和相对精度)、时间精度(表示时间的精确程度、现势性、有效性)、属性精度(数据集属性分类正确性、属性值的精度和正确性)、数据质量保证措施。
(3)数据字典信息:包含数据集应用、数据源及生产数据集时所用工艺方法等信息。
(4)空间参照系信息:数据集使用的空间参照系统的说明。包括基于地理标识的空间参照系统、基于坐标的空间参照系统。
(5)内容信息:描述数据集的主要内容。包括主要要素类型名称及相应的属性名称、影像数据集内容概述(波长、波段、灰阶等级、合成处理方式)、栅格数据集内容概述(格网尺寸、格网尺寸单位、格网行列数、格网起始点坐标)。
(6)元数据参考信息:包括元数据发布或更新的时间,以及建立元数据单位的联系信息。
以上6类由两个公共数据类型联系,公共数据类型包括:
(1)覆盖范围信息:数据集的空间范围(经纬度坐标、地理标识符)、时间范围(起始时间、终止时间)、垂向范围(最小垂向坐标值、最大垂向坐标值、计量单位)。
(2)负责单位联系信息:与数据集有关的单位标识(负责单位名称、联系人、职责)和联系信息(电话、传真、通信地址、邮政编码、电子信箱地址、网址)。
(三)元数据入库
元数据信息是一个纯文本文件,在生产时采集了多项数据,它是与图形数据、属性数据紧密联系在一起的,按照每幅图一个文本文件存储。为了实现数据库系统中元数据与数据体的集成化管理,以及元数据与数据体的一体化相互检索查询,需将元数据信息空间化。采取的技术方法就是将元数据文件与图幅结合表联系起来,将每一幅图形的区域作为一个目标对象,所采集的多项元数据信息作为其属性项,构成一个以图幅结合表为基础的矢量格式元数据集。同图形数据坐标系统一样,元数据采用地理坐标系统,整个流域则以Coverage格式整体存储,数据处理完成后全部导入到Oracle9i数据库中。
数据挖掘中最易栽的几个大坑
对与数据分析初学者来说,总会多多少少犯一些错误,本文总结了数据挖掘中最容易出现的错误,提出相应的解决方法,在此与大家分享。
0缺乏数据(Lack Data)
对于分类问题或预估问题来说,常常缺乏准确标注的案例。
例如:
欺诈侦测(Fraud Detection):在上百万的交易中,可能只有屈指可数的欺诈交易,还有很多的欺诈交易没有被正确标注出来,这就需要在建模前花费大量人力来修正。
信用评分(Credit Scoring):需要对潜在的高风险客户进行长期跟踪(比如两年),从而积累足够的评分样本。
1太关注训练(Focus on Training)
就象体育训练中越来越注重实战训练,因为单纯的封闭式训练常常会训练时状态神勇,比赛时一塌糊涂。
实际上,只有样本外数据上的模型评分结果才真正有用!(否则的话,直接用参照表好了!)
例如:
癌症检测(Cancer detection):MD Anderson的医生和研究人员(1993)使用神经网络来进行癌症检测,惊奇地发现,训练时间越长(从几天延长至数周),对训练集的性能改善非常轻微,但在测试集上的性能却明显下降。
机器学习或计算机科学研究者常常试图让模型在已知数据上表现最优,这样做的结果通常会导致过度拟合(overfit)。
解决方法:
解决这个问题的典型方法是重抽样(Re-Sampling)。重抽样技术包括:bootstrap、cross-validation、jackknife、leave-one-out…等等。
2只依赖一项技术(Rely on One Technique)
这个错误和第10种错误有相通之处,请同时参照其解决方法。没有对比也就没有所谓的好坏,辩证法的思想在此体现无遗。
“当小孩子手拿一把锤子时,整个世界看起来就是一枚钉子。”要想让工作尽善尽美,就需要一套完整的工具箱。
不要简单地信赖你用单个方法分析的结果,至少要和传统方法(比如线性回归或线性判别分析)做个比较。
研究结果:
按照《神经网络》期刊的统计,在过去3年来,只有1/6的文章中做到了上述两点。也就是说,在独立于训练样本之外的测试集上进行了开集测试,并与其它广泛采用的方法进行了对比。
解决方法:
使用一系列好的工具和方法。(每种工具或方法可能最多带来5%~10%的改进)。
3提错了问题(Ask the Wrong Question)
一般在分类算法中都会给出分类精度作为衡量模型好坏的标准,但在实际项目中我们却几乎不看这个指标。为什么?因为那不是我们关注的目标。
(1)项目的目标:一定要锁定正确的目标
例如:
欺诈侦测(关注的是正例)(Shannon实验室在国际长途电话上的分析):不要试图在一般的通话中把欺诈和非欺诈行为分类出来,重点应放在如何描述正常通话的特征,然后据此发现异常通话行为。
(2)模型的目标:让计算机去做你希望它做的事
大多数研究人员会沉迷于模型的收敛性来尽量降低误差,这样让他们可以获得数学上的美感。但更应该让计算机做的事情应该是如何改善业务,而不是仅仅侧重模型计算上的精度。
4只靠数据来说话(Listen (only) to the Data)
“让数据说话”没有错,关键是还要记得另一句话:兼听则明,偏听则暗!如果数据+工具就可以解决问题的话,还要人做什么呢?
(1)投机取巧的数据:数据本身只能帮助分析人员找到什么是显著的结果,但它并不能告诉你结果是对还是错。
(2)经过设计的实验:某些实验设计中掺杂了人为的成分,这样的实验结果也常常不可信。
5使用了未来的信息(Accept Leaks from the Future)
看似不可能,却是实际中很容易犯的错误,特别是你面对成千上万个变量的时候。认真、仔细、有条理是数据挖掘人员的基本要求。
预报(Forecast)示例:预报芝加哥银行在某天的利率,使用神经网络建模,模型的准确率达到95%。但在模型中却使用了该天的利率作为输入变量。
金融业中的预报示例:使用3日的移动平均来预报,但却把移动平均的中点设在今天。
解决方法:
要仔细查看那些让结果表现得异常好的变量,这些变量有可能是不应该使用,或者不应该直接使用的。
给数据加上时间戳,避免被误用。
6抛弃了不该忽略的案例(Discount Pesky Cases)
到底是“宁为鸡头,不为凤尾”,还是“大隐隐于市,小隐隐于野”?不同的人生态度可以有同样精彩的人生,不同的数据也可能蕴含同样重要的价值。
异常值可能会导致错误的结果(比如价格中的小数点标错了),但也可能是问题的答案(比如臭氧洞)。所以需要仔细检查这些异常。
研究中最让激动的话语不是“啊哈!”,而是“这就有点奇怪了……”
数据中的不一致性有可能会是解决问题的线索,深挖下去也许可以解决一个大的业务问题。
例如:
在直邮营销中,在对家庭地址的合并和清洗过程中发现的数据不一致,反而可能是新的营销机会。
解决方法:
可视化可以帮助你分析大量的假设是否成立。
7轻信预测(Extrapolate)
依然是辩证法中的观点,事物都是不断发展变化的。人们常常在经验不多的时候轻易得出一些结论。即便发现了一些反例,人们也不太愿意放弃原先的想法。
维度咒语:在低维度上的直觉,放在高维度空间中,常常是毫无意义的。
解决方法:
进化论。没有正确的结论,只有越来越准确的结论。
8试图回答所有问题(Answer Every Inquiry)
有点像我爬山时鼓励自己的一句话“我不知道什么时候能登上山峰,但我知道爬一步就离终点近一步。”
“不知道”是一种有意义的模型结果。
模型也许无法100%准确回答问题,但至少可以帮我们估计出现某种结果的可能性。
9随便地进行抽样(Sample Casually)
(1)降低抽样水平。例如,MD直邮公司进行响应预测分析,但发现数据集中的不响应客户占比太高(总共一百万直邮客户,其中超过99%的人未对营销做出响应)。于是建模人员做了如下抽样:把所有响应者放入样本集,然后在所有不响应者中进行系统抽样,即每隔10人抽一个放入样本集,直到样本集达到10万人。但模型居然得出如下规则:凡是居住在Ketchikan、Wrangell和Ward Cove Alaska的人都会响应营销。这显然是有问题的结论。(问题就出在这种抽样方法上,因为原始数据集已经按照邮政编码排序,上面这三个地区中不响应者未能被抽取到样本集中,故此得出了这种结论)。
解决方法:“喝前摇一摇!”先打乱原始数据集中的顺序,从而保证抽样的随机性。
(2)提高抽样水平。例如,在信用评分中,因为违约客户的占比一般都非常低,所以在建模时常常会人为调高违约客户的占比(比如把这些违约客户的权重提高5倍)。建模中发现,随着模型越来越复杂,判别违约客户的准确率也越来越高,但对正常客户的误判率也随之升高。(问题出在数据集的划分上。在把原始数据集划分为训练集和测试集时,原始数据集中违约客户的权重已经被提高过了)
解决方法:
先进行数据集划分,然后再提高训练集中违约客户的权重。
10太相信最佳模型(Believe the Best Model)
还是那句老话-“没有最好,只有更好!”
可解释性并不一定总是必要的。看起来并不完全正确或者可以解释的模型,有时也会有用。
“最佳”模型中使用的一些变量,会分散人们太多的注意力。(不可解释性有时也是一个优点)
一般来说,很多变量看起来彼此都很相似,而最佳模型的结构看上去也千差万别,无迹可循。但需注意的是,结构上相似并不意味着功能上也相似。
解决方法:
把多个模型集装起来可能会带来更好更稳定的结果。