对于大多数非从业者或者初学者来说,数据仓库(Data Warehousing)与数据挖掘(Data Mining)是很容易混淆的两个概念。有个形象的比喻说:如果把数据仓库比做一个大型的矿坑,那么数据挖掘就是入坑采矿的工作,数据挖掘需要有非常好的数据基础,没有丰富完整的数据,是挖掘不出好内容的。数据仓库可以说是数据挖掘最理想的地基。
笔者从事数据仓库BI行业多年,先给各位简单介绍一下什么是数据仓库。数据仓库
要将非常庞大又复杂的数据转化成有用的信息,首先需要做的是有效率地收集数据,于是数据仓库应运而生。数据仓库是一个环境,而不是一件产品;数据仓库是面向主题的、集成的、相对稳定的、随时间不断变化(不同时间)的数据集合,提供用户用于决策支持的当前和历史数据。数据仓库技术是为了有效的把操作型数据集成到统一的环境中,以提供决策型数据访问的各种技术和模块的总称。
数据仓库的数据全部来源于外部,它本身并不“生产”任何数据,同时自身也不需要“消费”任何数据。在数据架构上面,数据仓库通常采用层次化的模型架构,这种模式成本最低,基础数据和应用指标的一致性最好,以某银行数据仓库逻辑架构设计为代表:
![一个数据仓库转型者眼中的数据挖掘](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
第一层为贴源/标准数据层:这一层为“数据缓冲层”,在这一层中主要保存最原始的贴源数据,有些设计会将数据的清洗及标准化操作也放到这一层中,用以保证不同系统的数据在数据结构标准方面保持统一,如性别、日期、行业代码等。另一些设计则不在这一层对数据进行哪怕最基础的清洗及格式化等工作,确保数据的贴源一致性,由后面的数据需求方自己处理。
第二层为主题数据层:这一层为数据仓库的核心层,涵盖内容包括多个数据来源的数据整合、分类体系和业务实体的统一、不同系统数据关联关系搭建等,形成客户、机构、协议、事件、产品等不同的主题,为后续的数据使用奠定基础。建设数据仓库主题区对于提高竞争力、提高服务性收入并有效规避各种风险有其重要意义。例如:基于客户主题可快速、准确寻找出潜在客户及各类型、资产规模、年龄段客户的资产状况和偏好,从而有效制定营销策略吸引更多客户在银行开办更多的业务,提高营业收入和服务收入;基于机构主题勾勒出我行账务机构及管理机构之间的层级关系,便于内部管理,可从不同角度、不同层级查看机构架设是否合理,查看机构变迁历史;基于协议主题能更清晰明了看出客户的资产变化情况和当前存贷款规模、现状,能更有效规避风险等。
第三层为数据汇总层/数据集市层,在这一层中通常会建立针对某些业务领域作更深层次的指标体系分析。数据集市以主题数据层为基础,但不再面向全行数据,而主要面向部门级业务,并且只面向某个特定的主题,如建设对公数据集市,是为满足对公业务管理需要,支持最新的对公业务管理方针,通过整合对公客户的数据信息,进一步分析对公客户的价值信息,更好的支持公司业务客户营销、管理分析工作的开展。
总而言之数据仓库可以看做一个非常大的数据库,它存储着由各个源头数据库中抽取过来的数据,然后利用这些数据更有效率的给公司的决策者提供决策支持。其中,转换及整合数据的过程是整个数据仓库建立遇到的最大挑战,需要将杂乱的数据按照各主题转换成有用的策略数据是数据仓库的重点。数据仓库通过把所有的数据放在一个地方,方便存取的同时,极大的减少了重复的数据处理和分析,实现数据文件统一出口。
当笔者转型、真正来到一个数据挖掘的团队,在一大堆统计学硕博身边熏陶了一段时间后,我理解的数据挖掘是这个样子的:
数据挖掘
数据挖掘是综合了统计分析、人工智能、机器学习、数据库等诸多方面的研究成果而成,用一个人大统计硕士同事的说法:从某方面来讲其实数据挖掘是从大量的数据中提取隐含在其中的、人们事先未知但又是潜在有用的信息和知识的过程。
数据挖掘的结果是事先未知的,这与固定报表有着本质的区别,虽然固定报表应用模式已经存在很多年,由于其非常简单明了直观的特点,现在依然是各行业内部各级管理人员分析数据应用形态的主力,但固定报表首先得知道报表的样式,这是一个查证假设的过程,而数据挖掘是用来帮助使用者产生假设,用工具帮助使用者做探索。
数据挖掘是一个过程,而不是一个技术,它更偏重于实际应用,所以数据挖掘不能只是知道挖掘算法等技术,更需要实现具体的业务目标,只有落地到现实的业务中才能体现数据挖掘的价值,因此业务目标是数据挖掘的核心。在数据挖掘项目的实现过程中,挖掘出来的数据仅能表示现实世界的一部分,数据和现实世界之间是有差距的,只有业务知识可以弥补这一差距,从业者需要丰富的业务知识才能够解释数据中发现的相关结论,业务知识是数据挖掘的基础,好的数据挖掘者需要有深厚的行业业务功底。
数据挖掘有一个著名的格言论调,我的博士领导也经常提到这段话,数据挖掘项目中最费力的是数据的获取与预处理,其占用整个项目的时间高达60%-80%。在笔者了解的几个项目中实际情况也确实如此。数据预处理的目的是把数据挖掘问题转化为格式化的数据,使各项分析技术挖掘算法更容易去使用它。一般的数据处理有两种办法,一种是将数据转化成完全结构化的基础分析数据,根据对应算法可能需要的数据形式,将数据转化成合格的格式。第二种是将尽可能多的业务问题涉及的数据都涵盖进来,然后找到合适的技术解决方案来实现挖掘的结果。但数据会随着清洗、转换、数据量变化而相应发生变化,这种分析只能是探索性的。因此,即使有一个非常成熟的数据仓库,但数据预处理仍然是必不可少的,它仍然要占用数据挖掘项目一半以上的时间。
数据挖掘的过程同样也是一个不断试验、不断试错的过程,一个正确的模型只有通过不断的试验才能被发现,在数据挖掘的过程中会经常发现一个算法对某一个数据集是合适的,但是对另一个数据集又是不利的,没有一个算法是适合每一个问题的。因此数据挖掘就是一个方法不合适再试用其他方法的过程,但是在有条件的限制约束下,比如业务目标比较稳定、数据变化相对规律的情况下,一个可接受的算法或算法组合是可以解决问题的。 http://www.cda.cn/view/17579.html
数据挖掘与数据仓库之间的关系
数据挖掘可以说是从数据仓库中发现并提取隐藏在其中有用信息的一种过程。数据挖掘就是从大量数据中挖取数据的过程,而数据仓库就是汇集所有相关数据的一个过程,数据仓库为数据挖掘提供了更好的、更广泛的数据源。当然,在有些情况下,数据仓库并没有建立起来,但是数据挖掘工作还是可以依托业务源数据先行的,只是在挖掘数据预处理阶段去整合多个源系统的数据源时可能工作量会增大,效率也肯定不如从数据仓库中取数要高,因为数据仓库中的数据是经过预处理的结构化数据,能够为数据挖掘提供非常好的支持平台,同样数据挖掘也对数据仓库的构建提出了更高的要求,两者是互相促进的。