机器学习——吴恩达章节(11-18)

11.执行训练时

确定执行的优先级

在训练集中设置出现频率较高的特征作为特征向量去识别或者分类

优化算法的方法

  • 首先用简单粗暴的方法先确立一个能实现目的的算法
  • 然后根据交叉熵误差分析去评估模型
  • 观察分类不太正确的点的特征,设计更多的优化方式

不对称分类的误差评估

  • 查准率P: 预测为正,实际为正的概率
  • 召回率R: 正例被准确预测的概率(查全率)

两者的平衡

  1. 如果我们想要比较确信为正例时才判定为正例,那么提高阈值,模型会对应高查准率,低召回率;
  2. 如果希望避免假阴性,那么降低阈值,模型会对应低查准率,高召回率

利用调和平均数F值

2 P R / P + R 2PR/P+R 2PR/P+R

机器学习数据

  • 数据是模型学习的基础,有多少数据才可以学习多少
  • 算法是学习的方法,方法好学的才多
    在算法中加入更多参数的模型,和增加更多训练集可以减小偏差和方差

防止欠拟合和过拟合

12.支持向量机(SVM)

优化目标

逻辑回归的假设函数: h θ ( x ) = 1 / 1 + e − θ T x h θ(x)= 1/1+e−θTx hθ(x)=1/1+eθTx
对逻辑回归函数进行修改,得到SVM的代价函数:

直观上对大间隔的理解

大间距分类

距离两侧决策边界最远的分界函数
正则化参数会影响拟合效果,没设置好同样会导致过拟合影响间距

核函数

将原始空间中的向量作为输入向量,并返回特征空间(转换后的数据空间,可能是高维)中向量的点积的函数称为核函数。

使高维度的计算复杂度降低
相当于是三维的正态分布

  • 将核函数应用于逻辑回归函数时会变得非常慢

优化支持向量机中的正则化参数

C越大,方差越大,会过拟合
C越小,偏差越大,会欠拟合

使用SVM

没有核函数的情况,使用的是线性内核
有核函数的情况,使用的是高斯内核

如果有大小不同的特征变量,要先把特征变量的大小按比例归一化

  • 不是所有提出来的核函数都是有效的核函数,需要满足默赛尔定理

逻辑回归和SVM比较

  1. 如果特征个数n远远大于训练样本个数,建议使用逻辑回归或者线性SVM
  2. 如果特征个数n较小,训练样本个数适当,建议使用高斯核SVM
  3. 如果特征个数小,训练样本非常大,建议增加更多特征或者使用逻辑回归或线性SVM

13.聚类算法

01-无监督学习

数据中不带有任何标签

将数据输入到算法中,让算法得到数据中的一些结构,比如簇和类

一些问题

  1. 市场分割

  2. 社交网络群体

  3. 组织计算机群体

  4. 银河系的组成

02-K- Means算法

k均值算法

聚类中心,将数据分为两类

内循环:

  1. 将数据分为两簇,根据数据结构分成跟随两个聚类中心的簇
  2. 移动聚类中心:移动到所属簇数据的均值点

外循环:

不断执行内循环,计算均值,移动聚类中心,然后分为两个簇

直到聚类中心不再改变

具体做法:

  • 初始化随机确定k个聚类中心

  • 然后内循环,外循环

    如果有很远的数据点,会选择直接移除

03-优化目标

作用:

  1. 让我们知道k均值算法是否正确
  2. 如何用算法帮助k均值算法找到更好的簇,并且避免局部最优解

构造最小化的代价函数

分簇,让每个数据距离聚类中心的数值最小,以此来作为代价函数的参数,移动聚类中心,再次迭代距离,以此减小代价函数的参数。

04-随机初始化

避开局部最优

设置随机初始化-聚类中心的方法

  1. 设置的聚类中心K要比数据样本小
  2. 在数据集较小的时候,多次随机初始化可以找到比较好的局部最优解-全局最优;数据集大的时候没有明显的效果

通过这样的方法,在一定程度上可以达到比较好的聚类成果

05-选取聚类数量

即聚类中心K的参数

  • 原本的操作是观察可视化的数据图,或者观察数据的输出

肘部法则

通过改变聚类数目来观察代价函数和畸变值,选出图像中转折比较大的点,类似于胳膊的肘部

