机器人与人工智能爱好者论坛

 找回密码
 立即注册
查看: 3209|回复: 0
打印 上一主题 下一主题

功能工程设计:打造更优秀的预测分析和机器学习模型的 7 个技巧

[复制链接]

11

主题

11

帖子

159

积分

注册会员

Rank: 2

积分
159
跳转到指定楼层
楼主
发表于 2021-11-26 11:42:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
成功的机器学习和预测分析离不开功能工程设计,也正因此,功能工程设计多年来一直是数据分析领域的热门概念。功能工程设计指的是使用过程相关知识及所产生的数据来提取可让预测模型发挥作用的属性或功能。实际上,预测模型需要输入数据才能对某个过程的结果作出预测。选择用来构建预测模型的功能或输入将对模型预测的准确度产生显著影响。要以最佳方式应用功能工程设计,有关过程的知识及数据十分关键,它们决定了能否选出可助您构建准确预测模型的功能。所选的功能应能够代表要努力解决的底层问题,这就让有关过程本身的专业知识起到关键作用。Minitab 致力于协助过程专家、数据科学家和业务分析师等从业人员利用过程知识来找到数据驱动型解决方案,以解决其所面对的最严峻业务挑战。

在这份白皮书中,我们将重点介绍七个功能工程设计技术,以及如何通过 Minitab Statistical Software 成功应用这些技术。






七个功能工程设计技术

1.异常值处理

极端异常值的存在会对模型性能产生显著影响。异常值通常定义为相对于整个数据集异常高或低的值。确定异常值的方法有很多,其中常见的两种是使用箱线图上的四分位间距(即 IQR)或者从数据估算出简单标准差的倍数。 箱线图方法很简单,且能够利用箱线图轻松对异常值进行可视化,因此很有吸引力。使用标准差的倍数来确定异常值以下面的概念作为基础:在正态分布中,大约 95% 的数据处于均值的两个标准差范围内,且超过 99% 的数据将处于均值的三个标准差范围内。 不论是使用箱线图规则,还是使用标准差的倍数来确定异常值,Minitab Statistical Software 都能轻松地完成任务。

只需右键单击工作表中的数据列,然后选择条件格式 > 统计 > 异常值。






在新窗口中,使用下拉列表选择用于确定异常值的方法。若使用标准差选项,这个窗口中指定的标准差数将用于确定潜在异常值,并在工作表中将其突出显示。











基于指定的规则突出显示异常值之后,右键单击并选择子集工作表 > 排除带有格式化单元格的行,以创建将异常值排除在外的新工作表。






需要说明的是,推荐做法是不丢弃潜在异常值,而应对其进行检查。尝试确定任何异常值的原因并更正任何数据输入错误或测量误差。考虑删除与异常的单次事件相关联(也称为特殊原因)的数据值。

2.分箱或分桶

分箱或分桶过程会将各个数据值分组为较小数量的区间或分组。这个技术通常在有些值相对于数据集中的其他值出现频率非常低时应用于类别数据。分箱的主要目的是减少过度拟合。过度拟合的模型为了与用于构建模型的样本数据的特殊性拟合而进行了过度调整,但过度拟合的模型不能很好地普遍适用于新数据,导致基于未来数据的预测的准确度降低。视模型类型而定,可能需要分箱才能使算法收敛。在 Minitab 中,转换表能够简便地对类别进行重新编码。首先,使用统计 > 表格 > 单变量计数并选中将结果存储在工作表的选项。这个选项会将您所提供之列向量中的每个唯一值列表以及每个值的频率计数存储在活动工作表中。

在下方的示例中,Tally 显示了每个唯一值,Tally_1 则显示了计数。











在这个数据集中,相对于其他类型的缺陷,值:撕裂、凹陷、标记错误、变形 和 破损 只出现几次。 为将频率较低的值合并到同一个其他类别中,可在工作表中定义新的分组,如上面 C4-T 中所示。工作表中的信息现在可用作转换表,对原始列中的低频率值进行重新编码。在 Minitab 中,该选项可通过选择数据 > 重新编码 > 使用转换表调用:






