吴恩达机器学习笔记(10-19章)

第十章

机器学习诊断法

执行一种测试方法,能够了解算法在哪里出了问题

评估假设

1、将数据按照7:3分成训练集和测试集(数据随机)

2、线性回归算法训练和测试

(1)对训练集进行学习得到参数\theta

(2)计算测试误差

3、逻辑回归算法训练和测试

错误分类定义测试误差

模型选择和训练,验证,测试集

泛化能力:由训练集拟合出\theta,用测试集算误差

用训练集拟合的参数对新样本效果不好,所以对于模型选择用以下方法

1、将数据集按6:2:2分成训练集,交叉验证集,测试集,并计算误差

2、用训练集拟合参数\theta,用交叉验证集测试误差,选择误差最小作为模型,用测试集衡量模型泛化误差

诊断偏差与方差

高偏差欠拟合,高方差过拟合(区别在于训练误差的大小)

正则化和偏差,方差

正则化惩罚的\theta过多的话容易造成欠拟合,正则化\lambda太小过拟合

选择⋋

用一系列的\lambda值代入,最小化代价函数得到参数\theta,用验证集测出每一个参数\theta在验证集上的平均的误差平方和,选出误差最小的模型,用测试集检查效果

画出随着\lambda变化的测试误差和验证误差(注意这里横坐标是\lambda和上面的多项式次幂区分),左边\lambda小是过拟合,右边\lambda大是欠拟合,取测试误差和验证误差都先对较小的点,对应的横坐标就是所求\lambda

学习曲线

1、以二次函数为例,训练集误差和验证集误差如下,样本量越少训练误差小,验证误差大

2、欠拟合的学习曲线(惩罚力度大,以直线为例)

m增大,训练集误差增大接近交叉验证误差,且趋平,即当处于高偏差的情形时,选用更多的训练集数据对于改善算法表现无益,没必要训练更多数据

3、过拟合的学习曲线(惩罚力度小)

m增大,训练集误差增大但整体增幅下,验证集误差下降但仍是高误差,但增加样本有利于改进算法,有必要训练更多数据

4、欠拟合和过拟合解决方法

第十一章

先实现一个算法,画学习曲线,误差分析,找优化方法

误差分析

最好是在交叉验证集上做误差分析

1、手动检测哪一种错误最多

对于验证集中错误分类的样本进行手工分类,对错误多的样本种类进行改进

2、单一规则的数值评价指标,观察指标改变前后的误差率决定是否采用(控制变量的意思)

不对称分类的误差评估

偏斜类

正例和负例的比率差距极端,可能会导致不使用机器代码的误差率更小,要有高查准率和召回率才行

查准率和召回率

评估算法的表现

1、查准率:真阳性/(真阳性+假阳性),越高越好

2、召回率:真阳性/(真阳性+假阴性),越高越好

精确度和召回率的权衡

1、改变临界值的变化

增大临界值(预测的准),提高查准率,降低召回率

减少临界值(y=1的基本都预测出来了),降低查准率,提高召回率

2、找一个评估度量值(F值)来判断不同召回率和查准率

机器学习数据

当有大量的数据是有用的条件

(1)特征值有足够信息来预测y值

(2)是否能得到一组庞大训练集,训练集中训练一个有很多参数的学习算法

第十二章

支持向量机SVM

SVM优化目标

通过C来调整 + 两边部分的权重,输出的不是y=1的概率了

大间距分类器

尽量用大间距将样本分开

1、优化问题(最小化代价函数,让+前的部分为0,结合图像注意有条件,优化完会得到一条决策边界)

2、最大间距:将正/负样本分开的决策边界到正/负样本边界的距离

    

当c很大时会对样本中异常点很敏感,为了保证还是用黑色决策边界,将c调小 

优化完的决策边界说明如下

前提是决策边界是直线有\theta _{0}=0,所以过原点,(\theta为啥和决策边界垂直没理解),取样本点到\theta向量投影,结合约束条件,投影小时\theta大代价函数就大,故当投影最大时即最大间距最好的决策边界

核函数 

拟合非线性判断边界区分正负实例

1、方法:构造复杂多项式特征的集合

2、构造f_{1}f_{2}f_{3}的方法

手动选取标记点l,f是训练样本x和第一个标记的相似度(相似度函数=核函数)

3、核函数含义/做出边界的预测过程

样本点接近标记点,特征f接近于1,样本点远离标记点,特征f接近于0

根据离标记点近f取1,远离标记点f取0带入复杂多项式(\theta用学习算法已算出),可以得到决策边界,ps:下图示例中因为\theta _{3}=0,所以l3附近带入预测值为0

4、标记点的选取

取标记点为样本点,f^{(i)}衡量的是x^{(i)}与自身的相似度