但是有时候会出现没有拐点的情况,所以该用法不适用于所有情况

后续目的

设置的聚类数目可以根据实际情况的目的来设置,即更好地可以匹配后续目的的参数

从实际角度去考虑,是否需要那么多的K值

14.数据处理

01-数据压缩

降维的概念

可以使数据看起来不那么冗余,将数据映射到一条直线上,减少内存的同时提升计算速度

三维时,将数据投影到一个面上,然后用二维向量表达

02-可视化

这是降维的一大作用——可视化数据

可以将多维的数据用有代表性的二维数据替代,然后可以画出来将数据可视化

03-主成分分析问题规划(PCA)

让数据在一个低维平面投影是投影误差最小

在做降维之前先均值归一化处理数据

pca和线性回归的区别

  • 线性回归的拟合是让点到直线度方差和最小,也就是距离
  • pca是让点到直线的正交(垂直)距离最小S

通过pca得到特征值中理想的特征向量,以此压缩数据维度

04-压缩重现

原始数据的重构:将低维度数据重现高维度的近似表示

用正交阵和线代部分内容可以

05-主成分数量的选择

对主成分的提取值做方差和误差分析处理,误差值小于多少,就会有多少的数据被重构出来

找出影响目标变量某一要素的几个综合指标,使综合指标为原来变量的线性拟合。

协方差矩阵

06-应用PCA的建议

  • 提高学习算法的运行速度
  • 压缩数据,减少对内存和硬盘空间需求,可视化数据
  • 无监督算法,autoencoder

15.异常检测问题

01-问题检测

非监督学习

在已经训练好的数据集中设定几个范围,在对于要预测的数据,不在范围内的数据,或者过于异常的数据,我们需要重新对这个数据进行检测

提出一些特征值和特征向量,以此来判断暗些反常数据

应用示例

  1. 在工业生产中,一定的范围对应一定的安全值,若新产品的范围不在原先数据集范围内,则需要重新检测该产品
  2. 在网站检测中,一般有专门的行为检测,如用户在某种操作中做出了异常,则可以判别他是异常或者欺诈用户

02-正态分布

类似于高中的,其实就是高中的正态分布

是之前的高斯核函数

用极大似然估计判断所处的位置及高斯函数的类型

03-算法

对参数进行了估计,得到高斯函数的两个值,然后对预测值进行判断,检测其是否异常

04-开发和评测异常系统

实现某种学习算法时,要选择合适的特征值作为参数

纳入这个特征值和没纳入这个特征值时得到的数值来判断该特征对于算法的作用

  • 原本是无监督系统,输入的是无标签训练集,检测的时候输入有标签的训练集,告诉算法哪些是异常样本,加以判断

最好不要将相同的数据同时作为交叉验证集和测试集.

05-异常检测vs监督学习

对于样本数量少,或者标注样本成本比较高时,可采用监督学习;

对于正样本数量多,出现样本次数多且易分类时,可选择异常检测

  • 要从正样本数量和异常样本数量中判断使用哪一种算法
  • 异常样本多,用监督的学习
  • 正样本多,用异常检测

06-设计和选择特征

当数据不太符合正态分布时,可以选择对数据做一些处理,比如取对数之类,让其得到我们想要的方差和均值

在数据出现异常,导致算法卡住循环时,可以新建一种特征,再输入数据,以此建立新的异常检测算法

07-多变量高斯分布

可以检测到原来异常检测不能发觉的异常数据

多元正态分布:数据之间存在着正相关或者负相关,用多元数据可以明显看出数据之间的关系,通过改变数值,很清楚地观察到数据之间的关系。

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

  • 将多元高斯分布应用在异常检测中时,可以对范围的选择进行调整,调整为更适合数据的类型,和监督学习中的作法很像
  • 有冗余数据时会导致矩阵不可逆,线性相关时不能用到多元高斯分布

16.推荐系统

01-问题规划

想要用机器学习得到更好的推荐系统

机器学习中的一些伟大的思想

对于在一些环境中,可以让算法自己去学习新的特征,然后得到新的学习算法

而推荐系统就是这样的环境中一个例子

根据你喜欢的东西给你推荐,类似于大数据

02-基于内容的推荐算法

对于不同的数据的不同特征,设立输入数据相应的偏置项

