花任何时间在机器学习领域,很快你就会遇到“特征”这个词。这个术语乍一看似乎是不言而喻的,但它很快就会变得模糊不清,可能会让大多数外行(甚至许多程序员)感到困惑,尤其是当你听到涉及数百万甚至数十亿
机器学习系统的例子时的特征。
如果您看一下电子表格,您可以将一个特征大致类似于一列数据,以及描述该列的元数据。这意味着该列中的每个单元格(对应于给定的“记录”)成为数组中的一项,不包括该列的任何标题标签。该特征可能有数千个值,但它们都是相同类型和语义的值。
但是,还有两个附加要求对功能起作用。首先是任何两个特征都应该是独立的——也就是说,一个特征的值通常不应该直接依赖于另一个特征的相同索引值。然而,在实践中,识别真正独特的特征往往比表面上显而易见的要复杂得多,而且可以期望的最好的结果是,在最坏的情况下,两个特征之间只有最小的相关性。
特征值的第二个方面是它们需要被归一化——也就是说,它们必须被转换成一个介于 0 和 1 之间的值。这样做的原因是这样的标准化值可以插入到矩阵计算中,而其他形式的数据则不能。对于直接数字数据,这通常是作为样本来查找特征的最小值和最大值,然后进行插值以查找特定值在该集合中的位置。对于有序范围(例如您喜欢或不喜欢电影的程度,范围为 1 到 5),可以进行相同类型的插值。例如,如果您喜欢这部电影但不喜欢它(5 分中的 4 分),这将被插值为 (5-4)/(5-1) = 3/4 = 0.75,并且 (喜欢这部电影)当被问及 10 个人时,可能看起来像:
lovedTheMovie = f([3,4,1,1,5,5,4,5,4,3,1,2]) =>
[0.5,0.75,0,0,1.0,1.0,0.75,0.5,0,0.25]
其他类型的数据呈现出更成问题的转换。例如,枚举集可以以类似的方式进行转换,但如果没有内在的顺序,分配一个数值就没有多大意义了。这就是为什么枚举的特征经常被分解成多个喜欢/不喜欢类型的问题。例如,与其试图描述电影的类型,不如将特征集建模为多个范围问题:
在 1 到 5 的范围内,这部电影更严肃还是更有趣?
在 1 到 5 的范围内,这部电影是更真实还是更精彩?
在 1 到 5 的范围内,这部电影更浪漫还是更注重动作?
然后,特征集能够通过获取每个分数(归一化)并使用它来识别 n 维空间中的一个点来描述一个类型。这听起来可能有点吓人,但另一种思考方式是,您有 3 个(或 n 个)刻度盘(如在混音器板上),可以从 0 到 10。这些刻度盘设置的某些组合可以让您更接近达到或远离给定效果(公主新娘可能有 8 分的“有趣”,8 分的“幻想”和 4 的“动作导向”)。史莱克可能有一些相同的分数,这意味着如果它们被描述为喜剧幻想浪漫并且你喜欢公主新娘,那么你很有可能喜欢史莱克。
总的来说,如果您有多个具有相同行标识符的此类特征(本质上是一个表),则这称为特征向量。给定特征具有的行(项目)越多,您就会看到更多的统计模式,例如聚类,其中几个点在至少某些可能特征的子集中彼此接近。这可能是相似性的指示,这就是分类器如何工作来表示两个对象属于同一类别。
但是,这里也有一个警告。并非所有功能都具有同等影响。例如,完全有可能有一个特征是爆米花的成本。现在,爆米花的成本不太可能对电影的类型产生任何影响。换句话说,该特定特征的权重或重要性非常低。那么,在构建模型时,需要确定的一件事是,给定一组特征,应该应用与这些特征相关的权重以获得最准确的模型。
这基本上就是(许多)机器学习算法的工作原理。训练集的特征值是提前知道的。机器学习算法在一组起始权重之间使用一组神经元(公共连接),根据预期值测试权重以识别梯度(斜率)并从中重新校准权重以找到下一步移动的位置。一旦确定了这个新向量,就会重复该过程,直到找到局部最小值或稳定轨道。这些稳定点代表基于传入标签的信息集群或分类
假设新数据与测试数据具有相同的统计特征,则加权值确定计算模型。将新特征值乘以相应的权重(在此处使用矩阵乘法),然后您可以回溯以找到最合适的标签。换句话说,学习数据识别给定分类的模型(特征集及其权重),而测试数据使用该模型对新内容进行分类或预测。
有一个主题的变化。使用 监督学习,分类是先验的,算法本质上充当构成给定分类的特征的索引。另一方面,对于 无监督学习,聚类出现在类别标签之前,因此人类在某些时候必须将以前未知的聚类与类别相关联。至于这些类别(或标签)是什么,它们可以是任何东西——呈现给汽车或卡车的视觉网格中的线条或形状、流派偏好、可能跟随在其他词之后的词,甚至(有足够大的数据集)例如谷歌的 GPT-3 所使用的,由特征和(最重要的)模式的骨架结构构建的整个段落或描述。
事实上,机器学习实际上是用词不当(大多数时候)。这些是模式识别算法。当它们变得可重入时,它们就变成了学习算法——当模型产生(推断)的至少一些数据被重新合并到模型中时,即使新信息被输入到模型中。这本质上是 强化学习 的发生方式,其中新数据(刺激)导致模型动态改变、保留和改进新的推理,同时“忘记”旧的、不太相关的内容。这在一定程度上模仿了动物大脑的工作方式。
现在是退后一步的好时机。我故意将数学大部分排除在讨论之外,因为虽然不是那么复杂,但数学已经足够复杂,以至于它通常可以掩盖而不是阐明问题。首先应该注意的是,创建一个引人注目的模型需要大量数据,而大多数组织面临的现实是他们没有那么多真正复杂的数据。特征工程,您可以在其中识别特征和对其进行规范化所需的转换,这可能是一项耗时的任务,并且只有在数据本身属于某些类型时才能简化。
此外,频繁标准化的需要会导致上下文丢失,尤其是当所讨论的特征是另一个结构的关键时。这可以创建可以更好地建模为图形的特征组合爆炸。这尤其成为一个问题,因为您拥有的功能越多,您的功能就越有可能不再独立。因此,模型在特定情况下变得非线性的可能性就越大。
考虑线性的一种方法是考虑三维空间内的二维表面。如果一个函数是线性的,那么它将在任何地方都是连续的(例如池塘中的涟漪)。如果你冻结这些波浪,然后在它们的任何方向上画一条线,那么这条线将不会在任何点断裂并在不同的水平上重新开始。但是,一旦您的向量不再独立,您就可以拥有不连续的区域,例如漩涡。一直流到池塘的底部。非线性建模要困难得多,因为数学朝着生成分形方向发展,而建模的能力就消失了。
这是深度学习的领域,即便如此,只要你停留在浅水区。重要的是,重入似乎是非线性的一个关键标志,因为非线性系统创建了准模式或抽象级别。强化学习显示了这一点,并且很可能为了让数据科学家真正开发通用
人工智能 (AGI) 系统,我们必须允许无法真正解释的“神奇”紧急行为。Kurt Goedel 在这里工作时可能还带着犹豫的微笑,因为这种数学表达式实际上可能无法解释,是 Goedel 不完备定理的产物。
机器学习的未来很可能最终将围绕通过图形和图形查询对推理关系建模来降低特征复杂性的能力。 这些也是模式匹配算法,与尝试“求解”甚至是一万维的线性偏微分方程相比,它们的重量要轻得多,计算量也要小得多。这不会降低机器学习的价值,但我们需要使用这些机器学习工具集来识别我们实际上是在使用糟糕的索引技术创建动态数据库。
最后一个想法:与任何形式的建模一样,如果你问了错误的问题,那么技术的运行情况就无关紧要了。
相关帖子DA内容精选
- 大厂数据分析面试指南!来自亚马逊、谷歌、微软、头条、美团的面试问题!
|