上述方法也可用于减少类别分组变量中的水平数。例如,数据中包含美国各州的精细信息且地区性指示符可提供更有意义的信息时,可转为使用转换表来将各州重新定义为东西南北区分。Minitab 还通过以下菜单提供了将数值数据分箱的简单方法:数据 > 重新编码 > 为数值,然后使用下拉列表选择重新编码值范围。这个选项可定义每个新分箱的端点。

3.类别预测变量编码

作为一种应用于类别预测变量的技术,编码可在列中创建每一个唯一文本值的数值表示。通过将基于文本的预测变量转换为数字,算法就能理解和处理信息,以构建预测模型。即便 Minitab 提供的回归和 CART等监督学习方法能够自动处理类别预测变量,但仍需要对类别预测变量进行编码,以供在其他分析中使用。






在 Minitab 中,可轻松将类别预测变量转换为数值表示的功能称为创建指示变量,该选项位于“计算”菜单中。这个选项可用于从类别变量创建包含 0 和 1 的列。对于类别分组中的每一个值,行或观测值中未表示该值时,指示变量的值为 0,而行中表示类别时则为 1。






在上述说明中,原始类别变量位于 C1,其中包含三个唯一值:是、否和或许,而 C2、C3 和 C4 则是使用 Minitab 的点击界面生成的指示符。

4.功能分割

功能或文本字符串的分割可用于提取要在模型构建中使用的相关信息。通常,若数据从数据库导入,多条信息可以被合并为一列中的单个文本字符串。例如,请考虑下方的 ID 列,其中的前七个字符表示产品代码,而最后八个字符表示日、月和年。






若在模型中将上述 ID 列作为类别预测变量引入,则会导致列中每个唯一值被视为单独的组,这样没有用处。更合理的做法是区分产品代码、月份、年份,并将每个变量作为预测变量单独引入,以评估其对过程结果所产生的影响。选择计算 > 计算器就可以打开 Minitab 的计算器并使用其中的函数从文本字符串提取值。更确切地说,要指定需要提取的字符时,LEFT、RIGHT 和 MID 函数非常实用。在下方的示例中,这些函数用于提取基于从左起前七个字符的产品代码;从第 8 个字符开始、位居文本字符串中间的两个数位的月份;以及最后四个数表示的年份。






上方窗口中的 Minitab 计算器函数列表是可应用每个函数的语法示例。若要了解每个函数的更详细说明, 请查看此处。例如,要提取最右侧四个字符,可使用 RIGHT 函数。在括号内,我们可添加包含原始文本字符串、逗号和字符数,以从右侧开始提取。Minitab 会将提取的值存储在新的列中。






若需要依据所指定分隔符之间的相对位置来从文本字符串中提取值,计算器中的 ITEM 和 WORD 函数将能够发挥极大作用。 在下方的示例中,计算器表达式会提取地区,也就是逗号分隔符之间的第二个位置。






5.定标

定标或预测变量标准化指的是改变原始数据值,以便所有预测变量所依据的尺度一样。大多数时候,过程的输入所依据的尺度不同。例如,重量、年龄、压力以及以分钟为单位的时间。进行比较时定标很有用,因为其可以确保某个预测变量不会仅仅因为自身尺度量值而显得比其他预测变量更重要。此外,定标还有助于解决多重共线性问题。例如,要比较下方左侧的四个变量,但是它们所依据的尺度不同,因此无法提供足够信息,无法直观呈现差异。然而,右侧经过定标的变量间的比较则能够轻松直观呈现差异。






尽管 Minitab 的线性和 Logistic 回归模型包含相关选项,能够以编程方式将标准化连续预测变量纳入分析,其仍然提供内置功能,能够直接控制工作表中的数据定标。在 Minitab 中,这个函数被称为标准化,可通过选择计算 > 标准化进行调用。这个菜单提供多个常见定标选项,例如减去均值或减去均值并除以标准差。






