惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
V
V2EX
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
A
About on SuperTechFans
博客园_首页
L
LangChain Blog
量子位
雷峰网
雷峰网
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Jina AI
Jina AI
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium

博客园 - yiriqing

建立Microsoft SQL Server 2005数据仓库 C#应用访问Microsoft SQL Server 2005分析服务 一步一步学Remoting之一:从简单开始 Programming MS Office 2000 Web Components第二章第一节(第三部分) Programming MS Office 2000 Web Components第二章第一节(第二部分) Programming MS Office 2000 Web Components第四章第六节 Programming Microsoft Office 2000 Web Components 第四章第五节 Programming MS Office 2000 Web Components第四章第三节 Programming MS Office 2000 Web Components第四章第二节 Programming MS Office 2000 Web Components第四章第一节 Programming MS Office 2000 Web Components第三章第三节 Programming MS Office 2000 Web Components第三章第二节 Programming MS Office 2000 Web Components第三章第一节 Programming MS Office 2000 Web Components第二章第三节 Programming MS Office 2000 Web Components第二章第一节 Programming MS Office 2000 Web Components第二章第二节 Programming MS Office 2000 Web Components第一章第三节 Programming Microsoft Office 2000 Web Components第一章第一节 绑定到数据源 Office XP 图表组件
DataMining with Sql 2005
yiriqing · 2007-01-25 · via 博客园 - yiriqing

第一章 数据挖掘简介

    数据挖掘现在得到了越来越多商业机构的关注。现在人们经常说:“我们需要采用数据挖掘工具队我们的客户进行分类”,“数据挖掘能有效的增加客户的满意度”,甚至在说:“我们的竞争对手正在使用数据挖掘技术扩大市场份额——我们应当尽快的赶上去。”

    所以什么是数据挖掘?数据挖掘会给我们带来什么价值?该如何引入商务智能技术解决我们商务活动中的问题?数据挖掘究竟采用了哪些技术?数据挖掘项目的典型生命周期事怎样的?在本章中我们将回答上述的所有问题,并对数据挖掘世界进行较深入的介绍。在本章中我们将会学到如下内容:

  • 数据挖掘的定义
  • 明确哪些商务问题能用数据挖掘技术解决
  • 数据挖掘的任务
  • 采用不同的数据挖掘技术
  • 数据挖掘流程
  • 数据挖掘项目的生命周期
  • 当前的数据挖掘标准
  • 一些数据挖掘的发展方向

