要写毕业论文了,就按自己的理解方式总结一下,主要是由于觉得现有的书籍和资料要么写的比较晦涩要么写的比较难懂,就按自己的理解慢慢的整理出来,给自己也给需要的朋友一个方便。(逐渐写中,如果发现不好请指出。)

数据挖掘的任务:

分类:基于一个可预测属性把事例分成多个类。典型的分类算法包括决策树算法、神经网络算法和贝叶斯算法

聚类:基于一组属性对事例进行分组,是一种无监督的数据挖掘任务,没有一个属性用于指导模型的构建过程。

回归:类似于分类任务,最大的区别在回归任务中可预测的属性是连续的。线性回归和逻辑回归是最常用的回归算法。其他的回归分类技术包括回归树和神经网络

关联:也称为购物篮分析。用于确定一组项集和规则。

预测:预测技术处理一般的趋势分析、周期分析和噪声过滤。常用的时间序列技术是ARIMA,它代表AutoRegressive Integrated Moving Average模型

序列分析:用来发现离散序列中的模式。序列分析的是状态的转移,关联模型认为客户购物车中的每一个商品都是平等和相互独立的。

偏差分析:是为了找出一些特殊事例。如信用卡欺诈等

数据挖掘的生命周期:

1 数据收集。

2 数据的转换和清理。

1)        数据类型的转换,主要是由于不同的数据挖掘算法更适合于某种数据类型。

2)        连续列的转换。典型的转换是把这些数据分成桶。如把Age分成预定义的5个年龄段。除划分技术外,规范化也是非常流行的连续数据转换技术。规划法通常把值映射到01(或者-11之间)之间的一个数值,确保在分析的时候大的数值不会比小的数值占优势。

3)        分组。为减少模型的复杂性,把许多不同的值(状态)分组。如Software EngineerMechanical Engineer,可以通过一个值Engineer来对各种项目师的职业进行分组

4)        聚集。即对数据进行初步处理,如产生派生列等。如将客户的每个月的电话数进行统计,产生呼叫综述和平均通话时间等。

5)        缺省值处理。

6)        删除孤立点

3 模型建构。必需理解数据挖掘项目的目标和数据挖掘任务的类型。在大多数情况下载构建模型前是不知道哪一种算法是最合适的。算法的精确度依赖于数据的类型

4 模型评估。

5 报告

6 预测

7 应用集成

8 模型管理。由于在许多商业运用中挖掘的模式变化比较频繁。如网上书店中,每天都会有新的书,这意味着关联规则每天都要改变。

OLE DB for DM规范

OLE DB for DM规范是微软公司推出的通用数据挖掘语言,他简化了数据挖掘过程,它使得数据库开发者方便地开发数据挖掘应用。其核心思想是通过利用SQL OLE DB 来将关系概念映射到数据挖掘。在这个规范中,数据挖掘模型是最上层的对象,正如关系表一样。所有针对挖掘模型的操作都是关系类型的操作。预测是在挖掘模型和关系表之间的特殊连接查询。

数据挖掘模型:可以认为数据挖掘模型(或者简称挖掘模型)是一个关系表。他包括键列、输入列和可预测列。一个模型的设定与挖掘算法有关,模型由该数据挖掘算法训练。通过使用指定的挖掘算法和适当的算法参数值,训练一个挖掘模型就是在训练数据集中发现模式。在对模型进行训练之后,数据挖掘模型讲存储模式,这些模式是关于某个数据集的,并且这些模式是由数据挖掘算法发现。如果说关系表是一个存储记录的容器,那么数据挖掘模型就是一个存储模式的容器。

OLE DB:提供了一直访问表格格式数据的标准方法。

数据挖掘的三个步骤:

(1)建立数据挖掘模型(DMM);

(2)利用已用数据和挖掘算法培训挖掘模型;

(3)预测查询。数据挖掘模型从某种意义上可以被视为一个关系表,它包含一些不同数据类型的列,分别为输入列和预测列。 

根据OLE DB for DM规范,用于数据挖掘模型的建立、训练、展示和预测的语法分别如下所示:

1).建立数据挖掘模型的语法:

