机器学习理论基础学习(一)
目录:
- 机器学习简介
- 算法分类
- 模型评估
- 模型选择
参考文献:
[1]雷明. 机器学习与应用[M]. 北京:清华大学出版社,2019.01.
[2]Ethem Alpaydin. Introduction to Machine Learning Third Edition[M]. 北京:机械工业出版社,2016.01.
[3]周志华. 机器学习[M]. 北京:清华大学出版社,2016.01.
1、机器学习(Machine Learning)简介
- 发表机器学习方面的常见顶级期刊和顶级会议:
- 期刊:
- 机器学习专门期刊:
- 《Journal of Machine Learning Research》
- 《Machine Learning》
- 《Neural Networks》
- 《IEEE Transactions on Neural Networks and Learning Systems》
- 《IEEE Transactions on Pattern Analysis and Machine Intelligence》
- 《IEEE Transactions on Image Processing》
- 数据挖掘为主:
- 《IEEE Transactions on Knowledge and Data Engineering》
- 《ACM Transactions on Knowledge Discovery from Data》
- 机器学习专门期刊:
- 会议:
- ICCV:International Conference on Computer Vision
- CVPR:IEEE Conference on Computer Vision and Pattern Recognition
- ICML:International Conference on Machine Learning
- AAAI:AAAI Conference on Artificial Intelligence
- NIPS:Neural Information Processing Systems
- IJCAI:International Joint Conference on Artificial Intelligence
- 期刊:
- 定义: 人工智能的分支和一种实现方法,根据样本数据学习模型,用模型对数据进行预测与决策,也称为推理(Inference)
- 本质:模型选择 + 确定模型参数
- 发展:
- 20世纪80年代以前,逻辑推理 + 知识工程与专家系统,利用规则库进行推断与决策以实现智能
- 缺点:
- 高度依赖人对具体问题的专业知识
- 通用性差
- 对于复杂性、多样性问题,如图像、语音识别等,无法给出一个精确的规则描述
- 缺点:
- 20世纪80年代开始,机器学习
- 20世纪80年代:
- 用于多层神经网络训练问题的反向传播算法出现
- 各种决策树出现(如分类与回归树)
- 1986年,D.E.Rumelhart等人重新发明了BP算法
- 1989年,LeCun设计出第一个卷积神经网络(CNN)
- 20世纪90年代:
- 统计学习(Statistical Learning)出现,代表性技术是支持向量机(Support Vector Machine,SVM)以及更一般的核方法(Kernel Methods)
- 集成学习算法AdaBoost算法出现
- 集成学习算法随机森林出现
- 循环神经网络RNN/LSTM出现
- 非线性数据降维算法流形学习出现
- 2006年,Hinton提出深度学习的预训练方法
- 2012年,深层卷积神经网络AlexNet成功运用于图像分类任务
- 2016年,DeepMind公司的AlphaGo
- 优点:
- 无须人工给出规则,程序自动从大量的样本中抽象、归纳出知识与规则
- 通用性更好
- 应用领域广泛
- 20世纪80年代:
- 20世纪80年代以前,逻辑推理 + 知识工程与专家系统,利用规则库进行推断与决策以实现智能
- 典型应用领域:
- 模式识别(Pattern Recognition):对声音、图像以及其他类型的数据对象进行识别
- 机器视觉(Computer Vision):图像理解 + 空间三维信息获取 + 运动感知
- 语音识别(Automatic Speech Recognition,ASR):声音信号(时间序列数据,每个时刻一个值)→文字
- GMM-HMM框架:高斯混合模型(Gaussian Mixture Model,GMM)和隐马尔可夫模型(Hidden Markov Model,HMM)
- 循环神经网络和端到端结构(如CTC,连接主义时序分类)
- 人脸识别(Face Recognition):找出图像中所有的人脸,确定它们的大小和位置,输出人脸外接矩形的坐标和大小及姿态(如倾斜角度等)
- 核心问题:
- 人脸可能出现在图像中的任意一个位置(滑动窗口技术:在检测时用固定大小的窗口对图像从上到下、从左到右扫描,判断窗口里的子图像是否为人脸)
- 人脸可能有不同的大小
- 人脸在图像中可能有不同的视角和姿态
- 一个人脸可能出现多个检测框(非最大抑制技术(Non-Maximum Suppression,NMS),对检测结果进行合并去重)
- 卷积神经网络(R-CNN、YOLO、SSD算法,抛弃滑动窗口,使用图像分割技术估计出候选目标或直接回归出目标的大小和位置)
- 支持向量机
- 简单Haar型特征和级联AdaBoost分类器算法
- 核心问题:
- 自动驾驶(Autonomous Driving):
- 定位:GPS、雷达、图像分析 + 高精度数字地图
- 环境感知:卷积神经网络实现图像和环境的感知理解,激光雷达、声波、图像 + 机器学习
- 路径规划:Dijkstra算法、A*搜索算法
- 决策与控制:强化学习确定车辆的行为,输入当前路况,输出当前时刻要执行的动作
- 自然语言处理(Natural Language Processing,NLP)
- 中文分词:输入:句子中的每个字,输出:每个字的类别标签BMES,B表示当前字为一个词的开始,M表示当前字为一个词的中间位置,E表示当前字为一个词的结束位置,S表示单字词
- 基于词典匹配(基于规则)
- 全切分路径技术:列出所有切分的方案,然后选择最佳的方案,计算量呈指数级增长
- 序列标注:使用隐马尔可夫模型、条件随机场
- 词性标注(POS Tagging):输入:一个句子的单词序列,每个时刻的输入向量是单词的one-hot编码向量,输出:单词属于某一类词的概率,此时输出层可以采用Softmax回归
- 基于统计信息:从训练样本中统计出每种词性的词后面所跟的词的词性,然后计算最大的概率
- 使用条件熵、隐马尔可夫模型、条件随机场
- 命名实体识别(Named Entity Recognition,NER):输入:一个句子,输出:标签序列
- 文本分类
- 支持向量机
- 贝叶斯分类器
- 卷积神经网络
- 循环神经网络
- 自动摘要:序列到序列的预测问题,输入:一句话或多句话,输出:生成的摘要序列
- 机器翻译(Machine Translation,MT):将一种语言的语句转换为另一种语言的语句
- 循环神经网络
- 卷积神经网络
- 序列到序列的学习(seq2seq)
- 中文分词:输入:句子中的每个字,输出:每个字的类别标签BMES,B表示当前字为一个词的开始,M表示当前字为一个词的中间位置,E表示当前字为一个词的结束位置,S表示单字词
2、算法分类
- 按照样本数据是否带有标签值(Label):
- 有监督学习(Supervised Learning):样本数据带有标签值,从训练样本中学习得到一个模型,然后用这个模型对新的样本进行预测推断
- 目标:函数输出值与样本真实标签值之间的误差最小化,训练样本集的似然函数最大化
- 最大似然估计(Maximum Likelihood Estimate,MLE):寻求一组参数,使得给定的样本集出现的概率最大
- 应用:
- 垃圾邮件分类
- 手写文字识别
- 人脸识别
- 语音识别
- 类别:
- 分类问题(Classification):样本的标签是整数,预测函数是一个向量到整数的映射
- 线性分类:预测函数是线性函数
- 线性支持向量机
- logistic回归
- 非线性分类:决策函数是非线性函数,分类边界是n维空间中的曲面
- 支持向量机
- 人工神经网络
- 决策树
- 线性分类:预测函数是线性函数
- 回归问题(Regression):样本的标签是连续实数,预测函数是一个向量到实数的映射
- 线性回归
- 非线性回归
- 分类问题(Classification):样本的标签是整数,预测函数是一个向量到整数的映射
- 目标:函数输出值与样本真实标签值之间的误差最小化,训练样本集的似然函数最大化
- 无监督学习(Unsupervised Learning):对没有标签的样本进行分析,发现样本集的结构或者分布规律
- 应用:
- 聚类(Clustering):分类问题的一种,把一批没有标签的样本划分成多个簇(Cluster)
- 目标:在某种相似度指标下,每个簇中的样本尽量相似,不同簇的样本之间尽量不同
- 表示学习:从样本中自动提取出特征向量,用于分类和聚类等目的
- 自动编码器
- 受限玻尔兹曼机
- 数据降维:将n维空间中的向量x通过某种映射函数映射到更低维的m维空间中
- 线性数据降维算法:主成分分析
- 非线性数据降维算法:流形学习
- 聚类(Clustering):分类问题的一种,把一批没有标签的样本划分成多个簇(Cluster)
- 应用:
- 半监督学习(Semi-Supervised Learning):无标签样本的数量远大于有标签样本数
- 启发式算法
- 低密度分割假设
- 基于图的算法
- 半监督深度学习
- 有监督学习(Supervised Learning):样本数据带有标签值,从训练样本中学习得到一个模型,然后用这个模型对新的样本进行预测推断
- 按照求解的方法,给定特征向量x,标签值y,分类算法可以分为:
- 判别模型:对条件概率p(y | x)建模
- 决策树
- kNN算法
- 人工神经网络
- 支持向量机
- logistic回归
- AdaBoost算法
- 生成模型:对联合概率p(x, y)建模
- 贝叶斯分类器
- 高斯混合模型
- 隐马尔可夫模型
- 受限玻尔兹曼机
- 生成对抗网络
- 判别模型:对条件概率p(y | x)建模
- 强化学习:输入环境参数,确定要执行的动作。训练时,对正确的动作做出奖励,对错误的动作进行惩罚,训练完成后用得到的模型进行预测
- 基于动态规划的算法
- 蒙特卡洛算法
- 时序差分学习
- 深度强化学习
3、模型评估
- 评估方法:
- 适用于较大数据集:
- 交叉验证法(Cross Validation):k折交叉验证(K-fold Cross Validation)将样本随机、均匀地分成k份,轮流用其中的k - 1份训练模型,1份用作测试集,从而可以进行k次训练和测试,用k个测试结果的均值作为最终的准确率
- k最常用的取值是10,其他常用的值有5,20
- 10次10折交叉验证:将10折交叉验证随机使用不同的划分重复10次(进行了100次训练 / 测试)
- 留出法(Hold-out):将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,D = S ∪ T,S ∩ T = ∅
- 分层采样(Stratified Sampling):保留类别比例的采样方式
- 一般采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果
- 常见的做法是将大约2/3 - 4/5的样本用于训练,剩余样本用于测试
- 交叉验证法(Cross Validation):k折交叉验证(K-fold Cross Validation)将样本随机、均匀地分成k份,轮流用其中的k - 1份训练模型,1份用作测试集,从而可以进行k次训练和测试,用k个测试结果的均值作为最终的准确率
- 适用于较小数据集:
- 自助法(Bootstrapping):假设样本数为m,每次随机从数据集D中挑选一个样本,将其拷贝放入D',然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能采到;这个过程重复m次后,就得到了包含m个样本的数据集D'。
- 适用于较小数据集以及难以有效划分训练 / 测试集时
- 自助法(Bootstrapping):假设样本数为m,每次随机从数据集D中挑选一个样本,将其拷贝放入D',然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能采到;这个过程重复m次后,就得到了包含m个样本的数据集D'。
- 适用于较大数据集:
- 性能度量(Performance Measure):
- 分类问题:
- 精度与召回率:
- TP(True Positive,真正例):测试样本中正样本被分类器判定为正样本的数量
- FN(False Negative,假反例):测试样本中正样本被分类器判定为负样本的数量
- TN(True Negative,真反例):测试样本中负样本被分类器判定为负样本的数量
- FP(False Positive,假正例):测试样本中负样本被分类器判定为正样本的数量
- 样例总数 = TP + FP + TN + FN
- 精度(Precision):也称为查准率,P = TP / (TP + FP),被分类器判定为正样本的样本中真正的正样本所占的比例
- 召回率(Recall):也称为查全率,R = TP / (TP + FN),所有正样本中被分类器判定为正样本的比例
- F1度量:基于精度和召回率的调和平均(Harmonic Mean)定义
- 1 / F1 = 1/2 * (1 / P + 1 / R),即F1 = 2PR / (P + R) = 2TP / 样例总数 + TP - TN
- Fβ = (1 + β²)*PR / (β² * P + R),当β = 1时退化为标准的F1;β > 1时查全率有更大影响,β < 1时查准率有更大影响
- P-R图:横坐标查全率,纵坐标查准率
- 平衡点(Break-Even Point,BEP):查准率等于查全率的取值
- 精度与召回率:
- 二分类问题(Binary Classification):
- ROC曲线(Receiver Operator Characteristic Curve,接收机操作曲线):横轴为假阳率,纵轴为真阳率,将各种灵敏度下的准确率指标连成一条曲线
- 假阳率(FPR):FPR = FP / (FP + TN),所有负样本被分类器判定为正样本的比例
- 真阳率(TPR):TPR = TP / (TP + FN),所有正样本被分类器判定为正样本的比例
- 灵敏度:分类器的阈值
- AUC(Area Under ROC Curve):ROC曲线下的面积
- 特点:
- ROC曲线越陡峭、越高,算法的性能越好
- 若一个学习器的ROC曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者
- ROC曲线(Receiver Operator Characteristic Curve,接收机操作曲线):横轴为假阳率,纵轴为真阳率,将各种灵敏度下的准确率指标连成一条曲线
- 多分类问题(Multi-class Classification):
- 混淆矩阵(Confusion Matrix):对于k分类问题,混淆矩阵为k × k的矩阵,元素cij表示第i类样本被分类器判定为第j类的数量
- 特点:对角线的值越大,分类器的准确率越高
- 混淆矩阵(Confusion Matrix):对于k分类问题,混淆矩阵为k × k的矩阵,元素cij表示第i类样本被分类器判定为第j类的数量
- 分类问题:
4、模型选择(Model Selection)
- 对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型
- 过拟合与欠拟合:
- 泛化能力(Generalization):模型从训练集推广到测试集的能力,具有强泛化能力的模型能够很好地适用于整个样本空间。
- 过拟合(Over-Fitting):训练得到的模型在训练集上表现好,在测试集上表现不好,推广泛化性差
- 原因:
- 模型本身复杂,拟合了训练样本集中的噪声
- 训练样本太少或缺乏代表性
- 过拟合是无法彻底避免的,只能减小其风险
- 原因:
- 欠拟合(Under-Fitting):训练得到的模型在训练集上表现不好,在测试集上表现也不好,没有学习到数据的规律
- 原因:
- 模型本身过于简单
- 特征数太少无法正确建立映射关系
- 原因:
- 偏差-方差分解(Bais-Variance Decomposition):解释学习算法泛化性能的重要工具
- 泛化性能是由学习算法的能力、数据的充分性、学习任务本身的难度所共同决定的
- 假设样本特征向量为x,标签值为y,要拟合的目标函数为f(x),算法拟合的目标函数为F(x),噪声项为δ²
- 偏差(Bias):错误的模型假设所导致的误差,度量了模型的预测值的数学期望与真实值的偏离程度,刻画了学习算法本身的拟合能力
- Bias(F(x)) = E(F(x)-f(x))
- 高偏差 → 欠拟合
- 方差(Variance):表示模型预测值的变化范围,刻画了数据扰动所造成的影响。个体偏离期望的差,再对这个差值进行平方,最后求这些平方的期望
- D(F(x)) = E(F²(x)) - E²(F(x)),推导过程如下:
- D(F(x)) = E(F(x) - E(F(x)))² = E(F²(x) - 2F(x)E(F(x)) + E²(F(x))) = E(F²(x)) - 2E(F(x))E(F(x)) + E²(F(x)) = E(F²(x)) - E²(F(x))
- 高方差 → 过拟合
- D(F(x)) = E(F²(x)) - E²(F(x)),推导过程如下:
- 模型的总体误差 = 偏差的平方与方差之和
- 偏差-方差分解公式:E(y - F²(x)) = Bias²(F(x)) + D(F(x)) + δ²
- 噪声:表达了在当前学习任务上任何学习算法所能达到的期望泛化误差的下界,刻画了学习问题本身的难度
- 误差(Error):学习器的实际预测输出与样本的真实输出之间的差异
- 训练误差(Training Error):也叫做经验误差(Empirical Error),指学习器在训练集上的误差
- 泛化误差(Generalization Error):在新样本上的误差
- 特点:
- 模型过于简单 → 大偏差和小方差
- 模型过于复杂 → 大方差和小偏差
- 正则化:
- 为了防止过拟合,为损失函数加上一个惩罚项,对复杂的模型进行惩罚,强制让模型的参数尽可能小,使得模型更简单
- 正则化项可使用L1范数,L2范数或其他范数