基于内容是指我们会手动的将数据的一些特征作为假设已知的,来对数据进行预测。

但实际问题中,往往不会有这样的特征存在

03-协同过滤

自行学习所需要的特征

  • 协同过滤是应用最早和最为成功的推荐方法之一,利用与目标用户相似的用户已有的商品评价信息,来预测目标用户对特定商品的喜好程度
    分为
    基于用户的协同过滤(UserCF)
    基于物品的协同过滤(ItemCF)

  • 基于用户的协同过滤

    1. 收集用户信息
    2. 最近邻搜索
    3. 产生推荐结果
  • 基于物品的协同过滤

    1. 收集用户信息
    2. 针对项目的最近邻搜索
    3. 产生推荐结果

    04-矢量化,协同过滤的应用

    把实际问题中的特征用矩阵表示,然后把矩阵分解,分别逐行来表示

    也称低秩矩阵分解

    05-实施细节-均值归一化

    为了让训练的数据集表现得更好些,对某些数据为空或者是0的特征

    会采用均值归一化处理:

    • 对之前数据中的特征做均值处理,然后将均值当作该空数据中的特征处理
    • 用均值的特征对该用户进行推荐

17. 大数据

01-学习大数据集

运用大数据集去训练学习到的算法,可以很好地预测算法的偏差值,要学会利用大数据去将算法优化

02-随机梯度下降

普通的梯度下降算法在数据集较多的情况下会比较难计算

故应用随机梯度下降去处理大数据集

  • 批量梯度下降法:每次对所有训练集进行考虑

    如果数据集很大时,对于每次梯度下降,都要重新遍历一次所有数据

  • 随机梯度下降法:对于遍历随机数据,是经历了一次内循环后,在进行外循环的每次遍历。

    不用对全体数据进行求和,而是对每个单独的数据进行参数优化

随机梯度下降可以做到的是全局最优化的参数解,最终可以达到在最小值附近

而批量梯度下降是每次都是最优解

03-mini-batch梯度下降

每次样本用b个,介于1和所有数据样本之间

每次只需要运行完b个样本就可以更新数据,不用遍历完全部数据

如果有好的向量化方法,又很好的确定b的值,那这个算法会比随机梯度算法快得多

04-随机梯度下降收敛

通过每阶段数据下降后,可以对之前遍历过的数据进行代价函数的计算,计算器偏差的平均值,以此来绘图观察其是否在收敛

  • 当每次迭代后采用的收敛可能会存在着噪声,所以不是每次收敛都是下降的,有可能是震荡的;
  • 当增大每次收敛的样本数量时1000->5000,曲线可能变得平滑,但是每次迭代的速度会变慢;

05-在线学习机制

有连续输入的数据流时,可以从实时的信息中来优化关于算法的决策

每次用户搜索的关键词会有十个数据样本产生,用这样的数据去调整更新算法中的参数,根据不同用户的需要去调整推荐样本

在线学习的本质是实时根据样本修改参数

06-减少映射与数据并行

MapReduce:

  • 可以把训练样本拆成多个子集,然后把每个子集放到不通的计算器中运行计算,最后汇总到一台服务器中求和
  • 也可以在单机上运行多核心,有多个cpu,多线程运行

18.OCR

01-问题描述

照片OCR:照片光学描述,如何让计算机读出照片中文字信息

02-滑动窗口

滑动窗口分类器:在识别图像中不断滑移,把全部图像都过一遍判断识别对象中是否有训练集中出现的对象

滑动窗口流水线是监督学习算法

首先是要输入对象训练集,然后让算法对对象的特征有一定的了解,接着输入测试集去验证分类器

二值化、复试膨胀算法处理图像,框选出所需要判断的对象

对于框选到的对象进行分割处理,用监督学习识别正样本和负样本,进行区别

03-获取大数据和人工智能

人工数据合成

  1. 自己创造数据

  2. 将较小的训练集扩大成大训练集

当面对一个机器学习问题时可以做的事情:

  1. 检查所拥有的的数据集是否够用,是否需要更大的数据集
  2. 如果想要拥有10倍的数据集需要怎么做

04-下一步的工作pipeline

上限分析:通过对每个模块的工作做提升,关注每个步骤的准确率,看对于整体的影响有多大,重点应该放在影响最大的地方

你可能感兴趣的:(机器学习,人工智能)