无论监督学习还是非监督学习,其中重要的过程是建模。建模过程通常需要经过两步曲,首先是前奏曲,即在建模之前有很多重要工作需要提前做,为建模铺垫好;再者就是进行曲,说明建模工作是动态的,必须随着数据和业务的变更不断学习并完善建模。
本文仅讨论建模前的工作。机器学习的输出(建模)质量取决于输入质量,曾有专家称:“垃圾进则垃圾出。”从中可以看出建模前工作的重要性。因此,在对数据进行机器学习之前,对建模的输入数据有要求。这意味着需要对输入的数据进行预分析。这种预分析的含义是广义的,一方面是面向数据本身的,另一方面则与业务密切相关。
无论是面向数据还是面向业务的预分析,主要是为了特征参数的表征和选取。对于非监督学习,有时需要对原始数据进行处理后(更具参数特征的可聚性)才能有效地用于学习,譬如聚类等。对于监督学习,主要是使要选择好能代表总体特征的样本数据,即选择好特征参数用于训练和学习,譬如分类和预测等。然而,根据数据的大小和类型, 理解和解释每个数据集的特征可能面临很大挑战。从数百万个数据集中仅查看前100个或随机选择的100个观测数据用于理解这种数据集并作为学习用的特征参数是不可能的。解决这个问题的一个方法是使用基于实例的分析,这是一种可以帮助挑选重要特征数据并确定分析维度的技术。这些技术有助于解释具有不同分布的高度复杂的大数据集。实例分析实际上是通过可视化等手段进行特征统计和归纳的,具体分析方法包括:
表征:我们通常使用数据中的具有代表性的实例进行分类和决策。这些实例, 通常称为原型, 是最能描述数据集类别的观测数据。由于很难用某种类型的所有观测数据进行解释,所以这些例子可以用于解释数据集的分类。
评价: 由于实例属于过度泛化,所以单独寻找原型是不足以理解数据, 在某些不能通过原型捕获的某些数据集集合中,其共享特征之间可能存在差异,我们需要有规则外的例外。这些观测数据可以被视为非常不同于原型的少数数据, 但仍属同一类别。
在下面的插图中(引自Ilknur KaynarKabul), 每个类别的机器人图片由不同头部和体型的机器人组成。尽管戴服饰的机器人与典型的机器人图片有很大的不同,但也可以属于这些类别之一。因为它们是重要的少数群体,所以需要这些图片用于对特征数据的理解。
区分: 寻找如何表示特征可能并不总是可行。如果特征参数很多, 则仍然很难理解所选的观测数据。这是因为人类无法理解冗长而复杂的解释。解释需要简单。
在下面的例子中(引自Ilknur KaynarKabul), 通过查看来自不同的机器人图片提取的特征, 我们可以说, 头部的形状是一个区分维度。然而, 我们不能说眼睛也是, 因为他们看起来非常相像。
必须考虑这些选定观测数据的最重要特征。子空间表示是解决这类问题的一种方案。使用原型和子空间表示有助于解读。一种可用于实现这一目的的方法是一种非监督学习方法的贝叶斯案例模型 (BCM)。
正如上面所说,对于大数据的特征参数选取面临的另一挑战来源于多变量,即一方面用基于实例分析之类的利用可视化的统计手段的应用受到限制,这是因为我们的可视化空间限于3D(某些情况下可以是4D)的情况;而另一方面是众多类型特征参数之间会存在许多冗余,不利于机器学习建模的效率和效果的。因此,就需要采用一系列的技术(诸如嵌入技术)对具有多变量的特征参数的分析维度进行降维,诸如基于线性确定性算法的PCA(主分量分析)以及非线性和不确定性算法的T-SNE(T分布随机邻域嵌入法)等等。通过降维,减少特征参数的区分维度,有助于特征参数的提取。
建模质量的好坏除了上述因素外,还与所用的学习方法有关,因为每一种方法都有一定适定性。因此在给定方法的前提下,可以通过建模前对数据做一些预处理,就可使输入的数据满足学习方法的要求。下图是“机器学习理解篇之六”中给出一个用于聚类分析的圆环数据,正如文中所述,如果采用KMEANS方法,得不到正确的聚类效果。那么坚持要用KMEANS方法,则可以对数据进行一种坐标转换处理,即将该数据转换成“方位角-半径”(极坐标系)下的数据,这样用KMEANS方法就可以得到正确的结果了。
以上所叙述的方法主要还是面向数据的,解决特征参数的选取问题仅是从数学方法以及手段考虑的,只能是一种通用性做法。而事实上,特征参数的选取与业务的关系更为密切,这是机器学习建模前作为高质量的输入的真正难点所在。譬如对于一个时序数据,其直观表现仅是一些随时间变化起伏的值,仅利用这些值作为特征输入用于建模往往是不行的,需要根据业务的需求对数据进行预处理提取特征值并用于机器学习建模,而这类的前奏曲往往是最难演奏的。
总之,机器学习(尤其是监督学习)建模前的输入就像人类长辈教育小孩一样,如果从小不输入正确的信息训练小孩,其最终结果是负面的,甚至是悲惨的。
(茶歇杂谈,见仁见智)
领取专属 10元无门槛券
私享最新 技术干货