5、最小化得到\theta

6、参数选择

使用SVM

1、内核参数

线性的边界可以不使用内核参数,复杂边界可以构建高斯内核函数

用高斯核函数需要写一个函数计算核函数的特征值,输入x,l 输出f,如果有很多大小不一样的特征变量,在使用前将这些特征变量的大小按比例归一化

2、其他核函数

核函数需要满足默塞尔定理,确保所有SVM包能用大类的优化方法从而迅速得到参数\theta

3、输出在多个类别间的恰当的判定边界

将每个类别从其他类别中区分出来

第十三章

无监督学习

数据不带有任何标签,输入到算法中,让算法找到隐藏在数据中的结构

聚簇算法:无监督学习,找到数据间的簇,用途如下

市场分割:分类顾客信息分别销售

社交网络:社交网络中的关系

计算机组群:组织数据集

K-Means算法

自动将无标签数据分类成有紧密关系的子集或是簇

1、K均值算法操作

(1)随机生成两点(聚类中心)

(2)遍历每个样本点,判断到哪个聚簇中心更近,进行簇分配

     

(3)移动聚簇中心至同色的点的均值处

重复(2)(3)直到样本点颜色不变,聚簇中心不变

      

代码说明

(1)输入:簇个数和数据集

(2)随机初始化聚簇中心,对样本进行染色(计算样本到每个聚簇中心的距离),移动聚簇中心。若某个聚簇中心没有样本点,就移除该聚簇中心/重新初始化聚簇中心

优化目标

求和的是样本x^{(i)}到所属的聚簇中心的距离的平方

随机初始化

随机选K个样本作为聚簇中心

局部最优情况,多尝试几次初始化计算代价函数,选代价最小的

选取聚类数量K

1、手动选

2、肘部原则

逐渐增大K,计算J,找到转折点

3、根据后续的目的做选择(e.g三种T恤尺寸则K=3)

第十四章

降维、数据压缩

将数据降维减少高度冗余(特征之间高度相关)的情况,使运算速度加快

用新的特征表示原来的样本(2D->1D 3D->2D)

  

可视化

找到比较宏观的特征表示在二维中

主成分分析问题规划

1、  PCA:找一个低维平面将数据投影在上面,使投影误差最小(降到几维就要选几个投影的向量)

注意线性回归和PCA区别,左图是线性回归右图是PCA,最小化距离不同

线性回归是要用所有的x值预测y值,PCA不区分某个特殊x

2、对数据进行预处理

均值标准化(x-均值代替x)+特征缩放

3、找低维空间

PCA算法完整过程

主成分数量选择

一直修改k直到满足不等式

压缩重现

应用PCA的建议

1、应用pca将高维降到低维,加速学习算法

取一部分高维的x,看成是无标签的样本,对其进行降维,在加上y。注意要求新样本x对应的y时,要先将其映射成z再用h_{\theta }^{(i)}估计

2、应用

用来压缩数据,可视化;不用来防止过拟合

第十五章

异常检测问题

1、有一个新的样本,又有一个特征变量集,希望知道这个新的样本是否有异常/需要进一步测试

2、应用一:欺诈检测