Minitab 不仅能够同时对多个变量进行定标,还能够灵活指定用于定标的值(减去第一个值,然后除以第二个值)或将每个变量的整个范围设为上述窗口中指定的端点(将范围设定为从起点到终点)。

6.提取日期

日期和时间数据包含可用于预测和控制目标或响应变量的重要信息,但对于预测建模来说,采用原始格式的日期/时间数据可能并不实用。视格式而定,可能会将日期/时间数据视为数值(包括 Minitab 在内的许多应用程序将日期/时间数据存储为天分数),也可能将每个唯一值视为分组变量,而两者既不是想要的数据,也无法提供足够信息。Minitab 提供经过专门设计的菜单,可简化提取日期/时间数据并转为可用格式的整个过程。

数据 > 日期时间 > 从日期/时间提取到数字或从日期/时间提取到文本包括多个内置函数,能够只提取与过程建模相关的功能信息。至于决定提取哪些信息,很大程度上取决于过程本身,因此过程知识不可或缺。例如,要预测航班延误时,“一天中的第几小时”是很有用的功能。又比如,要确定一周中哪几天与过程中较高缺陷率是否存在关联,则提取“一周中的第几天”将十分有用。











提取到数值格式的值可作为连续预测变量引入模型中,而提取到文本格式的值可作为类别预测变量发挥作用。Minitab 还可以提取事件之间的已用时间,并在计算器中提供许多其他日期/时间操纵功能。如需Minitab 中日期/时间操纵的更详细指南,请查看日期/时间数据的提示和技巧的相关贴文。

7.缺失值插补

线性或 Logistic 回归等部分算法需要有每一行中的完整记录, 才能处理信息并构建模型。值缺失时,可行的一个做法是丢弃任何包含缺失值的记录,Minitab Statistical  Software 正是如此,会自动丢弃记录。数据量受限时,丢弃部分信息可能会影响模型对真正显著效应的检测能力。另一个做法是基于每一个功能或列中的其他值计算出缺失观测值,Minitab 的计算器就能够轻松做到这一点。对于数值插补,可使用 Minitab 计算器中逻辑 if/then 语句,用列均值或中位数替换缺失值。语法的构成并不复杂:

逻辑语句:If(此内容为 True 时,执行该操作,否则执行其他操作)

计算均值或中位数:均值(列)或中位数(列)

在 Minitab 的计算器中,我们将逻辑和均值或中位数表达式合并为下方所示的单一语句。若给定列中的值缺失(数值数据由 * 表示),则使用均值或中位数值替换缺失值;但是若值并不缺失,则保持原样:






不论是使用均值,还是中位数,列中的所有缺失值都将立即被替换:






对于文本功能插补,缺失值会被重新编码至不同类别。使用本白皮书中“分箱或分桶”部分已经讨论过的转换表。 另外,可能需要对缺失文本值进行重新编码,从而反映出列中最常出现的值。确定最常出现文本值的方

法有许多,Minitab 的条件格式选项却可以提供一个快捷方式。只需右键单击文本列并选择条件格式 >  Pareto > 频率最高的值。






在“频率最高的值”窗口中,键入要格式化值的数目。在这个案例中,我们只关注一个最常见值,所以我们使用 1,且相应值会在工作表中突出显示。






要将缺失值替换为最常出现的值 Yes,可以再次使用计算器的 IF 逻辑语句。请注意,双引号之间的空格是用于在计算器中定义缺失值的语法。






立即开始使用

既然您已经熟悉了这些功能工程设计技术,您完全可以开始将它们应用到预测分析和机器学习项目中。请记住:构建准确预测模型的关键在于能否应用在功能工程设计技术选择时的过程知识和数据。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|陕ICP备15012670号-1    

GMT+8, 2024-4-27 09:06 , Processed in 0.056170 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表