CREATE MINING MODEL <mining model name>

 (

<Column definitions>

)

USING <Service>[(<service arguments>)]

 

2).训练数据挖掘模型的语法:

INSERT [INTO] <mining model name>

        [ <mapped model columns> ]

<source data query>

3).展示数据挖掘模型的语法:

SELECT * FROM <mining model>.CONTENT

4). 数据挖掘模型用于预测的语法:

SELECT [FLATTENED] <SELECT-expressions>

FROM <mining model name> PREDICTION JOIN

<source data query>

ON <join condition>

[WHERE <WHERE-expression>]

解释与应用举例

(1) 模型创建

因为挖掘模型是一个类似于关系表的容器,所以模型的创建类似于关系表创建语句,并且使用Create命令。示例如下:

Create mining model Membercard_Prediction

(

CustomerId long key,

Gender     text discrete,

Age        long continuous,

Profession text discrete,

Income     long continuous,

HouseOwner text discrete,

memberCard text discrete predict

purchase   table

    (

       productName text key,

       quantity    long continuous

)

)

Using Microsoft_Decision_Trees

对于每一列,不仅指定了数据类型,还知道了列的内容类型,内容类型可以是连续的,也可以是离散的。内容类型向算法指示对列进行建模的正确方法。如果指定了分布信息,算法会运行的更好。如指定Age列服从正态分布:

Age long normal continuous

   如果需要知道一个列为可预测列,只需加关键字 predict,如果有其他的可预测列,此时他将作为其它预测列的输入列,如果不希望他作为其他列的输入列,则可使用关键字Predit_Only。

   MemberCard text discrete predict_only

指定属性间存在的依赖关系,如客户表中的city和state属性,用关键字Related To。

City   text discrete,

State text discrete related to city

有些算法需要提供特定的数据类型和内容类型才能正常工作。例如,Microsoft Naive Bayes 算法的输入不能为连续列,并且不能预测连续值。某些内容类型(如 Key Sequence)只能由特定算法使用。类型说明如下:

Key: 该列唯一地标识一行。在事例表中,键列通常为数值或文本标识符。将内容类型设置为 key 可指示该列不应用于分析,而仅应用于跟踪记录。

Continuous: 此列包含的值表示某一允许中间值的范围中的数值数据。与表示有限、可数数据的离散列不同,连续列表示可缩放度量,且数据可能包含无限数目的小数值。温度列即为连续属性列的示例。

 以下数据类型支持 Continuous 内容类型:Date、Double 和 Long。

Discrete: 离散意味着列包含数值之间没有连续体的有限数量的数值。例如,性别列是一个典型的离散属性列,这是因为该数据表示特定数量的类别。

 离散属性列中的值不能意味着排序,即使这些值为数值也是如此。此外,即使用于离散列的值为数值,也无法计算小数值。电话区号即为数值离散数据的典型示例。

 所有数据挖掘数据类型均支持 Discrete 内容类型。

Discretized: 该列包含表示组或存储桶的值,这些值属于从连续列派生的值。存储桶被视为有序的离散值。

 离散化是将一组连续数据的值放入存储桶的过程,以便得到有限数目的可能值。只能离散数值数据。

 您可以手动离散数据,以确保获取所需的存储桶,还可以使用 SQL Server Analysis Services 中提供的离散方法。某些算法自动执行离散。

 以下数据类型支持 Discretized 内容类型:Date、Double、Long 和 Text。

Microsoft的OLE DB for DM 提供程序包含以下几种离散化方法:

           聚类(cluster)、等面积(equalAreas)、阈值(Thresholds)、自动化(Automatic此方法将会尝试上面的几种离散化方法)。例如用Equal_Areas讲Income列分成5桶。

   Income long discretized(Equal_Areas,5)

也可以通过下面的方式指定:

Income long discretized

上面这种方式使用了默认的离散化方法来将Income分到5个桶中。

(2) 模型训练

模型训练也称为模型处理。在训练阶段中,数据挖掘算法出来输入事例并且分析属性值之间的关系。模型训练玩后,数据挖掘模型的内容以模式的形式保存。数据挖掘模型训练的语法与关系表的Insert 语句是一样的。示例如下:

