开始数据挖掘时,你可能会问“我需要多少数据?”或“在清理数据或设置数据格式时,我是否应了解一些特殊要求?”
具体而言,刚接触数据挖掘的人通常会遇到与 Excel 数据有关的问题,如需要在列中一致地设置数据格式、清除缺失值或对数字装箱。本节还会列出特定模型类型的数据要求。
选择分析数据可能是数据挖掘过程中最重要的部分,甚至比算法选择更重要。原因在于,数据挖掘通常不是由假设驱动,而是由数据驱动。数据挖掘可以接收数据并发现新关联(否则完全无法发现任何模式),而不是提前选择和测试变量(传统统计建模可能会这样做)。数据的质量和数量可能会显著影响结果。
一般而言,请遵守以下规则:
获取尽可能干净的数据。
尝试任何模型之前执行数据事件探查。需要先理解数据,然后才能发现其中的含义。至少:
使用外接程序中的工具查找最大值和最小值、最常见的值和平均值。
填写缺失值。外接程序(以及一些算法)可提供用于输入缺失值的工具。
尽可能更正错误的数据。数据挖掘项目经常充当新数据质量方案的推动力。
尝试生成测试模型,通过这种方式查找数据问题。举例来说,在查看结果时,您可能会发现,销售预测所依据的数据因货币换算错误存在异常。
尝试将数据转换为不同格式,或尝试将数字存入桶。转换数据时,经常会出现模式。
例如,呼叫中心的服务级别可能会受星期几影响,如果仅使用日期时间值,则不会看到这种模式。如果以 10 天周期生成(而不是以每周或每天为单位),预测效果可能更好。
将数字置于合适的箱中,减少要分析的值的数量。
创建多个版本的数据,生成多个模型。
我需要多少数据?
经验法则是,对于最简单的模型类型和方案,数据行数不小于 50-100 行。例如,如果使用 Na?ve Bayes 模型预测单个属性,并且数据集格式正确,使用 50-100 行数据就可能生成相当准确的预测。
对于关联模型,需要的数据通常多得多 – 如果分析很多属性(如产品间的关联),千行数据都可能不够。如果数据集太大或太小,通过将行合为类别有时可以获得更好的结果。例如,可以对产品分类,而不是分析各个产品间的关联。
如果数据集大小合理,应更注重数据质量而不是添加越来越多的数据。达到一定数据量后,会发现统计上有效的所有模式,添加更多数据不会提高其有效性。相反,添加更多数据,有时可能引入意外关联。
离散数值与连续数值
“离散”列包含数目有限的值。例如,文本通常被视为离散值。
离散值有一些重要属性。例如,如果将数字视为离散值,则它们之间不隐含任何顺序,您无法对数字计算平均值或总和。电话区号就是离散数值数据,不会用来执行数学运算。
离散值有时候称作类别值,因为您可以按离散值对一组数据进行分组,而对于按无限序列排列的数值,则不能按其对数据进行分组。
如果值是明确分开并且不可能有小数值或小数值没有用时,您也可以确定将数字视为离散值。
“连续”数值数据可包含无限个小数值。收入列即为连续属性列的示例。如果您指定某一列为数值,则该列中的每个值都必须是数值,只有 null 除外。请注意,在 Excel 中,可以考虑时间戳以及可转换为 SQL Server 数据类型的任何其他日期时间表示形式。
将数字转换为分类变量
因为列包含数值并不意味着您应该将它们视作连续数值。“离散化”对分析提供许多好处。好处之一是缩小了问题空间。另一好处是数字有时不适合表示结果。
例如,一个家庭的孩子数既可视为连续值,也可视为离散值。因为家庭中不可能有 2.5 个孩子,有 3 个或更多孩子的家庭的行为方式可能与有 2 个孩子的家庭非常不同,所以将此数字视为类别可以获得更好的结果。但是,如果要生成回归模型或由于其他原因需要平均值(如每个家庭 1.357 个孩子),则可使用连续数字数据类型。
如果创建一个包含连续数据的挖掘模型,之后又希望将列视为离散的,则是不可能的。两个数据集必须以不同的方式处理,作为单独的挖掘结构在后端进行处理。如果不确定数据的正确处理方式,应创建单独的模型以不同方式处理数据。在任何情况下,这都是获得有关数据的不同观点(可能还有不同结果)的好方法。
将数字转换为文本
诸如男性和女性之类的应该是离散的非常常见的值表示为数值数据(如使用标签 1 和 2)。通常执行此编码是为了简化数据输入或者节省数据库的存储空间,不过此编码可能导致值的性质和意义不明确。此外,由于离散值以数字形式存储,当您在应用程序之间移动数据时,可能会遇到数据类型转换错误,这些值可能被计算或被视为连续值。若要避免此类问题,应该在开始数据挖掘之前,将数值标签转换回离散的文本标签。
对数字装箱
尽管从原则上来说,所有数值都是无限的并因此是连续的,但在您对信息进行建模时,可能会发现将可用值“离散化”或“装箱”可能更有效。
您可以通过许多方式将数据装箱:
指定数目有限的存储桶并且让算法对存储桶中的值进行排序。
通过创建某些分组集合(具有业务上的意义或者易于使用),自己预先对值进行分组。使用此方法,您常常会丧失值的真正分布,但范围更易于用户读取。
让算法确定存储桶的最佳数目以及值的分布。这是大多数工具中的默认行为,但您可以在“数据挖掘”工具栏向导中重写这些默认行为。
将值逼近中心平均值或代表值。
Excel 数字格式
Excel 是易于使用的工具,因为它具有包容性 – 您可以在任何地方放置几乎任何类型的数据!但是,在您开始查找模式和对相关性进行分析之前,需要对您的数据强制某种结构或某些约束。
默认情况下,在将数值数据导入 Microsoft Office Excel 时,这些数字会存储为带两位小数的小数格式。如果此数字格式不符合您的要求,您应该将其更改为其他数值格式,也可更改小数位数。
一种选择是使用重新标记工具更改数字显示或分组的方式。
然而,如果您的数据过于复杂,无法用重新标记工具进行处理,则可使用 Excel 中的数值函数将数据转换为离散范围,然后将结果保存到单独一列中,再使用该离散化的列进行分类。
例如,如果要分析赛跑结果并希望按照完成时间(以分钟为单位)对赛跑者进行分组,则您可以向上舍入为最接近的分钟数并将该舍入值保存到新列中。您还可以使用 MINUTE 函数仅提取分钟值,然后将该值保存到新列以供分析使用。
在 Excel 中离散化数字和日期
默认情况下,Excel 中的数值数据以 Double 格式存储。日期和时间也以数值格式存储。如果您需要使数字或日期离散化以进行数据挖掘,则应在生成数据挖掘模型之前添加新列或者预先将日期和数字转换为其他格式。
科学记数数字格式
数据挖掘工具通常以科学记数法输出概率,以表示非常大或非常小的数字。如果您不熟悉科学记数法,只需更改单元格格式即可以另一种格式显示这些数字。
将科学记数改为小数数值格式
在 Excel 数据表中,突出显示包含以科学记数法表示的数字的列或单元格。
单击右键,并从快捷菜单中选择“设置单元格格式”。
在“类别”列表中,选择“数值”。
增加小数位数的个数。以科学记数法表示的概率通常非常小。
只有数字的显示方式会发生变化,基础值不会变化。
处理日期和时间
如果您的 Excel 表中包含日期,并且您将该列用于输入或预测,则您可能会收到意外结果,具体取决于日期信息或时间信息的格式设置。例如,如果使用“检测类别”或“分类”,而且具有包含日期的列,则这些日期将被归类为带有多位小数的数字。这并不是错误;这是基础数据的精确表示形式。数据挖掘算法使用的是基础存储格式,而不是显示格式。
如果您在使用日期时遇到困难,希望使用如月或天这样的常规分组方式来分析日期,则可使用 Excel 中的 DATE 函数,将年、月或日提取到单独一列中,然后使用该列进行分类。
算法类型要求
某些在外接程序中使用的算法需要特定的数据类型或内容类型才能创建模型。
Na?ve Bayes 模型
Microsoft Naive Bayes 算法不能使用连续列作为输入。这意味着,您必须对数字装箱,或者如果值足够少,可以按离散值处理。
此类模型也不能预测连续值。因此,如果要预测连续数字(如收入),应先将值装箱到有意义的范围中。如果不确定合适的范围,可以使用聚类分析算法确定数据中的数字聚类。
基于此算法使用向导(如分析关键影响因素(Excel 表分析工具))时,向导会对连续列装箱。
如果使用高级建模(Excel 数据挖掘外接程序)选项生成 Naive Bayes 模型,将从模型中删除数值列。如果要避免这种情况,请使用重新标记(SQL Server 数据挖掘外接程序)工具创建包含装箱值的新列。
聚类分析模型
聚类分析工具(聚类分析向导(Excel 数据挖掘外接程序)和检测类别(Excel 表分析工具))也不能使用连续数字,但这两个工具都会自动对数字列装箱。
这两种工具都向您提供选项以便可以选择结果中输出类别的数目,但是,如果您想要控制对单独列中的值进行分组的方式,则应该通过所需分组来创建新列。
预测模型
所有预测工具都要求您预测连续数值。无法预测已保存为文本的数字。
如果数据包含数据类型错误的数字列,可以使用 Excel 函数或 PowerPivot 功能创建数字数据类型正确的列的副本。如果执行此操作,请务必删除包含文本数字的列的副本,以便值不会重复。
如果要创建回归模型的散点图,则输入变量也必须是连续数字(表示为合适的数据类型)。
使用内容类型生成更好的模型
“内容类型”是应用于列的属性,用来指定模型使用列数据的方式。执行分析时,算法可以使用内容类型作为说明或提示。
例如,如果列中的数字以特定的间隔重复,来指示一周中的某几天,则可以将该列的内容类型指定为 Cyclical。
如果您使用在此外接程序中提供的向导和工具,则不必担心内容类型。但是,如果您使用将模型添加到结构(Excel 数据挖掘外接程序)建模选项将新模型添加到现有数据,则可能会得到与内容类型相关的错误。
得到错误的原因是,某些类型的模型要求某种类型的数据(例如时间戳)。这些工具根据特定要求处理这些列,并且还添加内容类型属性。因此,如果对完全不同的算法重复使用数据,则可能需要更改数据类型或内容类型。
下表介绍了数据挖掘中使用的内容类型,并标识了支持每种类型的数据类型。
离散
该列包含各值之间没有连续体的有限数量的值。例如,性别列是一个典型的离散属性列,这是因为该数据表示特定数量的类别。
Discrete 内容类型可用于所有数据类型。
Continuous
此列包含的值表示某一允许中间值的范围中的数值数据。连续列表示可缩放度量,且数据可能包含无限数目的小数值。温度列即为连续属性列的示例。
Continuous 内容类型可用于以下数据类型:Date、Double 和 Long。
Discretized
该列包含表示值组的值,这些值是从连续列派生的值。存储桶被视为“有序”的离散值。
Discretized 内容类型可用于以下数据类型:Date、Double、Long。
键
该列唯一标识某一行。
通常,键列是数值或文本标识符,不应该用于分析,只应用于跟踪记录。时序键和序列键是例外。
只有在您从已定义为 Analysis Services 数据源视图的外部数据源获取数据时,才使用“嵌套表键”。
此内容类型可用于以下数据类型:Date、Double、Long 和 Text。
键序列
该列包含表示事件序列的值。这些值是有序值,但不必按等差排列。
以下数据类型支持此内容类型:Double、Long、Text 和 Date。
键时间
该列包含按顺序排列并表示时间刻度的值。仅当模型为时序模型或顺序分析和聚类分析模型时才能使用键时间内容类型。
以下数据类型支持此内容类型:Double、Long 和 Date。
表
只有在您从已定义为 Analysis Services 数据源视图的外部数据源获取数据时,还可以使用此内容类型。
这意味着,数据的每一行都实际包含嵌套数据表,并且具有一个或多个列以及一个或多个行。
来源:数据分析师CPDA