我把机器学习数据这样分了7组!
点击上方关注,All in AI中国
作者:Jeff Hale
在本文中,我为机器学习从业者提供一种更有用的数据分组:7种数据类型。
我在本文中提出的框架应该引导相关行业从业者更快地开发出更好的模型,尤其是新入行的从业者。人们可以参考这7种数据类型,我们都应该能够更快地评估和讨论可用的编码选项和归因策略。
TL;DR
你可以将每个功能作为以下七种数据类型之一进行思考和讨论,以节省时间并传递知识:
1.无用
2.名义
3.二进制
4.序数
5.计数
6.时间
7.间隔
当前状态
在机器学习领域,数据几乎总是分为两组:数值和分类。
数值数据用于表示由数字(浮点或整数)表示的任何内容。分类数据通常表示其他所有内容,特别是通常会调出离散的标记组。数值和分类这两个主要分组使用不一致,并没有提供关于如何操纵数据的方向。
通常需要将数值输入数字形式以供机器学习算法使用数据进行预测。在机器学习指南中,分类字符串数据通常是一个热编码(也就是伪编码)。Dan Becker在Kaggle的机器学习教程系列中将其称为"分类数据的标准方法"。
通常在教程中,假设所有以数字形式到达的数据都可以按原样使用,并且所有字符串数据都需要一个热编码。虽然许多教程确实深入研究了数据类型(例如专门处理时间/二进制或文本数据),但这些更深入的研究通常不是以系统的方式完成的。事实上,我没有找到基于像本文提出的分类法转换数据的明确指南。如果你了解此类数据科学资源,请在评论中分享。
在研究生院接受社会科学方法和统计学的教育和培训后,我开始学习机器学习,我发现很少有关于序数数据的讨论。例如,我一直在试图找出以字符串形式编码和估算序数量表数据,以及数字形式的标称(真正分类)数据的最佳方法,如果没有清晰一致的数据类型类别,则需要花费更多时间。
7种数据类型的灵感来自Steven的测量量表类型以及我自己对机器学习模型需要特别考虑的数据类型的启发。在介绍7种数据类型之前,让我们首先看一下使用中的测量是表以及它们的来源。
Steven的类型量表学
Stanley Smith Stevens
在20世纪60年代,哈佛大学心理学家Stanley Smith Stevens数据创建了四个测量量表:比率、间隔、序数、名义。
•比率(值与有意义的零值之间的相等间距- 均值是有意义的)
•间隔(值之间的相等空间,但没有有意义的零值 - 均值是有意义的)
•序数(第一、第二、第三个值,但第一个和第二个之间和第二个和第三个之间的间距不等, - 中位数是有意义的)
•名义(不同类别之间没有数字关系- 均值和中位数无意义)
Stevens的类型学变得非常受欢迎,尤其是在社会科学领域。从那时起,其他研究人员进一步扩大了量表(Mosteller和Tukey)的范畴,包括多达10个类别(Chrisman)。尽管如此,尽管在许多情况下没有提供明确的指导,但Stevens的类型学已经在社会科学中占据了统治地位,并在数据科学中被引用。
其他机器学习和数据科学从业者以各种方式采用了Stevens的部分类型,从而产生了各种术语。例如,Hastie、Tibshirani和Friedman在《统计学习的要素》第二版(The Statistical of Statistical Learning 2nd Ed)中,将比率和间距组合成定量,并将序数和分类分开(第504页)。而在其他地方,Hastie等人将序数称为有序分类变量,将分类变量称为定性、离散或因子(第10页)。Dummies数据统计数据类型将数据类型分为数字、序数和分类,这与数字间距的结果相比。DataCamp在本教程中引用连续数据、序数数据和名义数据类型。
统计中偶尔出现的分类是离散变量和连续变量之间的分类。离散数据具有不同的值,而连续数据在一个范围内具有无限数量的潜在值。
通常在机器学习中,数字和分类是人们看到的分歧。流行的Pandas库将可选类别中的序数和名义数据整合在一起。总的来说,当前机器学习数据类型的词汇是不一致和令人困惑的。目前尚不清楚为什么其学习进展缓慢,可以做些什么来改善。
机器学习的7种主要数据类型
尽管在机器学习中改进数据类型的词汇似乎是一个大胆的目标,但我希望本文将提供一个有用的分类方法,以便为数据科学家提供更多可行的方法。通过提供明确的类别,我希望能够帮助我的同事(特别是行业新手)更快地构建模型,并发现改进模型性能的新选项。
我建议对机器学习从业者通过以下最有用的7种数据类型进行分类:
1.无用
2.名义
3.二进制
4.序数
5.计数
6.时间
7.间隔
1.无用数据
无用数据是唯一的离散数据,与结果变量没有潜在关系。无用数据的功能具有很高的基数。一个例子是随机生成的银行帐号。这对于机器学习来说毫无用处,但有点酷。
如果某个要素由没有顺序且无意义的唯一值组成,则该要素无用,在拟合模型时无需包含该要素。
2.名义数据
名义数据由离散值组成,不同类别之间没有数字关系,其平均值和中位数无意义。动物物种就是一个例子。例如,猪不高于鸟,不低于鱼。
名义数据:动物群
国籍是名义数据的另一个例子。没有数字顺序的组成员资格,例如法语、墨西哥语或日语,这本身并不意味着是一种有序关系。
你可以对名称功能进行热编码或散列。不要对它们进行序数编码,因为这些组之间的关系不能简化为单调函数。值的赋值将是随机的。
3.序数数据
序数数据是可以排序的离散整数。一个明确的特征是任何两个数字之间的距离是未知的。
例如,第一个数据和第二个数据之间的距离,与第二数据和第三数据之间的距离不同。例如一场万米的长跑比赛。获胜者可能跑30:00分钟,第二名可能跑30:01分钟,第三名可能跑400分钟。如果没有时间数据,我们不知道队伍之间的相对距离。
从广义上讲,序数数据可以用三种方式之一进行编码。可以假设它足够接近间隔数据,在值之间具有相对相等的距离,以便对其进行处理。社会科学家一直用Likert量表做出这个假设。例如,从1到7的比例,1是极不可能的,4是可能也不可能,7是极有可能。例如你有多大可能推荐这部电影给朋友?这里可以合理地假设3和4之间的差异,以及6和7之间的差异是相似的。
第二种选择是将序数数据视为名义数据,其中每个类别与任何其他类别无关。在这种情况下可以使用一个热编码或类似方案。
将序数数据分类是有价值的,因为它是自己的数据类型。
4.二进制数据
二进制数据是离散数据,只能是两个类别中的一个:是或否,1或0,关闭或打开等。二进制可以被认为是序数、名义、计数或间隔数据的特殊情况。
二进制数据是机器学习分类问题中非常常见的结果变量。例如,我们可能想要创建一个监督学习模型来预测肿瘤是恶性的还是良性的。
二进制数据很常见,在考虑数据时也属于自己的类别。
5.计数数据
计数数据是离散的整数数据,这里没有负数。计数数据通常具有许多小值,例如0和1。 计数数据通常遵循泊松分布。
从随机数绘制的泊松分布
计数数据通常与间隔数据类似地处理,但它足够独特且足够广泛,值得拥有自己的类别。
6.时间数据
时间数据是循环的、重复的连续数据形式。相关时间功能可以是任何时段,例如每日、每周、每月、每年等。
时间序列数据通常需要进行一些争论和操作来创建具有可能对模型具有意义的时段的要素。Pandas python库的设计考虑了时间数据。财务和营销数据通常具有在模型中捕获非常重要的时间组件。
我们通常使用适合季节性或每日数据的独特方法(例如SARIMAX)填充缺失的时间数据。时间序列数据绝对值得考虑。
7.间隔数据
间隔数据在数字之间具有相等的间隔,并不代表时间模式。例子包括百分比、温度和收入。
间隔数据是最精确的测量尺度数据,非常常见。尽管每个值都是离散数,例如,3.1英里,对于机器学习目的而言通常不重要的是它是否是连续的标度(例如可能无限小的测量尺寸)并不重要,也不关心是否存在绝对零。
间隔数据通常很容易处理,但可能需要创建分档来减少范围的数量。
现在你有了7种数据类型。
1.无用数据
2.名义数据
3.二进制数据
4.序数数据
5.计数数据
6.时间数据
7.间隔数据
虽然许多经验丰富的机器学习从业者确实会在实践中对这些标签所描述的某些类型的数据进行不同的思考,但缺乏对该领域的明确分类。我认为使用上面的分类法可以帮助人们更快地评估编码、输入和分析数据的选项。
请注意,这七个类别中的大多数能够以原始形式出现在大多数形式中。我们不是在谈论float64 vs bool:Python类型或(Numpy或Pandas dtype),其与在这里讨论的数据类型不同。
这些是正确的七个类别吗?这些类型的定义仍有争议。
在构建7种数据类型时,我问自己,从间隔数据中分离计数数据是否真的有用。最后,我认为这是因为文本数据是计数数据的常见形式,因为计数数据确实有一些常见的不同统计方法。
类似地,二进制数据可以被视为所有更高比例类型的子类型。尽管如此,二进制数据在机器学习中非常普遍,二进制结果变量具有一些潜在的机器学习算法,而其他多分类任务则没有。你也不需要采取额外的步骤来编码二进制数据。
如果你有不同的分类,请提出自己的建议。
如何记住这7种数据类型?
1.无用数据
2.名义数据
3.二进制数据
4.序数数据
5.计数数据
6.时间数据
7.间隔数据
记住这些是学习的关键。
八颗行星或九颗行星中的一颗
例如人们可以从9个行星助记符中获取提示,让我们制作一个助记符来帮助记住7种数据类型。
你可以做得更好,提出你自己的助记符并在评论中分享。
我应该传播有关7种数据类型的信息吗?当然。
在本文中,我提出了将数据类型分类为七个类别的案例,以便为数据科学中的数据思考和沟通创建更加一致的词汇。这些类别在考虑编码选项和归因策略方面具有实际应用。
编译出品