Insert into MemberCard_Prediciton

(

(

CustomerId ,

Gender,

Age,

Profession,

Income,

HouseOwner,

MemberCard

)

OpenRowset(‘sqloledb’,’myserver’;’mylogin’;’mypwd’;’select CustomerId , Gender, Age, Profession, Income, HouseOwner, MemberCard from customers’)

 

)

如果挖掘模型包含嵌套表,模型训练语法在<Source data query>部分将会有所不同。这时DMX使用在 OLE DB中定义的Data Shaping Servie来创建分层行集。Shap命令类似于连接操作符——基于相关的列连接两个相关的行集。如:

Inert into MarketBasketModel

(

    (

CustomeId,Gender,Income,MemberCard,

Purchases(skip,ProductName,Quantity)

)

OpenRowset(‘MSDataShape’,’data provider=SQLOLEDB’;Server=myserver;UID=mylogin;PWD=mypwd’,

‘shap

{

Select customerId,Gender,Income,MemberCard

from Customers

}

Append

      {

Select customerId,ProductName,Quantity

from Pruchases

}

Related CustomerID to CustomerID

)

As Purchases’

)

(3) 模型预测

预测是指:利用从历史的数据中挖掘出来的模式来发现未知事例的信息。通常采用的做法就是连接挖掘模型这张表和需要预测的数据表,连接的条件是判断这两个表输入列是否相等。

On子句:用于指定挖掘模型与输入表中的列直接的映射关系(即两个)如:

Selecet…

From…

On memberCard_Prediction.age=newCustomer.age and menberCard_Prediction.gender=newCustomer.gender…

Where子句:是一个过滤器,用于现在预测查询返回的记录条数。过滤条件可以在输入列上也可以在预测函数上设置,如:

Where newCustomer.age>30

And PredictProbability(memberCard,’gold’)>0.75

预测查询示例,用于预测客户的会员卡类型:

Select t.customerID,T.lastName,M.memberCard

From MemberCard_Prediction Predicion Join

OpenRowset(‘microsoft.jet.oledb.4.0’,’data source=c:"customer.mdb’,’select * from customers’)as T

On MemberCard_Prediction.gender=T.gender

And MemberCard_Prediction.age=T.age

And MemberCard_Prediction.profession=T.profession

And MemberCard_Prediction.income=T.income

And MemberCard_Prediction.houseOwner=T.houseOwner

Where NewCustomer.age>30

当输入表的列名与挖掘模型的列名完全一样,则可以用一个Natural Prediction Join语句,而不需使用On子句,如:

Select t.customerID,T.lastName,memberCard_Predicion.MemberCard

From MemberCard_Prediction natual predicion Join

OpenRowset(‘microsoft.jet.oledb.4.0’,’data source=c:"customer.mdb’,’select * from customers’)as T

Where NewCustomer.age>30

数据挖掘的算法

这方面我觉得MSDN上写的已经非常明确了,就添加个引用吧。

http://msdn.microsoft.com/zh-cn/library/ms175595(SQL.90).aspx

挖掘模型可以预测值、生成数据摘要并查找隐含的相关性。为帮助您选择用于数据挖掘解决方案的算法,下表给出了可为特定的任务使用哪些算法的建议。

任务

可使用的 Microsoft 算法

预测离散属性。例如,预测目标邮件活动的收件人是否会购买某个产品。

Microsoft 决策树算法

Microsoft Naive Bayes 算法

Microsoft 聚类分析算法

Microsoft 神经网络算法 (SSAS)

预测连续属性。例如,预测下一年的销量。

Microsoft 决策树算法

Microsoft 时序算法

预测顺序。例如,执行公司网站的点击流分析。

Microsoft 顺序分析和聚类分析算法

查找交易中的常见项的组。例如,使用市场篮分析来建议客户购买其他产品。

Microsoft 关联算法

Microsoft 决策树算法

查找相似项的组。例如,将人口统计数据分割为组以便更好地理解属性之间的关系。

Microsoft 聚类分析算法

Microsoft 顺序分析和聚类分析算法

 

posted on 2009-03-12 17:15  朝阳  阅读(1374)  评论(0)    收藏  举报