




免费预览已结束,剩余44页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 使用SQL Server进行数据挖掘本章将回顾Analysis Services工具集,同时介绍有效创建挖掘模型和分析挖掘模型的技巧。在学习本章之前,读者应该已经熟悉了第3章介绍的模型构建的概念,而且对挖掘结构、挖掘模型、挖掘模型列、事例表和嵌套表的概念也有了较深入的理解。对于初学者来说,本章可以帮助他们入门,对于有一定SQL Server数据挖掘经验的用户来说,本章可以为他们提供一些技术,以帮助他们最有效地发挥该工具集的作用。但是这并不意味着本章可以取代产品的帮助文档中优秀的帮助和教程。更确切地说,本章讲述如何使用Analysis Services提供的通用工具,特别是用于数据挖掘的工具。本章将通过用户界面来讲述如何使用Analysis Services的功能,并提供详细的操作步骤来示范如何创建一组挖掘模型。本章还将穿插介绍相关的一些概念。如果您偏离这些操作太远,则可以重新开始操作,也可以从本书的Web站点(/go/ data_mining_SQL_2008)上获得完整的项目文件,以便随时使用。本章将会使用附录A描述的MovieClick数据库来举例说明工具的用法。本章将学习: 使用Business Intelligence Development Studio(BI Dev Studio) 理解即时模式和脱机模式 创建及修改数据源、数据源视图和数据挖掘对象 浏览数据和评估模型4.1 BI Dev Studio介绍在使用SQL Server数据挖掘功能的过程中,大部分时间将会花费在商业智能应用程序开发工具集(Business Intelligence Development Studio,BI Dev Studio)上。BI Dev Studio环境已经集成到Microsoft Visual Studio(VS)框架中,为商业智能操作提供了完整的开发环境。在使用Visual Studio时,数据挖掘项目是一组项目中的一部分,这组项目也称为解决方案。数据挖掘项目与应用程序所要求的其他项目可以组合到一个解决方案中。例如,数据库管理员(Database Administrator,DBA)可能创建一个Integration Services项目,这个项目从联机事务处理(OLTP)系统中提取数据,并且把这些数据转换为适合于数据挖掘的形式。然后,分析员可以创建一个Analysis Services项目,这个项目包含浏览事务数据和分析事务数据的模型。最后,应用程序开发人员可以创建一个Web服务和Web站点,在终端用户应用程序和商业化的服务中嵌入这些模型。所有这些项目都可以包含在一个解决方案中,这个解决方案包含所有相互合作完成的工作。而且,这些工作的所有方面都可以通过源控制系统中完整的版本历史来获得。4.1.1 用户界面BI Dev Studio主要是为应用程序开发人员设计的,有一个实现解决方案的非结构化方法,该方法与传统的数据挖掘工具完全不一样。该方法和BI Dev Studio开发环境的复杂性,使得那些熟悉其他数据挖掘工具集的用户感到害怕。然而,开始使用这个工具时,要处理Visual Studio中内置的无数选项和窗口,一旦经历这一段的磨练之后,要创建和分析一个挖掘模型就是非常简单的事。熟悉BI Dev Studio的第一步是理解用户界面各个部分中哪些部分是重要的,并且理解各个部分的作用。图4-1列出了BI Dev Studio的典型窗口布局,其中对各个重要的元素做了标注。图4-1 BI Dev StudioBI Dev Studio最重要的部分如下所示。 解决方案资源管理器:解决方案资源管理器窗口用于管理解决方案和项目。在这个窗口中可以创建和管理所有的对象。要在项目中增加一个对象,可以右击项目名,然后选择“添加新项”,或者右击一个特定文件夹,然后选择“新建”。进行上述操作之后,将会启动一个对话框或向导,创建特定的对象了。 窗口选项卡:通过窗口选项卡可以在设计器窗口之间快速切换。每一个当前打开的文件或者对象都有一个选项卡。如果打开的对象的数目超过了选项卡区域能够容纳的数目,则可以使用选项卡右边的滑动条来浏览其他的窗口。 设计窗口:设计窗口是编辑和分析对象的地方。创建一个新的对象或者在解决方案资源管理器中双击一个对象,将会打开该对象的特定设计窗口,以修改该对象,与该对象交互。 设计选项卡:许多对象都有不同的方面,可以对它们进行编辑或者与它们交互。这些方面在设计器窗口中是通过选项卡来给出的。 属性窗口:属性窗口是一个上下文相关的窗口,它显示当前选择项的属性。属性窗口在Visual Studio中很常见,适用于该开发环境中所执行的任何类型的操作。例如,如果在解决方案资源管理器中选择一个对象,则在属性窗口中将会显示所选对象的属性(比如对象ID、文件名等等)。如果在数据挖掘设计器窗口中选择某一列,则在属性窗口中将会显示列的属性(比如名称和数据类型)。如果所选的项没有属性,则属性窗口将是空的。 BI菜单:BI菜单位于主菜单栏的“调试”菜单和“工具”菜单之间,从中可以找到特定于Analysis Services对象的上下文相关的菜单。例如,如果打开数据源视图(Data Source View,DSV)编辑器,则“格式”菜单和DSV菜单将会在这个区域中显示。 输出窗口:当构建和部署项目时,输出窗口将显示相关的信息。如果项目有错误,则可以在输出窗口中查看关于该错误的描述。注意:要使操作环境更适合自己的数据挖掘任务,可以按照所喜欢的形式重新组织工作空间。单击并且拖动任何窗口的标题栏,可以显示窗口悬浮的图标,以帮助悬浮和停靠窗口。甚至可以将这些窗口彼此叠放,这样,可选择的选项卡将会显示在窗口的下面。在集成开发环境中选择不同的选项时,可能会显示额外的窗口。可以关掉当前不再使用的窗口不要担心,如果需要它们,总是可以从视图菜单中打开它们。如果想使那些窗口易于使用,而且在屏幕空间上运行短暂时间,则可以在窗口的标题栏中单击图钉图标,这样,当不使用这个窗口时,该窗口将会自动隐藏。4.1.2 脱机模式和即时模式BI Dev Studio有两种工作模式:脱机模式和即时模式。具体使用哪一种工作模式有时基于个人的爱好,有时基于个人的需要。每一种模式都有各自的优点和缺点,重要的是,在使用BI Dev Studio时需要理解这两种模式的区别。1. 即时模式对数据挖掘用户来说,工作在即时模式下是很自然的。在即时模式下工作时,就直接并持续地连接到Analysis Services服务器。当打开一个对象(比如挖掘结构)时,是从服务器中打开该对象。当改变了对象并且要保存它时,该对象将直接在服务器上改变。在即时模式下,BI Dev Studio项目是一个到服务器上的数据库的链接。在解决方案资源管理器中,可以看到数据库中的当前所有对象。如果关闭这个项目,然后重新打开它,将会自动重新连接到该数据库。如果上次打开该项目时数据库中的对象已经改变了,则再一次打开它时,还能够看到这些改变。虽然这种模式很直观,也很容易理解,但是在使用时有一些因素还是应该注意的。最重要的是,它是真正的“即时”。如果有一个现成的工作模型,需要修改并保存该模型,那么,这种改变立即进行,并且该模型会变成是未处理的,任何针对该模型的查询都无法执行。除此之外,如果已经打开一个对象,其他用户也可以修改它。如果已经修改了一个对象并且试图保存它,将会看到一个警告,因为保存对象时会覆盖其他用户已经做出的修改。只有关闭对象并且重新打开它时,在服务器上的对象改变才能在项目中反映出来。在数据库中新建或者删除一个对象后,只有在关闭项目并且重新打开它时才能看得到所进行的改变。即时模式相对于脱机模式来说,一个最大的优点是安全性高。如果在即时模式下工作,则该模式允许在单一数据库限定的范围工作,同时允许拥有数据库管理员权限的用户创建和修改对象。下一节将会讲述为什么使用脱机模式要求用户是服务器管理员。2. 在即时模式下使用BI Dev Studio要在即时模式下开始使用BI Dev Studio,则按照下面步骤进行操作:(1) 启动BI Dev Studio。(2) 在“文件”菜单中选择“打开”,然后选择Analysis Services数据库,如图4-2所示的对话框将会出现。(3) 在对话框的相应输入框中输入要连接的服务器名和数据库名。(4) 单击“确定”按钮。如果有服务器管理员的权限,则也可以在服务器上创建新的数据库,所需的操作是选择“创建新数据库”单选按钮,然后指定服务器名和数据库名。图4-2 即时模式下连接到数据库的对话框3. 脱机模式在脱机模式下工作时,项目包含的文件存储在客户机上。在这种环境下修改对象时,所作的修改以XML文档的格式存储在硬盘上。在将一个模型或者对象部署到目标服务器之前,所创建的模型和其他对象不会存储在服务器上,而是存储在客户机上。这样就允许数据挖掘开发人员或者分析员在将模型部署到真正的服务器之前进行一些操作,设计和测试该模型。也可以将这些文件放到源控制系统中,以便跟踪对象元数据的改变,并且在一个开发团队中实现共享。在解决方案资源管理器中右击一个对象,然后选择“查看代码”,就可以查看和编辑这些文件的源代码。当部署一个项目时,BI Dev Studio会对项目中的对象进行验证,并且会创建一个部署脚本,将脚本发送到服务器。部署的基本单位是整个项目,代表整个Analysis Services数据库。当部署一个项目时,这些工具能够部署增量更改。然而,如果在服务器上有一个与项目设置中的数据库同名的数据库,或者如果要部署来自不同计算机的项目,则该部署将会完全覆盖已有的数据库。幸运的是,在覆盖已有数据库之前会弹出一个警告对话框。因为数据库是在部署时创建的,所以,只有服务器管理员才能将脱机模式下的项目部署到服务器上。4. 在脱机模式下使用BI Dev Studio要在BI Dev Studio中开始使用脱机模式,按照下面步骤进行操作:(1) 启动BI Dev Studio。(2) 首先从“文件”菜单中选择“新建”菜单,然后选择“项目”,将会显示如图4-3所示的“新建项目”对话框。(3) 在“项目类型”窗格中打开“其他语言”节点。(4) 选择“商业智能项目”。(5) 从“模板”窗格中选择Analysis Services项目。(6) 指定项目的名称,然后单击“确定”按钮。(7) 首先选择“生成”菜单,然后选择“部署”,将项目部署到服务器,创建数据库。图4-3 “新建项目”对话框默认情况下,项目会部署在local host服务器,也就是说,该服务器与工具在同一台计算机上。为了改变目标服务器,首先选择“项目”,然后选择“属性”,以启动“配置属性管理器”对话框。在这个对话框中,可以创建不同的部署配置,还可以为每一个可能的配置指定目标服务器和数据库的名称,如图4-4所示。图4-4 项目属性对话框在部署的过程中需要注意的其他重要属性是处理选项和部署模式。默认情况下,部署功能自动处理已经创建的对象,或者由于项目的改变而变得无效的对象。处理选项属性控制处理行为。同样,默认情况下只将来自这些工具的增量更改部署到服务器上。如果其他客户已经改变了该数据库,或者在服务器上有一个同名数据库,则默认的部署方式会导致错误。部署模式属性可以控制这种行为。注意:可以设置一个属性来改变默认的部署服务器,默认的部署服务器是每次创建一个新的脱机项目时设置的。如果要改变默认的部署服务器,则需要选择“工具”菜单上的“选项”选项,进入“选项”对话框。在“选项”对话框中,依次选择“商业智能设计器”|“Analysis Service 设计器”|“常规”,然后将默认的目标服务器属性设置为选定的服务器。这个设置只对新创建的项目起作用,所以仍然需要手动修改之前创建的项目。5. 切换项目模式有时需要从一种模式切换为另一种模式,例如,要在另一台计算机上快速更新一个以前部署的项目时,或者要将一个数据库的对象元数据保存到源控制中时。进行这种切换是比较容易的。最容易的切换是将脱机模式切换为即时模式。只要按如下步骤操作:首先打开“文件”菜单,选择“打开”|“Analysis Services数据库”,然后选择以前部署的数据库。相反,如果要将即时模式切换为脱机模式,需要在“新建项目”对话框中创建一个新的项目,并且选择“导入Analysis Services 2008数据库”,如图4-3所示。该操作将启动一个向导,在向导中可以指定服务器和源数据库的名称,并且可以将元数据提取到一个新的项目中。需要指出的是,如有必要,仍然需要设置部署选项来指出目标服务器和数据库的名称。注意:查看解决方案资源管理器中项目的名称,可以确定当前是在即时模式下还是在脱机模式下。如果当前是即时模式,则项目名称后面的圆括号中会有服务器的名称。除此之外,所有的窗口选项卡都会有文本(Online)跟在对象名字的后面。4.1.3 创建数据挖掘对象打开数据库或者项目之后,不管选择哪一种操作模式,在Analysis Services项目里执行的操作都是相似的。如果要进行数据挖掘,则需要指定和描述源数据,然后创建挖掘结构和挖掘模型。4.2 设置数据源Analysis Services中的两个对象数据源和数据源视图(DSV)是数据的接口。数据源实际上是一个连接字符串,用于描述数据的位置,然而,DSV是一个抽象层,DSV能够修改查看数据源的方式,甚至定义一个模式,在以后的某个时候切换实际数据源。本节讨论如何设置这些对象,以便在数据挖掘中使用。4.2.1 数据源数据源是一个非常简单的对象。它只包含一个连接字符串和一些描述如何连接的附加信息。但是,数据源的两个问题可能会成为我们学习的绊脚石,如果不理解它们,则在以后学习的过程中很可能会受到挫折。由于允许在客户端上创建对象,因此这两个问题都将出现,当部署对象时,该对象不能正常工作。第一个问题是数据位置。与大多数数据挖掘产品不一样,SQL Server数据挖掘是一个基于服务器的解决方案。这意味着在设置数据源时,不但客户端(这个客户端是指创建模型的工具所在的计算机)能够访问该数据源,而且服务器(这个服务器是用来处理模型的地方)也能访问该数据源。例如,如果根据C:My DocumentsNorthwind.mdb中的Access数据库构建了一个模型,那么,除非这个文件位于服务器的同一个位置,否则模型将无法处理。即使这个文件恰好存在,也有可能出问题,因为没有办法知道这个文件是否与本地版本包含同样的数据或者同样的模式。通常,当对本地数据进行挖掘时,应该使用SQL Server集成服务(SSIS)把当前的数据移到SQL Server数据库中,然后使用BI Dev Studio构建挖掘模型。第二个问题是安全性。理解用户凭证是非常重要的,用户凭证用来控制从Analysis Services中访问数据。当设置连接时,可以选择使用集成的安全性,也就是说,使用账户凭证来访问数据。也可以考虑选择使用简单的安全性,即要求使用一个指定的用户名和口令来访问数据。只要源数据库支持集成的安全性,则Microsoft通常推荐使用集成的安全性。当连接数据库时,不管源数据库支持什么方法,数据源对象都包含附加信息,这些附加信息能够准确地告诉Analysis Services要使用或者模拟哪一种安全凭证。创建一个数据源对象有4种不同的模拟选项。 使用当前用户的凭证对于通过查询语句来访问的数据源而言,这种方法是最安全的。选择该选项,Analysis Services就使用当前的用户凭证访问远程的数据。但是,在许多的实现方案中,Analysis Services必须将凭证委派给源数据库计算机。为了让委派能够正常工作,需要域管理员对其进行配置。参考有关Kerberos的Windows Server文档可以了解这个问题的更多信息。这种方法不能用于在处理Analysis Services对象时用到的数据源,因为这种方法将会导致不同数据的访问,这取决于是由谁来处理对象。 使用帐户当不选择“使用当前用户的凭证”选项时,“使用帐户”选项是次优选择。“使用帐户”允许指定账户凭证,这个账户凭证将会在访问数据源时使用。凭证包含一个用户名和口令,存储在Analysis Services上,所有对这些数据的访问都使用这个凭证。如果不选择委派,则这个方法是最安全的。 使用服务帐户“使用服务帐户”选项使得所有对这些数据的访问都使用这个账户,该账户也是Analysis Services的账户。使用这种方法主要用于测试,而不用于产品。通常,Analysis Services应该尽可能地在拥有最少权限的账户下运行。 默认值“默认值”选项是指使用不同的凭证,具体依赖于如何访问数据源。如果是为了数据处理而进行访问,则应使用服务账户凭证访问数据。如果是为了数据查询而进行访问,则应使用当前用户凭证访问数据。创建MovieClick数据源要创建一个指向MovieClick数据库的数据源,则按如下步骤进行:(1) 按照附录A中的描述下载MovieClick数据库,然后安装它。(2) 在解决方案资源管理器或者对象资源管理器中右击“数据源”文件夹,然后选择“新建数据源”,以启动数据源向导。(3) 跳过介绍页,在第二页中单击“新建连接”按钮,启动“数据链接”对话框。(4) 输入用于安装数据库的服务器名称,指定安全设置,然后选择MovieClick数据库。(5) 单击“确定”按钮,退出“数据链接”对话框,单击“下一步”,转到模拟信息页。(6) 输入用户名和口令(当访问MovieClick数据库时,Analysis Services将会使用该用户名和口令),然后单击“完成”按钮,关闭向导。4.2.2 使用数据源视图数据源视图(Data Source View,DSV)是数据在客户端的一个抽象视图,这也是建模工作开始的地方。在DSV中,可以选择、组织、浏览以及(在某种意义上来说)操作数据源中的数据。其实,DSV是告诉Analysis Services希望如何查看数据源中的数据。因为对象存在于Analysis Services服务器中,而不是关系数据源中,所以即使对关系数据库服务器只有读的权限,也可以执行这种类型的操作。为数据挖掘目的而创建一个DSV时,要确定的最重要的表是事例表。事例表包含要分析的事例。除此之外,还需要引入一些关系表,比如嵌套表或者查找表,这些表包含事例的附加信息。1. 创建MovieClick数据源视图要从MovieClick数据源中创建一个DSV,则按如下步骤进行:(1) 在解决方案资源管理器或者对象资源管理器中右击“数据源视图”文件夹,然后选择“新建数据源视图”,以启动数据源视图向导。(2) 跳过介绍页,然后在选择数据源向导页中,MovieClick数据源会默认被选中;单击“下一步”继续。(3) 名称匹配页对于导入的数据源不起作用,所以单击“下一步”继续。这一页只有当源数据库中的关系没有指定时才会显示,并且允许基于表的键列来选择如何自动创建关系。因为导入的MovieClick数据库既没有关系也没有键,所以它使用的算法不起作用。(4) 在选择表和视图向导页中,单击按钮,将“可用对象”列表中的所有表移到“包含的对象”列表中。(5) 单击“下一步”按钮继续,然后单击“完成”按钮,退出DSV向导,以显示DSV设计器。(6) 右击MovieGenre表的Movie列,并选译“设置逻辑主键”。(7) 将一个关系从Movies表的Movie列拖动到MovieGenre表的Movies列。连接之后,在设计器窗口中单击右键,然后选择“排列表”,把表排列整齐,更便于观看。完成这些操作之后,DSV应该如图4-5所示。图4-5 完整的MovieClick数据源视图DSV设计器最初显示的是包含在数据源中的表和这些表之间的关系。如果已经熟悉了数据,并且这些数据现在适合于进行数据挖掘,就可以开始创建挖掘模型。但是,如果这些条件没有达到(通常是这样),则可以使用DSV设计器来浏览数据,并且将这些数据改为模型所需要的形式。最初,可以在模式中对表和列进行简单的注释,以便于理解。也可以为这些对象添加描述信息,甚至可以改变对象的名称,使它更便于理解和支持。例如,如果有一个表NWSFY03,可以把它重命名为Fiscal Year 03 Northwest Sales,或者将列014重命名为Quantity。只要选择对象,然后在属性窗口中输入描述和友好的名称即可。除此之外,如果在源数据库中还没有指定表之间的关系,则可以在这里指定。只需从一个表的外键列,将一条关系线拖到另一个表的主键列,就可以完成关系的指定。所有这些修改只发生在DSV中,并且不会以任何方式影响源数据。注意:如果事例表和嵌套表之间的关系不存在于关系数据库中,则必须在DSV中指定该关系,否则将无法将嵌套表添加到模型中。除了可以利用DSV对模式进行注释外,DSV还允许创建命名计算、命名查询和视图,并且在数据透视图(pivot chart)中交互式地浏览数据。2. 使用命名计算在DSV中,命名计算列是表中附加的虚列。这个功能可以在自己的数据中挖掘派生信息,而不需要改变源数据。命名计算列包含一个名称、一个包含计算的SQL表达式和一个可选的描述。计算可以是任何有效的SQL表达式。如果对SQL表达式不熟悉,则可以学习下面的一些表达式类型,这些表达式在许多数据挖掘项目中都会用到。(1) 算术操作标准的SQL支持、/和%(取模)。例如,可以利用下面的公式来创建一个名为Profit的命名计算列:Sales Price Item Cost(2) 数学函数数学函数是非常有用的,特别是当列中的数据不遵循统一分布时。在所有的SQL函数中,ABS、LOG、SIGN和SQRT用得特别多。下面有两个示例。 要以对数的方法来规范化一个以指数级别增加的变量,可以使用如下函数:LOG(Sales Quantity) 要创建一个标志,来指出实际费用是高于预算还是低于预算,可以使用如下函数:SIGN(Actual Expenses Budgeted Expenses)(3) 组合表达式通常,想要测试的假设条件依赖于一个变量,这个变量是已有两个变量的组合。例如,可能对一个人是否结婚或者是否有孩子不感兴趣,但是这两个属性的组合可能提供很有价值的信息。针对这种情况的一个组合表达式如下所示:Marital Status + + Has Children(4) CASE表达式在数据挖掘中,CASE表达式是一种非常灵活的方式,用于创建有意义的变量。CASE表达式允许根据对一个或者多个条件的评估来指派结果。运用CASE可以达到下面的目的:改变值的标签,手动离散化列,减少有效状态的个数,将一个属性从一个嵌套表中转换为一个事例级属性。下面是几个范例。 要改变值的标签,可以使用下面的表达式:CASE CategoryWHEN 1 THEN FoodWHEN 2 THEN BeverageWHEN 3 THEN GoodsEND CASE 要手动离散化列,可以使用下面的表达式:CASEWHEN Age 20 THEN Under 20WHEN Age = 30 THEN Between 20 and 30WHEN Age = 40 THEN Between 30 and 40ELSE Over 40END 要减少有效状态的个数,可以使用下面的表达式:CASE Marital StatusWHEN Married THEN Marital StatusWHEN Never Married THEN Marital StatusELSE OtherEND 要将一个属性从一个嵌套表转换到事例表,可以使用下面的表达式:CASEWHEN EXISTS(SELECT Movie FROM MoviesWHERE Movie=Star Wars ANDMovies.CustomerID=Customers.CustomerID)THEN TrueELSE FalseEND例如,要将一个嵌套表的属性转换为一个事例级属性时,就要执行这个操作。需要指出的是,如果依旧希望在模型中使用嵌套表,则必须使用一个命名查询来过滤来自嵌套表的属性,如下一节所述。3. 在Customers表上创建一个命名计算要创建一个命名计算来离散化并减少Num Bedrooms列中的状态,则进行下面的操作:(1) 右击Customers表,然后选择“创建命名计算”,则会显示一个对话框。(2) 在对话框中输入计算列名Bedrooms,然后输入描述,后面这项输入是可选的。(3) 最后输入下面的表达式:CASEWHEN Num Bedrooms = 1 THEN OneWHEN Num Bedrooms = 4 THEN Four or moreELSE NoneEND(4) 关闭对话框。当关闭上面的对话框时,DSV设计器会验证表达式。如果输入的表达式有错误,将会弹出一个对话框。一旦成功地创建了一个计算列,则可以右击该表,然后选择“浏览数据”来查看计算结果。4. 使用命名查询由于命名计算列是一个DSV表中附加的虚列,所以命名查询是数据源的一个虚拟视图,通过它可以改变正在挖掘的数据,而不会改变原始的数据。即使可以对源数据进行修改,在DSV中直接创建命名查询既快又容易,并且允许在使用模型的地方同时保存这些视图,数据库不会被这种一次性对象“污染”。“创建/编辑命名查询”对话框提供了一种标准的查询构建器用户界面,这个构建器用来辅助创建查询,对于复杂的连接查询很有用。注意,命名查询只能作用于数据库对象,不能作用于其他的DSV对象。对于数据挖掘来说,有用的典型查询是过滤和连接。对挖掘结构列使用内置的case过滤可以完成简单的行过滤,但更高级的过滤情况则需要使用命名查询,如下面这些范例所示。 要从嵌套表中过滤掉不常见的项,可使用这种命名查询:SELECT CustomerID, Movie FROM MoviesWHERE Movie IN(SELECT DISTINCTMovieFROM Movies GROUP BY MovieHAVING COUNT(Movie) 20) 要从一个外表(foreign table)中连接信息,可使用这种命名查询:SELECTCustomers.*, Education.Education LevelFROM Customers JOIN EducationON Customers.Education Id = Education.Education Id5. 基于Customers表创建一个命名查询我们要基于DSV中的Customers表创建一个命名查询,该Customers表只包含拥有房子的客户。因为这个表包含一个命名计算,所以必须将命名计算手动添加到这个查询中。(1) 在Customers表中双击Bedrooms命名计算,打开“命名计算”对话框,然后复制其中的SQL文本。(2) 在DSV设计器中右击,然后选择“新建命名查询”。(3) 输入查询名Homeowners,然后输入描述,描述也可以不输入,是可选的。(4) 单击“添加表”按钮,选择Customers表,然后关闭“添加表”对话框。(5) 在Customers表上选择*(All Customers)复选框。(6) 增加计算列:a. 在查询窗口中Customers.*的后面输入一个逗号,然后将剪贴板中的内容粘贴到Column列的第二行。b. 在粘贴文本之后,输入asBedrooms。查询将被扩展,Customers.*将会被Customers表的所有列替换。(7) 对拥有房子的客户进行过滤:a. 在网格控件中,找到Column列中包含Home Ownership的行。b. 在Output列的第二行中去除复选标记。c. 在条件列中输入=Own。(8) 进行完上述操作之后,查询最后应如图4-6所示。单击“确定”按钮关闭这个对话框。图4-6 Homeowners命名查询像其他的DSV表一样,现在,通过浏览数据,可以从上下文菜单中看到该命名查询。注意:这一例子主要起示范作用,因为基于列值的简单过滤器如结构中的模型过滤器一样容易构建。6. 组织DSV当创建了一个命名查询时,任何在原表上的已有关系都不会出现在新创建的表上。这意味着,如果还要用这些关系,则必须重新创建它们:对于表之间的每一条关系,从外键拖动一条线到主键就可以创建这些关系了。在DSV中创建完很多交叉的关系线时,这个图将很难读懂,如图4-7所示。图4-7 DSV设计器中包含许多关系的DSV使用DSV图可以解决上述问题。DSV设计器允许创建许多图,这些图允许选择DSV表的子集,然后重新排列它们以方便查看。要创建这些图,只要单击“新建关系图”按钮,对这个图进行命名,然后从左边的列表中将表拖向它。也可以通过右击一个已经在视图中的表,然后选择“显示相关表”来显示相关的表,这样就可以把相关的表添加到视图中。在添加了表之后,可以在设计器视图中单击右键,然后选择“排列表”,这样就可以清除这些表的当前布局。注意:命名查询和命名计算依赖于关系数据库服务器的处理能力。处理生成的查询所需的附加资源会对挖掘模型的初始处理时间产生影响。如果这种时间上的增加过于严重,并且需要频繁地重复这些查询,那么应该考虑在关系数据库服务器上物化这些视图。7. 浏览数据在任何数据挖掘项目中,都有一部分是学习和理解数据的本质。通过Office Web组件(Office Web Component,OWC)中的控件,DSV设计器提供了浏览数据的功能,并且有4种不同的方式。在DSV中右击一个表,然后选择“浏览数据”,就可以通过以下方式来浏览数据:表、数据透视表、简单图和数据透视图。默认情况下,浏览数据组件会从数据中采样5000个数据点。浏览数据窗口左上角的选项按钮允许将这个设置改为最大值20000数据点,这取决于OWC控件的限制。表格式视图允许对数据进行简单的浏览。通过多种不同的方式重新布局、分片或者聚集数据等,可以更巧妙地使用数据透视表,以更好地理解数据。例如,当浏览Customers表的数据透视表时,通过前面创建的Bedrooms列,将可以看到Age的平均值及其标准差(参见图4-8)。之所以看到这些信息,是因为我们正在浏览的是DSV表,而不是原始数据中实际存在的源表。也可以使用完全一样的方式在DSV中浏览命名查询。图4-8 使用数据透视表浏览数据图形的浏览方式通过不同的页面提供了简单的柱形图、饼图、条形图和一个数据透视图。使用简单的图,可以看到直方图和各种属性并排的饼图。如果数据是连续的,则图将会把连续的值分成10桶。相反,数据透视图提供了大量的图形控件来分析数据,包括标准折线图、条形图、散点图、柱形图和饼图,还有一些特殊类型的图,比如圆环图和雷达图,如图4-9所示。图4-9 雷达图通过Bedrooms和Home Ownership显示Age数据透视表和数据透视图有很多的配置选项,以便用不同的方式分析数据。这些选项大部分可以通过上下文相关的“命令和选项”对话框进行配置,该对话框可以从上下文菜单或者内嵌的工具栏中打开。数据透视表和数据透视图中的每一选项几乎都是可以改变的,方法是在图形环境下直接选择该对象,或者使用在对话框的“常规”选项卡中的选择框。要讲述OWC的所有功能集,需要一本书的篇幅,精通OWC控件最好的方式是多做练习,有了经验之后,就可以操作这些控件来找到合适的视图。除此之外,因为数据透视表和数据透视图是相互连接的,所以可以在它们之间来回切换,进行编辑,在编辑之后查看所进行的改变是如何影响另一个视图的。对于数据浏览功能来说,数据透视图的另一个附加的重要功能是,它可以通过图形化的方式来创建命名查询。单击工具栏中的“命名查询”按钮,可以使用图的元素定义一个命名查询。例如,在图中,可以只选择这些拥有房子的人(这些人有一间卧室)和出租房子的人(有4间或更多卧室),然后将他们添加到查询中。这个命名查询像其他查询一样,可以用作一个浏览数据的来源。注意:虽然浏览数据窗口看起来像其他的文档窗口,但实际上它是像解决方案资源管理器和属性窗口一样的工具窗口。右击“窗口”选项卡,可以将浏览数据窗口变成一个浮动的或可停靠的窗口。也可以在不同的DSV表上打开很多浏览数据窗口,来并排显示图和表。4.3 创建和编辑模型一旦组织、修改、选择和理解了要分析的数据,就可以开始创建数据挖掘对象了。第一步是运行数据挖掘向导。使用该向导创建了数据挖掘对象之后,就可以在数据挖掘设计器中细化数据挖掘向导创建的结果。4.3.1 结构和模型第3章曾提过,SQL Server Analysis Services有两个主要的数据挖掘对象:挖掘结构和挖掘模型。挖掘结构用来定义挖掘问题的域,而挖掘模型是挖掘算法对挖掘结构中的数据的具体应用。挖掘结构包含一组结构列,这些列绑定到数据源,并有数据类型和内容类型,还包括一些可选的标志,这些标志用来控制如何对这些数据进行建模。除此之外,挖掘结构还包含了一组挖掘模型,这些挖掘模型的列都来自于挖掘结构。挖掘模型的定义包括挖掘算法及其相关的参数,还包括来自挖掘结构的列。挖掘结构中的每一个挖掘模型都可以使用不同的算法,或者使用相同的算法但使用不同的参数,或者包含挖掘结构中列的不同子集。对挖掘模型中的每一列,可以指定它在模型中的用法以及特定于算法的建模标志。有这个功能的支持,就很容易对同一数据集测试不同的假定。4.3.2 使用数据挖掘向导数据挖掘向导可以创建两种对象:挖掘结构和挖掘模型,其中挖掘模型是可选的。挖掘结构描述用于挖掘的列和训练数据,挖掘模型是从挖掘结构中选择一些列,然后使用某一个算法,并且为该算法定义每一列的用法。这个向导将这两个对象的创建过程包含在一组简单的步骤中。这个向导的步骤包括:(1) 选择算法,或者只选择一个结构。(2) 选择源表并且指定源表的用法。(3) 选择表中的列并且指定这些列的用法。(4) 指定测试数据(holdout data)、命名结构和模型。这时,就可以直接处理和分析模型的结果了。使用Analysis Services很容易开始上述操作。向导还允许从多维源(比如联机分析处理(OLAP)中创建模型。OLAP将在第13章中介绍,现在我们只针对关系的(relational)源。向导的使用很简单,因为它的每一个步骤都是基于所提供的输入自动执行的。作为一个数据挖掘人员,理解这些步骤和所作的选择何时及如何影响模型是很重要的。向导的第一页是选择定义方法,在此页中,选择创建模型的源是来自于关系源还是来自于多维源,如图4-10所示。虽然最后从一个源创建的模型与从另一个源创建的模型是一样的,但是创建的过程还是有一点不同,所以对于不同的选项有不同的向导过程。而且,某个特定的数据挖掘算法可能不支持从OLAP源创建模型,所以该向导首先会提出这个问题。图4-10 在数据挖掘向导中选择模型定义方法向导的第二页是创建数据挖掘结构,在此页中,系统会询问使用哪种数据挖掘技术来创建最初的挖掘模型。算法的列表是由目标服务器的功能决定的,并且或多或少地包含这本书讲述的算法。选择某一算法的理由和相关的过程将会在第15章讲述。如果向导运行时不能连接到服务器,那么可以从SQL Server数据挖掘提供的算法中获得默认的算法列表,如图4-11所示。具体选择什么算法主要取决于试图解决的商业问题。我们将会把每一个算法的应用放在后续的章节中讲述。图4-11 数据挖掘向导中的创建数据挖掘结构页面接下来的两页需要确定待挖掘的数据。首先选择包含表的DSV,然后指定实际的表。当选择表时,必须指定每一个表是事例表还是嵌套表,如图4-12所示。如第3章所述,事例表包含要分析的实体的事例,嵌套表包含每一事例附加的信息(通常是事务信息)。图4-12 在数据挖掘向导中指定表的类型注意:有时要决定哪一个表是事例表也比较困难。例如,如果要分析产品如何被一起购买,则可以将产品作为事例表。然而,实际上要分析的是由单一客户所购买的一组产品。在这种情况下,该客户变成了含有事务表的一个事例,而该事务表(作为嵌套表)包含产品购买信息。当只有一个事务表时,这个表既可以作为事例表也可以作为嵌套表,这可以通过指定事务ID作为事例键,其他的列作为嵌套表中的列来实现。在数据挖掘向导后面的两页中,指定要使用的列,并且指定数据挖掘算法如何使用每一列。首先,指定结构和模型要使用哪些列,并指定列的用法类型 键、输入和/或可预测。然后为每一列指定数据类型和内容类型。如图4-13所示,如果选中每列最左边的复选框,但未选中“输入”或“可预测”复选框,则相应的列将显示在挖掘结构中,但不显示在初始模型中。当然,如果只创建结构,则不会显示“输入”和“可预测”复选框。图4-13 在数据挖掘向导中指出如何使用列和如何指定嵌套键必须为模型中的事例表和每一个嵌套表指定一个键。要注意,在DMX中,嵌套表的键不是连接嵌套表与事例表的外键,而是嵌套表中的键。这个向导要求这个关系不能由外键建立,如果用户没有指定一个键,则向导会给用户一个警告。例如,有一个表示客户购物车中的商品的嵌套表,这个表包含行ID、事务ID、产品名、数量和价格,其中行ID是键。在模型中,嵌套表只有产品、数量和价格列,因为行ID对模型不重要,事务ID是事例表的外键。在这个缩减的嵌套表中,能够看到产品的数量和价格,而产品列变成了嵌套表的键。对于键的指定,时序和序列聚类模型有特殊的规则。具体内容请参见第8章和第10章。注意:当确定合适的列作为嵌套键时,需要考虑的一件事情是,数据挖掘算法通过分析事例之间的相似点和不同点来查找模式。如果选择某一列作为嵌套键,那么在这个列中的值只会出现在单一事例中,于是数据挖掘算法将找不出有关这个列的模式。基于这个逻辑,得出这样的结论:不要将事务ID或行ID作为嵌套键。指定哪些列作为输入列和可预测列取决于具体的商业问题,也依赖于正在测试的假设和所选择的算法。通常,如果指定一列为输入,则表明数据挖掘算法将会用此列来确定标记为可预测或者输出的列。因为每一个算法使用这些信息的方式是不一样的,所以应该熟悉每一个算法具体的语义,这将在以后每个算法章节中详细描述。但是所有这些算法的一个共同点是,如果想通过一个PREDICTION JOIN语句对模型的列进行选择,则该列必须是可预测的。要预测一个嵌套表,则要选中键列旁的可预测列中的复选框。注意:如果表有很多列,则很难知道选择哪些列作为输入列。通常可以使用所有列,但是这会导致额外的处理开销,而且,根据具体的算法,也可能会使最终模型很难理解。单击向导的“指定定型数据(Specify the Training Data)”页面中的“建议(Suggest)”按钮将会执行一个基于熵(entropy-based)的快速分析,它可以指出哪些列对于所选择的输出列可以提供一些有用的信息,进而可以在最终模型中减少列的数量。要注意,通过这个功能进行分析时,只对事例级列起作用,而且不能保证选择的列会对目标变量有影响,没有选择的列不会对目标变量产生影响。下一步,在向导中将会列出已经选择的列和这些列的数据类型及内容类型,如图4-14所示。指定合适的内容类型对模型的性能和精确度是至关重要的。例如,如果有一个字段(比如Income)标记为DISCRETE,则算法将会假定每一个可能的Income值是完全不同的类别,并且可能花费额外的时间进行处理,而无法得到真正有用的信息。相反,如果有一个分类类型的列,分类由标记为CONTINUOUS的整型指定(例如,1蓝色,2黄色,3红色,4绿色,等等),数据挖掘算法将会假定:可以对这些分类进行数学比较,并计算它们的间隔。此时就会得到古怪的逻辑,比如绿色(4)红色(3)蓝色(1)!图4-14 在数据挖掘向导中指定内容类型和数据类型幸运的是,数据挖掘向导有能力自动检测出一个数值列是分类类型(离散)的列还是连续型的列。在向导的“指定列的内容和数据类型”页中,单击“检测”按钮,该向导就会采样和分析源数据,并且选择一种合适的内容类型。如果选择了连续的内容类型,但是所选择的算法不支持连续的列,则内容类型将会被指定为DISCRETIZED。在设计器中,可以设置离散化参数,如下一节所述。在进入向导的下一步之前,应该确保为每一列都指定了正确的内容类型,如果还没有正确指定,则应该修改。向导的下一页是“创建测试集”页,如图4-15所示,指定测试数据的百分比以及测试数据集中事例数的最大值,这一最大值将按照本章后文介绍的验证方法被随机取消。强烈建议提供测试数据,尤其是对于分类模型和回归模型。目前,BI Dev Studio没有提供任何工具用于评估包含可预测嵌套表的模型的准确性,因此为这样的模型指定测试集就毫无意义,除非自己实现准确性方法。图4-15 指定测试集的事例数最多为500向导的最后一页如图4-16所示,指定挖掘结构和挖掘模型的名称,并且如果所选择的算法支持钻取功能,则可以启用钻取功能。当完成这些操作之后,向导将会创建包含一个挖掘模型的挖掘结构,并启动数据挖掘设计器。图4-16 在数据挖掘向导中命名对象4.3.3 创建MovieClick挖掘结构和挖掘模型我们将创建一个挖掘结构和挖掘模型,根据对客户信息的了解,预测有房子的客户拥有多少间卧室。按照下面的操作步骤,使用数据挖掘向导来创建挖掘结构和挖掘模型。(1) 在解决方案资源管理器或者对象资源管理器中右击“挖掘结构”文件夹,然后选择“新建挖掘模型”。(2) 跳过描述页,进入“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电气中级工程师考试岗位专业知识题库及答案
- 2025年互联网行业区块链应用水平考试-区块链数据标准与interoperability考核试卷
- 2025年传媒行业媒体融合发展认证考试-AI内容生成的质量控制标准考核试卷
- 2025年互联网与信息技术职业技能竞赛区块链金融场景开发区块链金融移动端应用(APP、小程序)开发考核试卷
- 政府战略合作协议书模板
- 离婚子女抚养费协议书
- 协议书离婚了还可以起诉
- 营销实战模拟营销方案
- 兄弟分地协议书怎么写
- 营销云内容营销方案
- 上海初中毕业生综合素质评价表资料
- 植物内生菌与宿主关系研究进展
- 精神发育迟滞的护理查房
- 护理突发事件的应急处理和风险防范
- 装配机器人及其操作应用-课件
- 高中日语宣讲 试听课件
- 生态学群落演替课件
- TCTCA 13-2023 凉感织物席规程
- GB/T 17194-1997电气导管电气安装用导管的外径和导管与配件的螺纹
- GB/T 12224-2005钢制阀门一般要求
- GA/T 1481.2-2018北斗/全球卫星导航系统公安应用第2部分:终端定位技术要求
评论
0/150
提交评论