什么是数据挖掘

    数据挖掘是商务智能应用的关键组成部分。商务智能技术还包括:联机数据分析系统(OLAP)、企业报表和ETL(数据提取、转换和载入)系统。

    数据挖掘是指采用自动化或半自动化的技术手段,对数据进行分析,并发现数据中隐藏的潜在模式的过程。在过去的十几年中,大量的数据已经被采集并存储在数据库中。这些数据主要来源于商务管理软件,包括:财务系统、ERP系统、客户关系管理系统以及博客系统等。对这些数据的拥有,使企业变得富有数据而知识贫乏。当前,企业的数据量已经变的非常庞大,并且增长迅速,对这些数据的利用也变得越来越不现实。数据挖掘的主要目的是从已有的数据中提取模式,将数据变为知识,以增加数据的内在价值。你可能会问,用SQL从数据中提取知识可能吗?换句话说,你会想知道数据挖掘系统和关系型数据库系统的主要差别是什么呢?让我们看看下面的例子.

    图1.1显示了一个存有中学毕业生的关系型数据表。在数据表中存有性别、智商(IQ)、父母对孩子的鼓励程度、父母的收入、学生对读大学的意向。如果有人问你:是什么因素驱使一个中学毕业生选择读大学的呢?

    你可能会写一个查询,得出有多少男生毕业后上了大学,以及有多少女生毕业后上了大学。你也可能会写一个查询,得出父母的鼓励对孩子是否上大学的影响。那么父母的鼓励对男生的影响呢?父母的鼓励对女生的影响呢?你需要些成百上千的查询来覆盖这些可能的查询组合。对于采用数值形式的数据项[1](比如父母的收入、智商等)将会使分析变的更加困难。这时的查询可能会涉及到该数据项的任意取值区间。试想如果在你的数据表中有成百的数据列呢?你很快就会发现,你将面对一个无法处理的规模庞大的查询组合,来满足可能的查询需求。

    相反采用数据挖掘的方法将使这些问题变得非常的简单。你所需要做的仅仅是选择合适的数据挖掘算法,设置各数据列的使用方式(指:将数据列作为输入项还是预测项)。决策树模型是挖掘父母鼓励程度对学生上大学重要性程度的一个很好的选择。此时,你也可以将学生智商、性别、父母收入以及父母鼓励程度的数据作为输入,将学生上大学的计划作为输出。当决策树算法在扫描数据的时候,它会分析每一个输入项对结果项的影响,从而识别最能有效划分结果项的输入项。这个输入项的不同取值将整个数据集划分为两部分,在这两个数据集中,结果项的取值分布具有最大的差异性。这个过程将在每一个划分子集中重复的递归进行,直到完成整个决策树的构建。当整个训练过程结束后,你可以浏览构建好的决策树,从而识别数据中潜在的模式。

    图1.2表示了由入学计划数据集所生成的决策树。从根节点开始到叶结点的每一条路径,均各自表达了一条规则。现在,我们可以发现学生中智商高于100,并且受到父母鼓励的学生,会有94%的可能性上大学。这样我们就从数据中发现了知识。

    如图1.2所示例,数据挖掘是指通过采用算法(比如:决策树、聚类、关联规则、时间序列等)对数据集中的数据进行分析。这种分析的结果将产生一些模式,这些模式展示了一些有价值的信息。随着所采用挖掘算法的不同,这些模式有多种的表示方式,包括:树、规则、聚集、或一些数学公式的集合。在这些模式中发现的信息,可用于报表中以指导商业策略,或更重要的是进行预测。比如通过前面挖掘出的决策树模型,你可以以很高的准确度预测高校的哪些毕业生将会读大学。


图 1.1 学生数据表


图1.2 决策树

    数据挖掘能为企业提供了很多的商业价值。下面给出了一些我们对数据挖掘感兴趣理由:

  我们已经拥有大量的数据: 在过去的十几年中,硬件的价格(特别是硬盘的价格)飞快的下降。与此同时,企业的应用系统业也已经产生了大量的数据。企业越来越希望能够发现这些数据中的潜在模式,以指导他们的商业策略。

  竞争的加剧: 随着现代市场和分销渠道的采用(比如:互联网和电信),商业竞争越来越激烈。企业正面临全球的竞争,而竞争成败的关键是如何能保持现有的客户,并努力赢得新的客户。数据挖掘为进行这些因素和影响的分析提供了技术手段。

  技术已经成熟: 数据挖掘技术以前只是学术界研究的范畴,但是现在这些技术已经成熟,并逐渐的进入产业应用阶段。目前,数据挖掘的算法越来越精确,越来越高效,越来越能处理复杂的数据。

注:本文翻译自Wiley.Data.Mining.with.SQL.Server.2005
[1] 此处数值形式的数据项指的是非离散的数据项,比如年龄、收入等。

数据挖掘能解决的商务问题

    数据挖掘技术能被用于许多应用领域,解决各种各样的商务问题。下面所列出的是一些能用该技术解决的典型问题:

    流失分析:哪些客户最有可能转向购买竞争对手的产品?目前,电信、银行和保险领域正面对严峻的竞争局面。平均每个电话用户会消耗掉电信公司200美金的市场投入。每个企业都在尽可能的流住更多的客户。影响分析能帮助市场经理理解导致客户流失的原因,提高客户满意度,并最终提高客户忠诚度。

    交叉销售:哪一种商品是客户喜欢购买的?交叉销售对零售商是一个很重要的商业挑战。许多零售商,特别是在线零售商,采用这个特性来增加它们的销售额。比如,如果你到一个在线书店(如亚马逊或BarnesAndNoble.com)去购买书籍,你会注意到这些网站会给你一系列相关书籍的建议。这些建议的提出需要采用数据挖掘的分析手段。

    欺诈识别:某笔保险申请会有欺诈可能吗?保险公司每天需要处理成千上万的保险申请。这使得保险公司无法做到对每一笔申请进行有效的调查。数据挖掘技术能有效帮助保险公司识别在申请中有哪些最有可能存在欺诈行为。

    风险管理:某笔贷款应当批准吗?这是在银行经营过程中经常碰到的问题。数据挖掘技术能为银行提供每笔贷款的风险等级,帮助经理对每一笔申请做出正确的决策。
