第十章
机器学习诊断法
执行一种测试方法,能够了解算法在哪里出了问题
评估假设
1、将数据按照7:3分成训练集和测试集(数据随机)
2、线性回归算法训练和测试
(1)对训练集进行学习得到参数
(2)计算测试误差
3、逻辑回归算法训练和测试
错误分类定义测试误差
模型选择和训练,验证,测试集
泛化能力:由训练集拟合出,用测试集算误差
用训练集拟合的参数对新样本效果不好,所以对于模型选择用以下方法
1、将数据集按6:2:2分成训练集,交叉验证集,测试集,并计算误差
2、用训练集拟合参数,用交叉验证集测试误差,选择误差最小作为模型,用测试集衡量模型泛化误差
诊断偏差与方差
高偏差欠拟合,高方差过拟合(区别在于训练误差的大小)
正则化和偏差,方差
正则化惩罚的过多的话容易造成欠拟合,正则化
太小过拟合
选择⋋
用一系列的值代入,最小化代价函数得到参数
,用验证集测出每一个参数
在验证集上的平均的误差平方和,选出误差最小的模型,用测试集检查效果
画出随着变化的测试误差和验证误差(注意这里横坐标是
和上面的多项式次幂区分),左边
小是过拟合,右边
大是欠拟合,取测试误差和验证误差都先对较小的点,对应的横坐标就是所求
学习曲线
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调小
优化完的决策边界说明如下
前提是决策边界是直线有=0,所以过原点,(
为啥和决策边界垂直没理解),取样本点到
向量投影,结合约束条件,投影小时
大代价函数就大,故当投影最大时即最大间距最好的决策边界
核函数
拟合非线性判断边界区分正负实例
1、方法:构造复杂多项式特征的集合
2、构造,
,
的方法
手动选取标记点l,f是训练样本x和第一个标记的相似度(相似度函数=核函数)
3、核函数含义/做出边界的预测过程
样本点接近标记点,特征f接近于1,样本点远离标记点,特征f接近于0
根据离标记点近f取1,远离标记点f取0带入复杂多项式(用学习算法已算出),可以得到决策边界,ps:下图示例中因为
=0,所以l3附近带入预测值为0
4、标记点的选取
取标记点为样本点,衡量的是
与自身的相似度
5、最小化得到
6、参数选择
使用SVM
1、内核参数
线性的边界可以不使用内核参数,复杂边界可以构建高斯内核函数
用高斯核函数需要写一个函数计算核函数的特征值,输入x,l 输出f,如果有很多大小不一样的特征变量,在使用前将这些特征变量的大小按比例归一化
2、其他核函数
核函数需要满足默塞尔定理,确保所有SVM包能用大类的优化方法从而迅速得到参数
3、输出在多个类别间的恰当的判定边界
将每个类别从其他类别中区分出来
第十三章
无监督学习
数据不带有任何标签,输入到算法中,让算法找到隐藏在数据中的结构
聚簇算法:无监督学习,找到数据间的簇,用途如下
市场分割:分类顾客信息分别销售
社交网络:社交网络中的关系
计算机组群:组织数据集
K-Means算法
自动将无标签数据分类成有紧密关系的子集或是簇
1、K均值算法操作
(1)随机生成两点(聚类中心)
(2)遍历每个样本点,判断到哪个聚簇中心更近,进行簇分配
(3)移动聚簇中心至同色的点的均值处
重复(2)(3)直到样本点颜色不变,聚簇中心不变
代码说明
(1)输入:簇个数和数据集
(2)随机初始化聚簇中心,对样本进行染色(计算样本到每个聚簇中心的距离),移动聚簇中心。若某个聚簇中心没有样本点,就移除该聚簇中心/重新初始化聚簇中心
优化目标
求和的是样本到所属的聚簇中心的距离的平方
随机初始化
随机选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再用估计
2、应用
用来压缩数据,可视化;不用来防止过拟合
第十五章
异常检测问题
1、有一个新的样本,又有一个特征变量集,希望知道这个新的样本是否有异常/需要进一步测试
2、应用一:欺诈检测
记录一些不同特征的样本,建一个模型p(x),可以用样本来发现行为异常用户(看哪些用户的p(x)的概率小于)
3、应用二:工业领域(飞机引擎)
4、应用三:数据中心的计算机监控
检测计算机可能发生的异常
高斯分布
1、决定中心位置,
决定宽度
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) ,查找没有被评分的电影,并尝试对电影进行评价,即自动填补缺失值,据此来推荐新电影给用户
建立推荐系统的方法
基于内容的推荐算法
给几个特征表示电影,用来学习用户的参数
为了做出预测,把每个用户的评价的预测值看作是线性回归问题,预测用户评价电影i的值
假设并对其最小化,得到每个用户的参数向量
协同过滤
给用户的参数,用来学习电影的特征
提供喜好参数估计电影的特征值x(i),即每个用户在帮助算法更好的进行特征学习
协同过滤算法
新的优化目标函数J,关于x(i)和参数的函数,同时进行最小化
1、将x(i)和初始化为小的随机值
2、 将代价函数最小化(梯度下降)
3、用x(i)和预测用户给电影的评分
协同过滤算法的向量化实现
计算为元素的矩阵
e.g 电影推荐,比较特征值之间的距离,即利用已经学到的特征找到相似的电影或商品
均值规范化
将评分矩阵中每种电影的平均评分转为0,对新的评分矩阵用协同过滤
第十七章
数据集处理方法
随机梯度下降法
不需要对全部的m个样本来得到梯度项,只需要对单个训练样本求梯度项。连续不断地在某个区域中朝着最小值的方向徘徊,而不是直接达到全局最小值
1、随机打乱所有数据,将所有m个训练样本随机排列
2、遍历样本,更新
Mini-Batch梯度下降
每次迭代会使用b个样本
随机梯度下降收敛
在更新前,先计算出训练样本假设的表现,每1000次迭代,就画出前面计算出的的cost函数
下图红色曲线分别是采用更小的学习率,每5000个样本得到一个数据点
在线学习
从数据流中学习用户的偏好来优化网站的决策。一次只处理一个样本,从样本中学习再丢弃它,即不使用固定数据集
MapReduce
在四台机器上进行并行计算,把训练集均分成四个子集,发给四台电脑,每个电脑计算完后将数据发送给一个中心服务器。用来处理大规模数据
第十八章
照片OCR/照片光学字符识别
解决问题:如何让计算机读出图片中的文字信息,方便查找照片
1、扫描图像,并找到有文字的图像区域(文字检测)
2、进行文字分离,将文字划分成一个个独立的字符区域(字符分割)
3、用分类器对可见的字符进行识别(字符分类)
照片OCR的流水线
滑动窗口分类器
e.g 行人检测系统
从数据集中收集一些正样本和负样本,在网络中训练,输入一个图块对y进行分类,来判断图块是否包含行人。移动(步长)矩形使用分类器对图块进行分类,遍历图片中不同位置
e.g 文本检测例子
1、文字检测
用一系列包含正样本(对应区域有文字出现)和负样本(没有文字的图块)的训练集,训练完成后将其应用在一个新的测试集中的图片上
白色表示分类器认为有文字的地方,深浅不同的灰色对应分类器认为该处有文字的概率,将分类器的输出应用到放大算子上,即扩大白色区域,在长宽比例正常的文字区域周围画上矩形
2、识别文本
给定图片,分割出单个字符,使用监督学习算法,判断图块中是否存在文字分割的地方
训练分类器将正负样本进行区分,训练完后运行在文字检测系统输出的这些文本上,每向右移动一次就使用一次分类器,直到把图像全部分成单独的字符
3、字符识别
多分类问题,输入一个包含文字的图片,能判断图片中的字符
获取大量数据
前提的是通过学习曲线发现更多数据有用(低偏差机器学习算法)
1、人工数据合成
(1)从零开始创造新数据,利用任意字体生成样本
用从网上下载的的字体,将这种字体的一个字符图像或是多个字符图像粘贴到任意背景图中,加一点模糊处理或者仿射变换,得到人工合成的训练集
(2)已经有小的标签训练集,扩充已有的训练集
对样本人工拉伸,扭曲要合理且有意义
语音识别:引入额外的语音失真
上限分析
关注每一个步骤对于系统准确率的提升
第十九章
总结
监督学习:线性回归,逻辑回归,神经网络,支持向量机。有带标签的数据和样本
无监督学习:K-均值聚类算法,主成分分析法(降维),异常检测算法
推荐系统
大规模机器学习系统
滑动窗口分类器
构建机器学习系统的建议:偏差/方差,正则化,下一步应该做什么(召回率和F1),学习曲线,误差分析,上限分析