记录一些不同特征的样本,建一个模型p(x),可以用样本来发现行为异常用户(看哪些用户的p(x)的概率小于\varepsilon

3、应用二:工业领域(飞机引擎)

4、应用三:数据中心的计算机监控

检测计算机可能发生的异常

高斯分布

1、\mu决定中心位置,\sigma决定宽度 

2、参数估计

给定数据集,估算\mu\sigma^{2}

异常检测算法

1、选择特征量,指出反常的样本

2、给出训练集,即m个未做标记的样本,参数拟合

3、计算p(x)值来判断新案例出错的概率是多少

开发和评估异常检测系统

1、先把样本分成训练集验证集和测试集

2、用无标签训练集拟合模型p(x),对验证集和测试集中样本进行预测

3、计算真阳性,假阳性,假阴性,真阴性比例/计算算法的精度以及召回率评估异常检测算法(注不用正确率)

异常检测和监督学习

异常检测:当正例子很少时,即y=1的情况少,用负例子拟合p(x)的值。经常有很多不同类型的异常,所以考虑用负样本进行建模

监督学习:在合理的范围内有大量的正样本和负样本。有足够的正样本,且未来可能出现的正样本与训练集中的正样本类似

选择要使用的功能

怎么得到异常检测算法的特征:先完整训练出模型,再在一组交叉验证集上运行算法,找出预测出错的样本,找其他特征帮助学习算法让出错样本表现更好

多变量的高斯分布

当特征之间有关系时,不能对每个特征分别建模,要建立一个整体的p(x)模型

  

 

使用多变量高斯分布的异常检测

1、用数据集拟合模型

2、对新的测试样本x计算p(x)

原始模型和多元高斯模型

第十六章

问题规划

推荐系统的问题是给出r(i,j)和y(i,j)  ,查找没有被评分的电影,并尝试对电影进行评价,即自动填补缺失值,据此来推荐新电影给用户

建立推荐系统的方法

基于内容的推荐算法

给几个特征表示电影,用来学习用户的参数\theta

为了做出预测,把每个用户的评价的预测值看作是线性回归问题,预测用户评价电影i的值 

假设\theta并对其最小化,得到每个用户的参数向量

协同过滤

给用户的参数,用来学习电影的特征

提供喜好参数估计电影的特征值x(i),即每个用户在帮助算法更好的进行特征学习

协同过滤算法

新的优化目标函数J,关于x(i)和参数\theta的函数,同时进行最小化

1、将x(i)和\theta初始化为小的随机值

2、 将代价函数最小化(梯度下降)

3、用x(i)和\theta预测用户给电影的评分

协同过滤算法的向量化实现

计算(\theta ^{(i)})^{T}(x^{(i)})为元素的矩阵

e.g 电影推荐,比较特征值之间的距离,即利用已经学到的特征找到相似的电影或商品

均值规范化

将评分矩阵中每种电影的平均评分转为0,对新的评分矩阵用协同过滤

第十七章

数据集处理方法

随机梯度下降法

不需要对全部的m个样本来得到梯度项,只需要对单个训练样本求梯度项。连续不断地在某个区域中朝着最小值的方向徘徊,而不是直接达到全局最小值

1、随机打乱所有数据,将所有m个训练样本随机排列

2、遍历样本,更新\theta

 

Mini-Batch梯度下降

每次迭代会使用b个样本

随机梯度下降收敛 

在更新\theta前,先计算出训练样本假设的表现,每1000次迭代,就画出前面计算出的的cost函数

下图红色曲线分别是采用更小的学习率,每5000个样本得到一个数据点

在线学习

从数据流中学习用户的偏好来优化网站的决策。一次只处理一个样本,从样本中学习再丢弃它,即不使用固定数据集

MapReduce

在四台机器上进行并行计算,把训练集均分成四个子集,发给四台电脑,每个电脑计算完后将数据发送给一个中心服务器。用来处理大规模数据

  

  第十八章

照片OCR/照片光学字符识别

解决问题:如何让计算机读出图片中的文字信息,方便查找照片

1、扫描图像,并找到有文字的图像区域(文字检测)

2、进行文字分离,将文字划分成一个个独立的字符区域(字符分割)

3、用分类器对可见的字符进行识别(字符分类)

照片OCR的流水线

滑动窗口分类器

e.g 行人检测系统

从数据集中收集一些正样本和负样本,在网络中训练,输入一个图块对y进行分类,来判断图块是否包含行人。移动(步长)矩形使用分类器对图块进行分类,遍历图片中不同位置

e.g 文本检测例子

1、文字检测

用一系列包含正样本(对应区域有文字出现)和负样本(没有文字的图块)的训练集,训练完成后将其应用在一个新的测试集中的图片上

白色表示分类器认为有文字的地方,深浅不同的灰色对应分类器认为该处有文字的概率,将分类器的输出应用到放大算子上,即扩大白色区域,在长宽比例正常的文字区域周围画上矩形

2、识别文本

给定图片,分割出单个字符,使用监督学习算法,判断图块中是否存在文字分割的地方

  

训练分类器将正负样本进行区分,训练完后运行在文字检测系统输出的这些文本上,每向右移动一次就使用一次分类器,直到把图像全部分成单独的字符

3、字符识别

多分类问题,输入一个包含文字的图片,能判断图片中的字符

获取大量数据

前提的是通过学习曲线发现更多数据有用(低偏差机器学习算法)

1、人工数据合成

(1)从零开始创造新数据,利用任意字体生成样本

用从网上下载的的字体,将这种字体的一个字符图像或是多个字符图像粘贴到任意背景图中,加一点模糊处理或者仿射变换,得到人工合成的训练集

(2)已经有小的标签训练集,扩充已有的训练集

对样本人工拉伸,扭曲要合理且有意义

语音识别:引入额外的语音失真

上限分析

关注每一个步骤对于系统准确率的提升

第十九章

总结

监督学习:线性回归,逻辑回归,神经网络,支持向量机。有带标签的数据和样本

无监督学习:K-均值聚类算法,主成分分析法(降维),异常检测算法

推荐系统

大规模机器学习系统

滑动窗口分类器

构建机器学习系统的建议:偏差/方差,正则化,下一步应该做什么(召回率和F1),学习曲线,误差分析,上限分析

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值