吴恩达机器学习系列课程笔记——机器学习系统设计

该系列笔记内容是楼主在观看课程时记录的,其中图片是视频中ppt的截图,内容仅供参考,有问题欢迎大家指出。


机器学习系统设计

本章主要介绍误差分析法以及相关的机器学习系统

  • 建议先做一个简单而暴力的算法,再通过诊断法可以了解算法的不足,并了解哪个是难以处理的样本类型,从而更好将精力集中在优化上

P. S. 如何对模型进行诊断可以看吴恩达机器学习系列课程笔记——机器学习的评估和诊断

1. 误差分析

1.1 交叉验证错误率(Cross Validation Error)

  • 交叉验证错误率也称为单一规则的数值评价指标(Single Rule Number Evaluation Metric),用于对比查看添加某种优化方法的错误率(如下图例子中可以根据是否有添加词干提取算法的错误率进行判断)

吴恩达机器学习系列课程笔记——机器学习系统设计

交叉验证错误率
  • 从数学的角度上建议在交叉验证集上做误差分析,而非在测试集上做

1.2 查准率和召唤率(Precision/ Recall)

吴恩达机器学习系列课程笔记——机器学习系统设计

查准率和召唤率
  • 查准率是指预测的准确性,通过正确预测某个类型的值比预测所有该类型的值得到;召唤率是指某类预测的占比,通过正确预测某个类型的值比整体该类型真实值得到,可以通过该值判断算法是否出现全设为一个类别的情况
  • 偏斜类问题(Skewed Classes) 是指一个类中的样本数远多于另一个类,该情况用分类精确度并不能很好地衡量算法,但使用查准率和召唤率则更有效

吴恩达机器学习系列课程笔记——机器学习系统设计

查准率和召唤率
  • 查准率与召唤率的平衡是根据自定义的阈值来衡量的,其中两者关系曲线在不同情况下会呈现不同曲线,具体取决于回归模型的具体算法,如上图所示

1.2.1 评估度量方法 F1 Score

吴恩达机器学习系列课程笔记——机器学习系统设计

F1Score评估标准
  • 当查准率和召唤率至少有一方足够低时,会导致整体数值较低,若按照平均值计算方法则不能很好的选择出最优模型,如上图所示;因此引入F1 Score评估度量方法,即2PRP+R2\frac{PR}{P+R}帮助更好去判断算法的情况

2. 推荐系统

2.1 基于内容的推荐算法(Content Based Recommendations)

吴恩达机器学习系列课程笔记——机器学习系统设计

以电影推荐系统为例
  • 已知数据集的特征的前提下可以使用,如电影推荐系统中已知各个电影类型的特征;其代价函数于线性回归类似,只不过少了1m\frac{1}{m},如下图所示

吴恩达机器学习系列课程笔记——机器学习系统设计

基于内容的推荐算法的优化目标

2.2 协同过滤(Collaborative Filtering)

  • 与基于内容的推荐算法不同的是,当未知某些特征的情况下可以使用协同过滤算法自行学习所要使用的特征和参数
  • 基本思想:根据参数(部分参数可以随机生成)求出特征,再由特征更好的去拟合模型得到参数,以此不断循环

吴恩达机器学习系列课程笔记——机器学习系统设计

协同过滤代价函数
  • 如上图所示,其代价函数同时包括了参数特征两者,当设置其中某个向量为常数时,既可以活得另一个的代价函数,因此可以同时对参数和特征的代价函数进行最小化计算
  • 值得注意的是,其中特征向量没有x0=1这个常量了(同理θ0也没有),这样可以更加灵活的自主学习

吴恩达机器学习系列课程笔记——机器学习系统设计

协同过滤算法步骤
  • 具体步骤:
    1. 初始化特征x和参数θ,使其值为小的随机值(类似神经网络的初始化)
    2. 利用优化算法求解代价函数的最小值
    3. 用求得的特征和参数进行预测

吴恩达机器学习系列课程笔记——机器学习系统设计

低秩矩阵分解
  • 协同过滤向量化算法也称为低秩矩阵分解(Low Rank Matrix Factorization),如上图所示,XΘTX\Theta^T是低秩矩阵
  • 求不同特征数据间的距离(x(j)x(i)\parallel x^{(j)}-x^{(i)}\parallel的最小值)可以找到相似类型的数据进行推荐

吴恩达机器学习系列课程笔记——机器学习系统设计

均值归一化
  • 在计算前将未知的数据进行均值归一化,即设为0,求出预测值后再加上计算前的均值,使得各个参数都有较为合理的初始化数据

3. 复杂机器学习系统

以照片光学字符识(Photo OCR,Photo Optical Character Recognition)技术为例

  • 基本步骤:
    1. 文字检测:根据给出的图片找出其中含有文字信息的区域
    2. 字符分割:在找到的区域内进行文字分离
    3. 字符分类:根据分离的文字识别信息
  • 文字检测:
    1. 通过某个大小的正反样本训练分类器,使得其能在该区域内进行区分
    2. 在测试的图中设置与样本一样大小的滑窗进行图片识别,每次滑动距离称为步长(step size)
    3. 整体检测一次后,取更大的区域将其压缩至训练大小进行检测,不断循环直到整体图片
    4. 根据概率情况绘制灰度图,白色表示概率高,黑色反之
    5. 再经过**放大算子(expansion operator)**将白色区域扩大
    6. 根据条件筛掉不合适的(如长宽比例不正常)
  • 字符分割(类似文字检测):
    1. 给与正反样本训练分类器判断图片区域内是否可以被分割
    2. 根据筛选出的图片滑动画框进行判断

吴恩达机器学习系列课程笔记——机器学习系统设计

Photo OCR基本模块
  • 如上图Photo OCR基本模块相似,在很多复杂的机器学习系统中有很多流水线式模块,每个步骤中的模块都可以通过机器学习进行实现

3.1 人工数据合成(Artificial Data Synthesis)

通过人工数据合成可以轻松的获取大规模训练数据(比原始数据大10倍左右)

  • 值得注意的是,在使用该方法前需要确定分类器是否是低偏差模型,是否需要更多训练数据,其他解决办法是否没有很大的提升空间
  • 两种合成形式:
    1. 从零创建数据
    2. 将小型数据集通过某种方式扩展成大型数据集
  • 以字符分类的数据集举例
    • 从零创建数据:通过字体库中的不同字体,并使用模糊算子或仿射变换等方法模拟出真实场景的字符
    • 小型转大型:通过真实图片进行人工扭曲进行扩展(需要人工预测那些变化是有意义的)

3.2 上限分析(Ceiling Analysis)

  • 对流水线开始的模块进行人为控制,将人工输出评估出的数值对比自动情况下的,这样可以帮助更好的对复杂机器学习系统进行资源的分配
    吴恩达机器学习系列课程笔记——机器学习系统设计
上限分析