客户分类:谁是我们的客户?客户分类帮助市场经理理解不同类型的客户,并对不同的客户分类采取不同的营销手段。

    定向广告:对不同的访问者应当在网站上显示何种广告?在线零售商和门户网站希望为它们的客户提供个性化的内容。通过采用数据挖掘技术,对客户网页浏览数据和购物行为数据进行分析,得出相关的模式信息,以此来为自己的客户提供定向广告。

    销售预测:在下周这个门店能卖出多少瓶酒?这个月的库存水平该保持一个什么样的水平?数据挖掘中的预测技术能帮助解决这些与时间相关的问题。

数据挖掘的任务类型

    数据挖掘能用来解决成百上千的商务问题。根据这些问题的内在本质,我们可以将数据挖掘的任务划分为如下的几种类型。

1 分类(Classification)

    分类是数据挖掘应用中最常见的一类问题。通常,象流失分析、风险管理、定向广告等商务问题都会涉及到分类问题。

    分类指根据预测属性的取值不同,将样本划分为不同的分类。每个样本都由一系列的属性构成,其中之一称为分类属性(及预测属性)。分类任务需要寻找一个以分类属性为参数的分类函数。在前面提到的大学计划案例中,分类属性就是“College Plans”属性,该属性有两种取值:Yes和No。为了能得到数据的分类模型,需要用历史数据进行训练,历史数据中需要给出每一个样本的分类值。在数据挖掘算法中需要给定样本目标值的算法,称作指导型算法(supervised algorithms)。

    典型的分类算法包括决策树、神经元网络、Naïve Bayes。

2 聚类(Clustering)

    聚类也被称作分割。它被用于基于样本的属性,识别在样本中存在的分组。在同一分组内的样本具有更多类似的属性值。

    图1.3显示了一个包含有两个属性(年龄和收入)的客户数据集。聚类算法将这些客户划分为3个分割。分割1包含了年轻收入低的客户,分割2包含了中年收入高的客户,分割3包含了老年收入相对较低的客户。
聚类算法是一个非指导型(unsupervised)数据挖掘任务。所有的输入都同样对待,没有一个属性直接用来指导模型的构建。大多数聚类算法在构建模型时,都需要进行多次的迭代直到算法收敛。算法收敛指模型中所有分割的边界都已经趋于稳定。

 

图 1.3 聚类

3 关联规则(Association)

    关联规则是另一类常用的数据挖掘任务。关联规则也被称作购物篮分析。一个典型的基于关联规则的数据挖掘任务是,通过对销售事务表的分析,得出经常出现在同一个购物篮中的商品有哪些。从一般化角度来说,关联规则通常用于识别一些经常出现的商品集合和规则,其识别结果将用于指导交叉销售。

    对关联规则任务来说,每一个商品或(更一般化的)每一个属性/值对,被称作一个项。关联规则任务有两个目标,一个是识别一些项的集合(如商品的集合),一个是识别这些项集之间的关联规则。

    大多数关联规则算法通过多次扫描数据集,得到经常出现的一些项集。而衡量经常出现次数的门槛(及支持度),由用户在进行模型识别前指定。比如,支持度=2%,表示只有那些在购物车中出现频率高于2%的商品组合,将被识别出来进入模型。一个经常出现的项集会表达为 {Product = "Pepsi", Product="Chips", Product = "Juice"}。每一个项集都有一个大小,表示在项集中存在的项的数目。比如,前面的项集的大小为3。
    除了基于支持度识别经常发生的项集外,大多数关联规则算法同时还将识别关联规则。一个关联规则表达为:A, B => C,其中A, B, C都是经常出现的项集。同时每个规则也被赋予了一个概率值,该值在数据挖掘的术语中被称作是可信度(confidence)。在用户进行模型识别前,需要指定关联规则概率值得门槛(概率值小于该门槛的规则将被丢弃)。比如,一个典型的关联规则为:Product = "Pepsi", Product ="Chips" => Product = "Juice" (概率值80%)。这个规则所表达的意思非常直观,当一个客户已经购买了Pepsi和Chips,那么他有80%的可能性会购买juice。图1.4展示了一个产品关联规则的模型。图中每一个节点表示了一种产品,每一条边表示了产品间的关系,边的指向表示了预测的方向。比如,在Milk和Cheese间的边表示了,那些购买了Milk的客户有可能会购买Cheese。

