基本知识
1.1.1 机器学习的任务
机器学习的任务种类较多,但是常规来讲可以以监督学习(Supervised Learning)和无监督学习(Unsupervised Learning)。其中监督学习关注对事物未知表现的预测,一般包括分类问题(classification)、回归问题(Regression)。无监督学习则倾向于对事物本身特性的分析,常用的技术包括数据降维(Dimensionality Reduction)和聚类问题(Clustering)。
分类问题,便是对其所在类别进行预测,类别是离散的,同时也是预先知道数量的。例如根据一个人的身高、体重和三维判定性别,性别是离散的,男和女,同时预先知道其数量。或者说更经典的例子,根据鸢尾花的花瓣、花萼的长宽等数据,判断其所属的鸢尾花亚种,因为鸢尾花的亚种的种类和数量也满足离散和预先知道这两项特征,因此也是分类预测问题。
回归同样是预测问题,只是预测的目标往往是连续的变量,比如根据房屋的面积、地理位置、建筑年代等对房屋销售价格进行预测,销售价格一定是一个连续的变量。
数据降维度是对事物的特征进行压缩和筛选。如果没有特定领域的知识,无法预先确定采样哪些数据,而现如今采样数据成本较低,但是筛选的成本比较高,比如在图像识别中,如今像素分辨率极大,因而若直接使用这些像素信息那么数据维度非常高,所以很难对数据进行处理。因此这样的数据通常需要进行降维,保存其最有区分度的像素组合,从此便能不影响效果,但是数据维度降低,降低运算难度,也更容易理解。
聚类则是依赖于数据的相似性,把相似的数据样本划分为一个簇,不同于分类问题,我们在大多数情况下不会预先知道簇的数量和每个簇的具体含义。例如购物网站对用户信息和购买习惯进行聚类分析,这样就可以进行分类的广告投放。
1.1.2 机器学习中应用的经验
习惯性的认为数据就是经验,只有那些对学习任务有用的特定信息才会被列入考虑范围,通常把这些反映数据内在规律的信息叫做特征(Feature)。譬如经典的人脸识别,很少直接用原始图像来进行经验来学习,而是先进行建委,把复杂的数据处理成有助于人脸识别的轮廓特征。
对于监督学习问题,所需要的经验一般包括特征,以及标记/目标(Label/Target)这样才能知道结果是什么,标记/目标的表现形式则取决于监督学习的种类。
无监督学习并不用于做结果预测,那么自然就不需要标记/目标,但是却更加适合对于数据结构的分析。正式因为这个区别可以尝尝获得大量无监督数据,而监督数据的标注因为经常耗费大量的时间、金钱和人力,所以数据量相对较少。
更重要的是,标记/目标的表现形式存在离散、连续变量的区别,从原始数据到特征数据的转换过程中也会遭遇到多种数据类型:类别型特征、数值型特征、甚至是缺失的数据。而学习的过程中需要将这些特征转换为具体的数据参与计算,所以通常要经过缺失数据补全、部分数据过滤、和数据标准化等预先对数据进行处理。
而通常所说的训练集就是既有特征,同时带有目标/标记的数据集。
1.1.3 机器学习的性能、精度表现形式
所谓的性能,便是评价完成任务的质量指标。通常为了评价其完成的质量,我们需要具有相同特征的数据,并将模型的预测结果与相对应的正确结果进行对比。这样的数据成为测试集。(测试集的数据一定不能出现在训练集中,也就是说他们说相互排斥的。)
预测精度问题:
- 对于分类问题来讲,需要根据预测正确类别的百分比来评判其性能,这个指标也通常成为准确性(Accuracy).
- 对于回归问题需要衡量预测值与实际值之间的偏差大小。
- 而通常这两种预测指标的表现形式有些不足。对于分类问题一般还有召回率(Recall)、精确率(Percision)以及F1指标。
- 对于回归问题一般又有三种关于回归的特有的评价机制如R-squared。【p69】
- 对于聚类问题,如果评估的数据有具体的所属类别,一般采用ARI(Adjust Rand Index)指标,他与分类问题的准确性(Accuracy)类似,但是它也兼顾的考虑到了类簇无法和分类标记意义对应的问题。如果没有具体的所属类别,那么一般使用轮廓系数(Slihouette Coefficient)来度量聚类的结果质量。取值范围【-1,1】数值越大表明效果越好。【P85】
- 对于数据降维如PCA,一般用处理过的数据与未降维的数据来进行对比即可。对比参数可根据数据所属类别来选择。
监督学习:
机器学习的监督学习模型的任务重点在于,根据已有经验的知识对未知样本的目标/标记进行预测,根据目标预测变量的类别不同,把监督学习任务大体分为分类学习与回归预测两类。
流程即如上体所示,首先需要准备训练数据,可以是文本、图像、音频等,然后抽取所需要的特征,形成特征向量(Feature Vectors),接着把这些特征向量连同对应的标记/目标(即结果)一同送入学习算法(Machine Learning Algorithm)中,训练出一个预测模型(Predictive Model),然后采用同样的特征抽取方法作用于新的测试数据,得到用于测试的特征向量,最后使用预测模型对这些待测试的特征向量进行预测并得到结果(Expected Label).
2.1.1分类学习(Classifier)
分类学习是最为常见的监督学习问题,最为基础的是二分类问题,即是判断是非,从两个类别中选择一个作为预测结果,除此之外还有多类分类即是在多余两个类别中选择一个作为预测结果,甚至还有多标签多分类问题,多标签多分类问题判断一个样本是否同时属于多个不同的类别。
比如实际生活中,遇到许多分类问题,如医生对肿瘤性质进行判定,邮件系统对手写数字进行识别,互联网公司对新闻进行分类,生物学家对物种类型进行鉴定。
2.1.1.1 线性分类器(Linear Classifier)
模型介绍:线性分类器(Linear Classifiers),是一种假设特征与分类结果存在线性关系的模型,这个模型通过累加计算每个维度的特征与各自的权重的乘积来帮助决策。常用的有LogisticRegression与SGDClassifiler。
数据描述:采用UCI的良/恶性乳腺癌肿瘤预测,分别是逻辑斯蒂回归分类,与随机梯度下降分类。
性能分析:准确率(Accuracy)、召回率(Recall)、精确率(Percision)以及F1指标。
特点分析:线性分类器可以说是最为基本和常用的机器学习模型,尽管受限于数据特征与分类目标之间的线性假设,仍然可以在科学研究和工程实践中吧线性分类器作为基准,所使用的模型包括LogisticRegression与SGDClassifiler,相比较,前者对参数的计算采用精确的解析方式,计算时间长但是模型性略高,后者采取随机梯度下降算法估计模型参数,计算时间段,但是模型性能略低。一般而言顺联的数据规模如果超过10W条,考虑到时间的耗用等因素,运用随机梯度算法对模型参数进行估计。
2.1.1.3 朴素贝叶斯(Native Bayes)
模型介绍:
朴素贝叶斯是一个非常简单,但是实用性很强的分类模型,不过和基于线性假设的(线性分类器、支持向量机)不同,朴素贝叶斯分类器的构造基础是贝叶斯理论。
数据描述:
朴素贝叶斯模型有着广泛的应用环境,特别是在文本分类的任务中间,包括互联网新闻的分类、垃圾邮件的筛选等。本次实例就采取新闻文本作为实验数据。
性能分析:
准确率(Accuracy)、召回率(Recall)、精确率(Percision)以及F1指标。通过这个测度对朴素贝叶斯模型在20类新闻文本分类任务上的性能进行评估。
特点分析:
朴素贝叶斯模型被广泛的运用于海量互联网文本分类任务。由于其较强的特征条件独立假设,使得模型预测所需估计的参数规模从幂指数向线性量级别减少,极大的节约了内存消耗和计算时间。但是也正因为这种强假设的限制,模型训练无法将各个特征之间的联系考量在内,使得该模型在其他数据特征关联性较强的分类任务上的性能表现不佳。
|
|
2.1.1.4 K近邻(K-Nearest Neighbor)
模型介绍:
假设有一些携带分类标记的训练样本,分布于特征空间中。(有三类颜色蓝绿红,但图黑白将就看吧),不同颜色代表各自的类别,对于一个待分类的样本,选取待分类样本在特征空间中距离最近的K个已标记样本作为参考,来帮助做出分类决策。因此可以得知K值不同得到的分类器可能不同。
数据描述:
使用K临近算法对生物物种进行分类,并且使用最为著名的鸢尾数据集。
性能分析:
准确率(Accuracy)、召回率(Recall)、精确率(Percision)以及F1指标。通过这个测度对朴素贝叶斯模型在20类新闻文本分类任务上的性能进行评估。
特点分析:
K临近分类是非常直观的机器学习模型,K临近算法与其他模型的最大不同在于该模型没有参数训练过程。也就是说没有通过任何学习算法分析训练数据,而只是根据测试样本在训练数据的分布直接作出决策。所以K临近算法属于无参数模型中非常简单的一种。但是这样的决策算法导致了非常高的计算复杂度和内存消耗。因为该模型每处理一个测试样本都需要对所有预先加载在内存的训练样本进行遍历、逐一计算相似度、排序并且选取K个最近邻训练样本的标记,进而做出决策。这是平方级别的算法复杂度,一旦数据量较大,时间消耗会很大。
2.1.1.5 决策树(Decision Tree)
模型介绍:
无论是logistic回归还是支持向量机模型,都在某种程度上要求被学习的数据特征和目标之间遵循着线性假设。但实际中很多情况这是不可能的。如一个人的年龄与患流感而死亡之间不存在线程关系,如果非要描述这种非线性关系,那么使用分段函数最为合理。而在机器学习中,决策树就是描述这种非线性关系的不二之选。
多层决策树的时候,模型在学习的时候就需要考虑特征节点的选取顺序,常用的度量方式包括信息熵(information Gain)和基尼不纯性(Gini Impurity)。
数据描述:
泰坦尼克号数据,预测事故中人生存的可能性。
性能分析:
准确率(Accuracy)、召回率(Recall)、精确率(Percision)以及F1指标。
特点分析:
相比于其他模型,决策树在模型描述上有巨大的优势,决策树的推断逻辑非常直观,具有清晰的可解释性,也方便了模型的可视化。这些特性同时保证了在使用决策树模型时,是无需考虑对数据量化甚至标准化的,并且仍然属于有参数模型,需要花费更多的时间在训练上。
2.1.1.6 集成模型(Ensemble):随机森林:Random Forest Classifier,梯度提升决策树:Gradient Tree Boosting。
模型介绍:
集成分类模型便是综合考量多个分类器的预测结果,从而做出决策。这种综合考量大体上分为两种:
1.一种是利用相同的训练数据同时搭建多个独立的分类模型,然后通过投票的方式,以少数服从多数的原则做出最终的分类决策。比较具有代表性的模型为随机森林分类器。即是在相同的训练数据上同时搭建多棵决策树,一株标准的决策树根据每维特征对预测结果的影响程度进行排序,进而决定不同特征从上至下构建分裂节点的顺序,但如果都这样,那么每一棵树都类似,那么就丧失了多样性,而随机森林分类器在构建过程中放弃了这一固定的排序算法,转而随机选取特征。【也是工业上对比的基准线】
2.另一种是按照一定次序搭建多个分类模型。这些模型之间彼此存在依赖关系。每一个后续模型的加入都需要对现有的集成模型的综合性能有所贡献,进而不断的提升更新后的集成模型的性能,并最终期望借助整合多个分类能力较弱的分类器,搭建出具有更强分类能力的模型。比较有代表性的就是梯度提升决策树。与构建随机森林分类器模型不同,每一棵决策树在生成的过程中对吼尽可能的降低整体集成模型在训练集上的拟合误差。
数据描述:
仍然用泰坦尼克号数据。
性能分析:
使用多种用于评价分类任务性能的指标,将单一决策树、随机森林分类器以及随机梯度提升决策树进行以下四种参数的对比。准确率(Accuracy)、召回率(Recall)、精确率(Percision)以及F1指标。
特点分析:
相比于其他单一的学习模型,集成模型可以整合多种模型,或者多次就一种类型的模型进行建模,由于模型估计参数的过程也同样受到概率的影响,具有一定的不确定性,因此集成模型虽然在训练过程中要耗费更多的时间,但是得到的综合模型往往具有更高的性能和更好的稳定性。
|
|
2.1.2 回归预测(Regressor)
回归问题和分类问题的区别在于其预测的目标是连续的变量,比如:价格、降水量等等。比如经典的例子房价预测,以下小节都采用这个例子。
2.1.2.1 线性回归器
模型介绍:
在线性分类器的时候,为了方便将实数域的结果映射到(0,1)区间,引入了逻辑斯蒂函数,而在线性回归问题中,预测目标直接就是实数域上的数值。因此优化目标更为简单,即最小化预测结果与真实值之间的差值。
此处采用线性回归模型LinearRegression和SGDRegressor两种线性模型。
数据描述:
美国波士顿地区的房价预测。
性能分析:
不同于类别预测,不能苛求回归预测的数值结果严格的与真实值相同。一般情况下,希望衡量预测值与真实值之间的差距。因此可以通过多种测评函数进行评价,最为直观的评价指标包括平均绝对误差(Mean Absolute Error,MAE),均方误差(Mean Squared Error,MSE),这些都是线性模型所优化的额目标。以及最传统的R-squared(用来衡量模型回归结果的波动可被真实值验证的百分比,也暗示了模型在数值回归方面的能力,同时即考量了回归值与真实值之间的差异,同时也反映了真实值的变动)
特点分析:
线性回归其是最为简单的、易用的回归模型。正是因为其对特征与回归目标之间的线性假设,从某种程度上也局限了其应用范围,特别是现实生活中的许多实例数据的各个特征与回归目标之间,绝大数不能保证严格的线性关系。
2.1.2.2 支持向量机
模型介绍:
与分类中的解释一致,只是用法不同,前者用来分类,而这里进行回归预测,具体的数值预测(在回归中可以对SVM配置不同的核函数)。
数据描述:
同上文支持向量机分类的数据
性能分析:
就不同的核函数装配下的支持向量机回归模型在测试集上的回归性能做出评估。会发现在不同的核函数下存在着很大的性能差异,在此例中使用了径向量(Radial basis function)核函数对特征进行非线性映射之后,支持向量机展现了最佳的回归性能。
特点分析:
可以帮助我们在海量甚至更高维度的数据中筛选出对预测任务最为有效的少数训练样本。这样不仅节省了模型学习所需要的数据内存,同时也提高了模型的预测性能。然后要获得此性能,就必须付出更多的计算代价(CPU资源和计算时间)。不同核函数下性能有差异,所以要多尝试几种核函数模型。
核函数:
核函数就是通过某种函数计算,将原有的特征映射到更高的维度空间,从而尽可能的达到新的高纬度特征线性可分程度。
2.1.2.3 K近邻
模型介绍:
不需要训练参数,对于待预测的测试样本选取K个最邻近的点进行回归值的决策。(自然也衍生出了待测试样本回归值的不同方式,即到底是对K个临近目标值使用普通的算术平均算法,还是同时考虑距离的差异进行加权平均,一下代码也会配置不同配置的K临近回归模型来比较性能差异)【预测方式为平均回归的K临近回归和加权回归的K临近回归】
数据描述:
仍然使用波士顿房价数据。
性能分析:
仍然使用R-squared、MSE、MAE三种指标。发现此例中加权平均的方式回归预测房价更具有好的预测性。
特点分析:
K临近回归于K临近分类一样,都属于无参数模型,同样没有训练的过程。但是模型的计算方法非常直观。
2.1.2.4 回归树
模型介绍:
回归树的叶节点的数据类型不是离散型,而是连续型的。决策树每个叶节点依照训练数据表现的概率倾向决定了其最终的预测类别,而回归树的叶节点却是一个个具体的值,从预测连续这个意义上严格来讲,回归树不能称为回归算法,因为回归树的叶子节点返回的是一团训练数据的均值,而不是具体的连续的预测值。
数据描述:
仍然采用波士顿房价数据。
性能分析:
效果显著优于LinearRegression和SGDRegression,所以可知道美国波士顿房价预测问题的特征与目标之间存在一定的非线性关系。
特点分析:
- 优点
- 数模型可以解决非线性特征的问题。
- 树模型不要求对特征数据进行标准化和统一量化,即数值型和类别型特征都可以直接被应用在树模型的构建和预测过程中
- 因为上面的优点,树模型也可以直观的输出决策过程,使得预测结果具有可解释性。
- 缺点
- 因为其可以解决复杂的非线性拟合问题,所以更加容易因为模型搭建过于复杂而丧失对新数据预测的精度(泛化力)
- 树模型从上至下的预测流程会因为数据细微的更改而发生较大的结构变化,因此预测稳定下较差
- 依托训练数据构架的最佳树模型是个NP-hard问题,所以有限时间内无法找到最优解,所以经常借助集成模型,在多个次优解中找到更高的模型性能。
|
|
2.1.2.5 集成模型
模型介绍:
同样有随机森林回归和随机梯度提升树模型,此外还加入了随机森林的变种:极限随机森林(Extremely Randomized Tree),与普通随机森林模型不同的是,极限随机森林在每当构建一棵树的分裂节点(node)的时候,不会任意选取特征,而是先随机收集一部分特征,然后利用信息熵(Information Gain)和基尼不纯性(Gini Impurity)等指标挑选最佳节点特征。
数据描述:
仍然是波士顿房价数据。
性能分析:
同样采用R-Squared、MAE、MSE三种预测指标。
特点分析:
许多业界从事商业分析系统开发和搭建的工作者更加青睐集成模型,并且经常以这些模型的性能表现为基准,与新设计的其他模型性能进行对比。虽然这些集成模型在训练过程中需要耗费更多的时间,但是往往可以提供更高的表现性能和更好的稳定性。
2.2 无监督学习
无监督学习着重于发现数据本身的分布特点,与监督学习不同,无监督学习不需要对数据进行标记。这样,在节省大量人工的同时,也让可以利用的数据规模变得不可限量。
从功能角度来说无监督学习模型帮助我们发现数据的“群落”(聚类,分布情况),同样也可以寻找离群的样本,另外对于特征维度非常高的数据样本,我们同样可以通过无监督学习对数据进行降维,但是保留最具有区分性的低纬度特征。这些都是在海量数据处理中非常实用的技术。
2.2.1 数据聚类
数据聚类是无监督学习的主流应用之一,最为经典并且易用的聚类模型就是K-Means算法。该算法要求我们预先设定聚类的个数,然后不断更新聚类中心,经过几轮这样的迭代后,最终的目标就是让所有数据点到其所属数据类中心距离的平方和趋于稳定。
2.2.1.1 K均值算法(K-means)
模型介绍:
K-means的流程可以分为四个阶段。
- 1.随机分布K个特徵空间内的点作为初始的聚类中心。
- 2.然后,对于根据每个数据的特性向量从K个聚类中心中寻找距离最近的一个,并且把该数据标记为从属于这个聚类中心。
- 3.接着,在所有的数据都被标记过聚类中心之后,根据这些数据新分配的类簇,重新对K个聚类中心做计算。
- 4.如果一轮下来,所有的数据点从属的聚类中心与上一次的分配的类簇没有变化,那么迭代可以停止,否则回到步骤2继续循环。
过程如下图:
数据描述:
手写体数字图像数据的完整版本。
性能分析:
1.如果被用来评估的数据本身带有正确的类别信息,就使用Adjusted Rand Index(ARI),这个指标与分类问题中计算准确性的方法类似,同时也兼顾到了类簇无法和分类标记一一对应的问题。
特点分析:
K-means聚类模型所采用的迭代算法,直观易懂并且非常实用,但有2大缺陷:1.容易收敛到局部最优解2.需要预先设定簇的数量。
为了解决以上问题可以参考肘部观察法。
从这个拐点对应的K开始,类簇中心的增加不会破坏数据聚类的结构。
|
|
2.2.2 特征降维
模型介绍:
特征降维是无监督学习的另一个应用,其一我们经常在实际项目中遭遇特征维度非常高的训练样本,往往无法借助自己领域的知识人工构建有效特征,其二在数据表现上,我们无法用肉眼观测到超过3个维度的特征。因此特征将为不仅重构了有效的低纬度特征向量,同时也为数据展现提供了可能,在数据降维方法中,主成分分析(Principal Component Analysis)是最为经典和使用的特征降维技术,特别是在辅助图像识别方面,尤为突出的表现。以下示例一PCA压缩为例。
2.2.2.1 主成分分析(Principal Component Analysis:PCA)
数据描述:
使用手写字体图像全集数据。
性能分析:
可以在降维后再用数据进行训练,再用于分类,与未经过降维分类的实验来进行比较,来验证效果的好坏。
会发现经过PCA特征亚索和重建后,特征数据会损失2%左右的预测准确性,但是相比于原始数据的六十四维度的特征而言,使用PCA会压缩并且降低68.75%的维度。在于海量数据时候非常有效。
特点分析:
降维/压缩问题则是选取数据具有代表性的特征,在保持数据多样性的基础上,规避掉大量的特征冗余和噪声,不过这个过程也很有可能会损失一些有用的模式信息,经过大量的时间证明,相较于损失的少部分模型性能,维度压缩能够节省大量用于模型训练的时间,这样一来,使得PCA所带来的模型総合効率变得更为划算。