本节将讨论有监督、无监督和强化三种不同类型的机器学习,分析它们之间的根本差别,并用概念性的例子开发一个可以解决实际问题的应用:
用有监督学习预测未来
用强化学习解决交互问题
用无监督学习发现隐藏结构
安装包:NumPy 、SciPy 、scikit-learn 、Matplotlib 、pandas
安装anaconda
面向对象的感知器API
在鸢尾花数据集上训练感知器模型
1.梯度下降为最小代价函数
2.用Python实现Adaline
3.通过调整特征大小改善梯度下降
标准化:
x j = ( x j − u j ) / d e t a j x_j=(x_j-u_j)/deta_j xj=(xj−uj)/detaj
4.大规模机器学习与随机梯度下降
本章主要介绍:
·介绍强大且常用的分类算法,如逻辑回归、支持向量机和决策树。
·scikit-learn机器学习库通过对用户友好的Python API提供各种机器学习
算法,本章将介绍实例并对其进行解释。
·讨论线性和非线性决策边界分类器的优劣。
1.逻辑回归的直觉与条件概率
2.学习逻辑代价函数的权重
3.把转换的Adaline用于逻辑回归算法
4.用scikit-learn训练逻辑回归模型
5.通过正则化解决过拟合问题
L2正则化(有时也称为L2收缩或权重衰减)
1.最大边际的直觉
2.用松弛变量处理非线性可分
3.其他的scikit-learn实现
核方法的逻辑是针对线性不可分数据,建立非线性组合,通过映射函数把原始特征投影到一个高维空间,特征在该空间变得线性可分。
1.处理线性不可分数据的核方法
2.利用核技巧,发现高维空间的分离超平面
1.最大限度地获取信息——获得最大收益
2.构建决策树
3.通过随机森林组合多个决策树
本章学习了许多不同的解决线性和非线性问题的机器学习算法。如果关心可解释性,决策树特别有吸引力。逻辑回归不仅是一种有用的在线随机梯度下降模型,而且还可以预测特定事件的概率。虽然支持向量机有强大的线性模型,也可以通过核技巧扩展到非线性问题,但必须调整许多参数才能做好预测。相比之下,像随机森林这样的组合方法不需要调整太多参数,而且不易过拟合,像决策树一样容易,这使得其成为许多实际问题领域具有吸引
力的模型。KNN分类器通过懒惰学习提供了另一种分类方法,允许在没有任何模型训练的情况下进行预测,但预测所涉及的计算成本昂贵。
本章将讨论必要的数据预处理技术,以帮助建立良好的机器学习模型。本章将主要涵盖下述几个方面:
·去除和填补数据集的缺失数值
·将分类数据转换为适合机器学习算法的格式
·为构造模型选择相关的特征
1.识别数据中的缺失数值
2.删除缺失的数据
3.填补缺失的数据
4.了解scikit-learn评估器API
1.名词特征和序数特征
2.映射序数特征
3.分类标签编码
4.为名词特征做热编码
归一化和标准化两种常见方法可以将不同的特征统一到同一比例。这些术语不严格而且经常在不同领域使用,具体含义要根据场景来判断。归一化通常指的是把特征的比例调整到[0,1]区间,这是最小最大比例调整的一种特殊情况。
使用标准化,可以把特征列的中心设在均值为0且标准偏差为1的位置,这样特征列呈正态分布,可以使学习权重更容易。
过拟合的原因是,与给定的训练数据相比,我们的模型太过复杂。减少泛化误差的常见解决方案如下:
·收集更多的训练数据
·通过正则化引入对复杂性的惩罚
·选择参数较少的简单模型
·减少数据的维数
1.L1和L2正则化
2.为序数特征选择算法
另外一种降低模型复杂度以及避免过拟合的方法是通过特征选择降维,这对未正则化的模型特别有用。主要有两类降维技术:特征选择和特征提取。
经典的序数特征选择算法是逆顺序选择(SBS),其目的是应对分类器性能最小的衰减来降低初始特征子空间的维数,从而提高计算效率。
前面的章节学习了如何通过逻辑回归用L1正则化来消除不相关的特征,用SBS算法进行特征选择,并将其应用到KNN算法。另一个用来从数据集中选择相关特征的有用方法是随机森林。
本章学习了用于特征提取降维的三种不同的基本技术:标准PCA、LDA和核PCA。PCA将数据投影到低维子空间,忽略分类标签,沿着正交特征轴最大化方差。与PCA相反,LDA是一种有监督的降维技术,这意味着它考虑了训练集中的分类信息,试图在线性特征空间中最大化类的可分性。
最后,了解了非线性特征提取器核PCA。用核技巧和临时投射到更高维度特征空间的方法,最终能够把非线性特征组成的数据集压缩到低维子空间,这些类在这里线性可分。
特征选择和特征提取的区别在于,特征选择算法(如序数逆选择)保持原始特征,特征提取将数据转换或投影到新的特征空间。在降维的背景下,可以把特征提取理解为数据压缩方法,其目的是维护大部分的相关信息。PCA是一种无监督学习方法
1.主成分分析的主要步骤
2.逐步提取主成分
1)标准化数据集。
2)构建协方差矩阵。
3)获取协方差矩阵特征值和特征向量。
4)以降序对特征值排序,从而对特征向量排序。
3.总方差和解释方差
4.特征变换
5.scikit-learn的主成分分析
PCA试图找到数据集中最大方差的正交成分轴,而LDA的目标是寻找和优化具有可分性的特征子空间。
1.主成分分析与线性判别分析
2.线性判别分析的内部逻辑
3.计算散布矩阵
4.在新的特征子空间选择线性判别式
5.将样本投影到新的特征空间
6.用scikit-learn实现的LDA
1.核函数和核技巧
2.用Python实现核主成分分析
3.投影新的数据点
4.scikit-learn的核主成分分析
这一部分将介绍一个非常方便的工具,scikit-learn的Pipeline类。可以拟合任意多个转换步骤的模型,并以此对新数据进行预测。
抵抗交叉验证和k折交叉验证,它有助于获得
对模型泛化性能的可靠评估,即模型对未见过的数据的表现。
抵抗验证方法把初始数据集分裂成独立的训练集和测试集,前者用于训练模型,后者用来评估模型的泛化性能。抵抗方法的缺点是性能评估可能会对如何把训练集分裂成训练子集和验证子集非常敏感,评估结果会随不同数据样本而变化。
k折交叉验证将训练集随机分裂成k个无更换子集,其中k–1个子集用于模型训练,一个子集用于性能评估。重复该过程k次,得到k个模型和k次性能估计。
1.用学习曲线诊断偏差和方差问题
2.用验证曲线解决过拟合和欠拟合问题
验证曲线是通过解决过拟合和欠拟合问题来提高模型性能的有力工具。虽然验证曲线与学习曲线相关,但是我们并不根据训练和测试准确度与样本规模之间的函数关系来绘图,而是通过调整模型参数来调优,例如逻辑回归中的逆正则化参数C。
1.通过网格搜索为超参数调优
网格搜索方法的逻辑非常简单,属于暴力穷尽搜索类型,预先定义好不同的超参数值,然后让计算机针对每种组合分别评估模型的性能,从而获得最佳组合参数值。
2.以嵌套式交叉验证来选择算法
前面的章节用模型准确度来评估模型,这是有效且可量化的模型性能指标。然而,还有几个其他的性能指标也可以度量模型的相关性,如精度、召回率和F1分数。
1.含混矩阵
真阳性(TP)、真阴性(TN)、假阳性(FP)和假阴性(FN)计数值所构成的方阵
2.优化分类模型的准确度和召回率
3.绘制受试者操作特性图
4.多元分类评分指标
类的不平衡是个常见问题,即当数据集的一个或多个类的样本被过度代表。
处理类不平衡问题的其他常用策略包括对少数类上采样,对多数类下采样以及生成人造训练样本。
另一种处理类不平衡问题的技术是人工生成训练样本。
使用最广泛的人工生成训练样本的算法可能是人工生成少数类的过采样技术(SMOTE)
集成方法的目标是组合不同的分类器,形成比单个分类器具有更好泛化性能的元分类器。
1.实现基于多数票的简单分类器
2.用多数票原则进行预测
3.评估和优化集成分类器
实践中更复杂的分类任务和高维度数据集容易导致单个决策树模型过拟合,这正是套袋算法能真正发挥作用的地方。
最后注意到套袋算法可以有效地减少模型方差。然而,套袋在减少模型偏差方面却无效,也就是说,模型过于简单以至于无法很好地捕捉数据中的趋势。
这就是为什么我们想要在低偏差集成分类器上实现套袋,例如修剪决策树。
原始的增强过程被总结为以下四个关键步骤:
1.用从训练集D无替换抽取的训练样本随机子集d 1 来训练弱学习者C 1
2.从训练集无替换抽取第二个随机训练子集d 2 并把之前的分类错误样本中的50%加入该子集来训练弱学习者C 2
3.从训练集D找出那些与C 1 和C 2 不一致的样本形成训练样本d 3 来训练第3个弱学习者C 3
4.通过多数票机制集成弱学习者C 1 ,C 2 和C 3
本章将主要涵盖下述几个方面:
·清洗和准备文本数据
·根据文本数据建立特征向量
·训练机器学习模型来区分正面或者负面评论
·用基于外存的学习方法来处理大型文本数据集
·根据文档推断主题进行分类
1.获取电影评论数据集
2.把电影评论数据预处理成更方便格式的数据
1.把词转换成特征向量
2.通过词频逆反文档频率评估单词相关性
tf-idf
3.清洗文本数据
4.把文档处理为令牌
本节将介绍一种常用的被称为潜在狄氏分配(LDA)的主题建模技术。然而,请注意,虽然潜在狄氏分配通常缩写为LDA,但不要与线性判别分析混淆,那是一种有监督的降维技术,第5章曾经介绍过。
1.使用LDA分解文本文档
LDA是一种生成概率模型,试图找出经常出现在不同文档中的单词。假设每个文档都是由不同单词组成的混合体,那么经常出现的单词就代表着主
题。
2.LDA与scikit-learn
1.简单线性回归
2.多元线性回归
1.加载住房数据集
2.可视化数据集的重要特点
探索性数据分析(EDA)是在进行机器学习模型训练之前值得推荐的重要一步。
散点图矩阵
3.用关联矩阵查看关系
关联矩阵是包含皮尔森积矩相关系数(通常简称为皮尔森的r)的正方形矩阵,用来度量特征对之间的线性依赖关系。
除了淘汰离群值之外,还有一种更为稳健的回归方法,即采用随机抽样一致性(RANSAC)的算法,根据数据子集(所谓的内点)拟合回归模型。
残差图是判断回归模型常用的图形工具。这有助于检测非线性和异常值,并检查这些错误是否呈随机分布。
另一个有用的模型性能定量度量是所谓的均方误差(MSE),它仅仅是为了拟合线性回归模型,而将SSE成本均值最小化的结果。
有时候报告决定系数(R 2 )可能更有用,可以把这理解为MSE的标准版,目的是为更好地解释模型的性能。
正则线性回归最常用的方法包括所谓的岭回归、最小绝对收缩与选择算子(LASSO)以及弹性网
络。岭回归是一个L2惩罚模型。
1.决策树回归
2.随机森林回归
本章开篇学习了如何构建简单的线性回归模型,以分析单个解释变量和连续响应变量之间的关系。然后讨论了一种有用的解释数据分析技术,以查
看数据中的模式和异常,这是在预测建模任务中迈出的重要的第一步。
我们采用基于梯度的优化方法实现线性回归建立了第一个模型。然后看到了如何把scikit-learn线性模型用于回归,实现用于处理离群情况的稳健回
归方法(RANSAC)。为了评估回归模型的预测性能,我们计算了平均误差平方和以及相关的R 2 度量。此外,还讨论了判断回归模型问题的图解方法:残差图。
之后我们讨论了如何把正则化方法应用于回归模型以降低模型复杂度,同时避免过拟合。然后介绍了为非线性关系建模的几种方法,包括多项式特征变换和随机森林回归。
1.scikit-learn的k-均值聚类
2.k-均值++——更聪明地设置初始聚类中心的方
法
3.硬聚类与软聚类
硬聚类描述了一类算法,把数据集中的每个样本分配到一个集群,例如在前面小节中讨论过的k-均值算法。与此相反,软聚类算法(有时也称为模糊聚类)将一个样本分配给一个或多个集群。
4.用肘法求解最佳聚类数
肘法的逻辑是识别当失真增速最快时的k值,如果为不同k值绘制失真图,情况就会变得更清楚。
5.通过轮廓图量化聚类质量
1.以自下而上的方式聚类
2.在距离矩阵上进行层次聚类
3.热度图附加树状图
4.scikit-learn凝聚聚类方法
基于密度的有噪声的空间聚类应(DBSCAN),不像k-均值方法那样假设集群呈球形,或是把数据集分成不同的需要人工设定分界点的层级。顾名思义,基于密度的聚类把标签分配给样本点密集的区域。DBSCAN的密度定义为在指定半径ε范围内的点数。