4 回归(Regression)

    回归任务与分类任务很相似。它们之间的主要差异是预测属性(分类属性)为连续变量。回归技术在统计学领域得到了广泛的研究。线形回归(Linear regression)和Logistic回归(logistic regression)是两种最流行的方法。其它的回归技术还包括回归树(regression trees)和神经元网络(neural networks)

    回归任务可以解决很多商务问题。比如,它可以用于基于发行面值、发行方式和发行量,预测债券发行率(coupon redemption rates),或者基于温度、气压和湿度预测风速。

5 预测(Forecasting)

    预测也是一种重要的数据挖掘任务。MSFT的股值明日会是多少?下个月Pepsi的销售量会是多少?预测技术可用以帮助回答这类问题。该算法通常需要输入一个时间序列数据集(比如一个时间属性和一系列的数值属性)。时间序列数据通常含有一系列相邻的样本,这些样本之间存在顺序关系。预测技术在预测过程中,考虑了基本趋势、周期性、噪声滤波等问题的处理。最流行的时间序列处理技术是ARIMA(AutoRegressive Integrated MovingAverage model)
    图1.5中有两条曲线。实心曲线表示了微软股值变化的实际情况,虚线表示了采用ARIMA算法的预测结果。

图 1.4 产品相关性


图 1.5 时间序列

6 序列分析(Sequence Analysis)

    序列分析用于在一系列离散的序列数据间发现模式。一个序列由一系列离散的取值(或状态)构成。比如,一个DNA序列是一个由4种状态(A, G, C和T)组成的很长的序列。一个Web点击序列是由一系列的URL构成的序列。客户的购买活动也可被模型化为一个序列。比如,客户首先买了一台计算机,然后买了一个音箱,最后买了一个网络摄像机(Webcam)。其中的序列数据和时间数据都表达了相邻样本的顺序关系。它们的不同之处在于序列数据是离散的,时间数据是连续的。

    序列分析和关联规则的相似之处在于,它们所用的样本数据中,每一个样本都包含了一个项集或状态集合。其不同之处在于序列分析研究的是项集(或状态)间的转换,而关联规则模型研究的是项集之间的相关性。在序列分析模型中,先购买计算机再购买音箱,和先购买音箱再购买计算机是两种不同的序列。而在关联规则中这两种行为都表达了一个同样的项集{计算机, 音箱}。

    图1.6展示了一个Web点击的序列图。图中每一个节点表达了一个URL分类,每一条边都有一个指向,表达了在URL分类之间的转换关系。每一条转换关系都被赋予了一个数值,表示了从一种类型的URL转向另一种类型URL的概率。

    序列分析是一种相对较新的数据挖掘任务。这种类型的挖掘变得越来越重要的原因,主要来源于它所支撑的两种应用:Web日志分析和DNA分析。目前,已经出现了一些不同的序列分析技术,比如Markov链。研究人员目前正积极的在这个领域寻找新的算法。图1.6展示了从Web点击数据中挖掘出的,在不同类型URL间进行状态转换的关系图。

7 异常分析(Deviation Analysis)

    异常分析用于从样本数据中,发现与其它样本差别很大的异常数据。它也被称作特列识别,用于从以前的观测数据中识别主要的变化。异常分析能被用在很多领域。其中一个最主要的应用领域是信用卡欺诈识别。在几百万的信用卡交易事务中识别异常情况是一件有很大挑战性的工作。其它应用还包括:网络入侵识别、制造事故分析等。

    目前没有用于异常分析的标准技术,目前还处于一个被活跃研究的阶段。通常分析师会在常用算法(如:决策树、聚类或神经元网络)上进行一些改进,以满足异常分析任务的要求。为了能够产生有效的规则,分析师需要对样本集中的异常样本进行过采样(Over Sample)

图 1.6 Web浏览序列

数据挖掘技术

    虽然数据挖掘的名词还比较新,但是很多数据挖掘技术已经存在了很多年了。如果我们了解一下这些技术的起源,我们会发现这些技术都起源于如下三个领域:统计学、机器学习和数据库。

    许多上一节提到的数据挖掘任务,都集中于统计学研究领域。许多数据挖掘算法(包括回归算法、时间序列算法、决策树算法等)都是被统计学专家提出的。回归技术已经有几个世纪的研究历史了,时间序列算法也有几十年了。决策树算法是从19世纪80年代开始研究的,是较新的几种算法之一。

    数据挖掘应用是指采用自动化或半自动化的手段从数据中进行模式识别。一些机器学习算法已经被应用到数据挖掘应用中。神经元网络属于这类学习算法,它在分类(Classification)任务和回归(Regression)任务中有着非常出色的表现,特别是当属性之间的关系呈现非线性特性时。遗传算法也是一种机器学习算法。遗传算法对一组候选目标通过一个选择函数,模拟自然界的遗传和进化原理,从而逐步得到适应性更好的后代(模型)。其中,选择函数用于对候选目标进行筛选,得到下一步的子代。如此循环往复,得到最能满足要求的后代(模型)。遗传算法可以用于分类应用和聚类应用。它也可以和其它算法一起使用,比如帮助神经元网络算法找到最佳的权重。

    数据库是又一种被数据挖掘涉及到的技术。传统的统计工具假设所有的数据都能被同时调入内存。但不幸的是,在现代应用中,全部调入数据在大多数情况下不现实。比如,在一个拥有几百万条记录的数据表中发现相关性规则。而数据库则是处理海量数据的专家。正因为如此,处于实用阶段的关联规则发现算法都来自于数据库的研究成果。目前,也存在一些采用数据库技术,用于处理大数据量下的分类任务和聚合任务的算法,比如微软的聚类算法(Microsoft Clustering algorithm)。

数据流

    数据挖掘是数据仓库技术中的一个关键成员。数据挖掘技术在一个完整的商业场景中是如何发挥作用的呢?图1.7展示了这样一个典型的在业务处理的不同阶段,应用数据挖掘技术的例子。

    企业的业务系统在联机事务处理数据库中存储了大量的事务数据(Transaction Data)。这些事务数据通常通过一个提取、转换和装载过程进入数据仓库。通常情况下,数据仓库所采用的数据结构和OLAP数据库是不同的。一个典型的数据仓库数据结构是星形或雪花形的。这种结构由中心的一个事实表(Fact Table)和周围的维度表构成。在数据仓库存入数据后,就能在此基础上构建OLAP数据立方(Cubes)。

    数据挖掘技术是在企业数据流的什么地方产生作用的呢?首先也是最常见的,是在数据仓库已被清洗过的数据中应用数据挖掘技术。从数据挖掘模型中发掘出的模式,可以通过报表的方式提供给市场经理。通常在小规模的企业中没有数据仓库。如此,人们可以直接在OLTP数据表中进行数据挖掘。这种情况下,最好是将OLTP数据库中的数据表复制一份,到另外一个数据库中进行数据挖掘。

    数据挖掘也可直接用于企业业务系统,以提供预测数据。在企业业务系统中嵌入数据挖掘特征已经变的越来越流行。在一个Web交叉销售的例子中,当客户在Web上加入一种产品到购物篮后,数据挖掘中的预测查询被调用,从而基于相关性分析的结果产生针对该客户的推荐产品。

    数据挖掘也可以在OLAP数据立方上进行。数据立方是一个有着多个指标(Measure)和多个维度(Dimension)的数据库。一个大的维度可能含有几百万个数据成员,数据立方中的元素(Cell)个数是各个维度元素个数的乘积。这对于手工寻找数据中蕴含的模式是不现实的。数据挖掘技术能在一个数据立方上进行模式发现。比如,关联规则算法能用于在销售数据立方中,分析在一段时期内,某区域的客户的购物模式。我们可以用发现的购物模式预测门店销售额和销售利润。另一个例子是聚类分析。数据挖掘能将消费者通过维度的属性和指标聚分割成不同的类型。数据挖掘不仅能从数据立方中发现模式,还能对数据立方进行重新组织。比如,我们可以建立一个新的客户维度,该维度的数据基于来源于聚类分析的结果,表示每个客户属于哪一种识别出的类别,从而进行更有效的分析。

图 1.7 数据流