机器学习吴恩达课程学习笔记

梯度下降

梯度下降是很常用的算法,它不仅被用在线性回归上和线性回归模型、平方误差代价函数

通过不断调整θi 的大小来不断使代价函数最小

img

img

梯度下降的算法

同时更新参数

img

导数项的含义

img

α 学习速率 太大或者太小的情况如下图

img

局部最优 导数为0,θ不变了

img

越接近局部最优点,梯度下降自动选取小幅下降,因为越接近局部最优,导数越来越小。

img

代价函数

什么是代价函数?

假设有训练样本(x, y),模型为h,参数为θ。h(θ) = θTx(θT表示θ的转置)。

(1)概况来讲,任何能够衡量模型预测出来的值h(θ)与真实值y之间的差异的函数都可以叫做代价函数C(θ),如果有多个样本,则可以将所有代价函数的取值求均值,记做J(θ)。因此很容易就可以得出以下关于代价函数的性质:

  • 对于每种算法来说,代价函数不是唯一的;
  • 代价函数是参数θ的函数;
  • 总的代价函数J(θ)可以用来评价模型的好坏,代价函数越小说明模型和参数越符合训练样本(x, y);
  • J(θ)是一个标量;

代价函数的常见形式

均方误差

在线性回归中,最常用的是均方误差(Mean squared error),具体形式为:

img

m:训练样本的个数;

hθ(x):用参数θ和x预测出来的y值;

y:原训练样本中的y值,也就是标准答案

上角标(i):第i个样本

线性回归的代价函数3D图

img

梯度下降和代价函数结合 得到线性回归算法

img

下面看看对J求偏导的步骤

img

img

凸函数 没有局部最优只有全局最优

img

批量梯度下降:用到了所有数据集

正则化和过拟合问题

过拟合不能很好地泛化(应用预测在新样本)

线性回归的欠拟合和过拟合

img

逻辑回归的欠拟合和过拟合

img

解决过拟合的方法

1、减少选取变量的数量(缺点就是舍弃变量会舍弃掉一些信息) 可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)

2、正则化 保留所有的特征,但是减少参数的大小(magnitude)。

img

通过是后两项参数接近于0 来使其发挥不了太大作用

img

缩小每一个参数 来使其变的平缓,不容易出现过拟合

img

img

线性回归的正则化

img

梯度下降 加上正则化项

img

img

逻辑回归的正则化

img

训练神经网络步骤

1、随机初始化权值为接近0的

2、前向传播

3、通过代码代价函数J()

4、反向传播计算偏导数项

5、梯度检验  梯度下降

img

img

数据集分三类 训练集、测试集、验证集。 比例为 60%:20%:20%

测试数据随机选择比较好

过拟合欠拟合 偏差 方差

img

为了防止过拟合 正则化

img

训练和验证误差定义不包括正则化项

img

选取合适的λ

img

学习曲线来判断算法与改进算法

当选二次函数时,训练误差随着训练样本的增加而增加,而交叉验证误差随之减小

img

处于高偏差

img

高方差

img

高方差选取一些部分特征 减小λ

高偏差 增加特征 增加λ

img

查准率和召回率 (针对偏斜类的情况下使用较好)

以得癌症的例子为例

查准率: 实际为 positive 的 / 预测 为 positive 的 越高越好

召回率: 预测为 positice的 / 实际上为 positice的 越高越好

img

支持向量机(SVM)

先看看逻辑回归 激活函数 如下

img

逻辑回归代价函数: 先看看每个样本对代价函数的,在求样本求和

img

逻辑回归的代价函数J

img

SVM算法步骤

首先消去1/m,之后逻辑回归代价函数项前一部分设为A,正则化项设为B,如下图。

img

img

SVM y=1 和 y=0

img

假设C很大,

img

SVM 选择最大间隔 因此SVM也叫最大间隔分类器

img

当C很大的时候 会因为一些异常点而改变最大间隔分类 不是很好

img

SVM为什么选择最大间隔推导

向量内积

img

优化目标函数

img

对于这样选择的参数θ ,可以看到参数向量 事实上是和决策界是90度正交的。SVM之所以最大间隔分类是因为想最大P,所以就是训练样本到决策边界距离大。

img

SVM核函数

高斯核函数

img

img

img

使用SVM

线性核函数和高斯核函数 两个常用的核函数

img

样本特征n多,但是训练数据m少,用线性核函数

n小,m大小适中,,高斯核函数

n小,m大 高斯核函数运行很慢,创建更多的特征,用逻辑回归或者不用核函数(即线性核函数)

img

神经网络比SVM包慢 SVM优化的问题是凸优化问题 SVM不用担心局部最优。神经网络则需要考虑局部最优问题。

逻辑回归

img

该函数的图像为:

img

img

无监督学习

聚类算法

K-Means算法

K-Means算法是迭代算法

1、簇分配

     遍历每一个样本点,找到 离哪个簇中心近的,并将其分类

2、移动聚类中心

  找出所有一个簇的均值   然后把簇中心移动到那一类

img

样本点变了所以再次移动聚类中心

img

img

K-Means接受两个参数 一个是K 簇的数量 另一个参数是X表示的训练集 n维

img

1.随机初始化

2.循环 对每个样本看它离哪一个簇的聚类中心更近 便将其染成相同颜色

或者 遍历每一个聚类中心,看这个点离哪一个聚类中心更近

3.移动聚类中心 算出这个簇的均值 然后移动聚类中心

如果有一次簇没有样本,则可以直接移除这个簇聚类中心 这是通常做法,这样簇的数量就会变成K-1,如果需要K个簇的话可以重新随机初始化聚类中心。

img

优化目标函数

img

K-means算法步骤

img

如何随机初始化聚类中心

随机选样本

img

有可能局部最优

img

防止局部最优 可以多次随机初始化

在多次的结果中选择代价最小的那一次

k 比较小 比较适用 k 2~10 比较好

img

如何取选择K的值(聚类数量)

1.

img

2.根据实际需求

img

降维

作用 数据压缩

2D->1D

img

3D->2D

都投影到一个平面上

img

作用 可视化数据

PCA 算法

降维算法 :当前流行的算法:主成分分析方法(PCA) 最小化平方投影误差

img

PCA将 个特征降维到 个,可以用来进行数据压缩,如果100维的向量最后可以用10维来表示,那么压缩率为90%。同样图像处理领域的KL变换使用PCA做图像压缩。但PCA 要保证降维后,还要保证数据的特性损失最小。

PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。

在应用PCA前,先进行均值归一化和特征规范化。

img

PCA和线性回归的区别

img

PCA之前首先数据预处理

img

对于数据降维后PCA如何在新的维度进行计算呢,

img

img

从 n 维 降到k维

k(主成分)

img

img

从低维回到高维

img

如何选择K (主成分数字)

x和其投影的平均距离除以数据的总方差 希望这个数值小于0.01

img

那么如何实现呢

SVD(奇异值分解)

img

img

应用PCA

应用PCA对监督学习问题加速

先用PCA将数据压缩降维 一般可以减少到1/5 或者1/10

PCA 可以减少对内存和硬盘空间的需求

PCA仅在训练集上进行,不在测试和交叉验证集上进行

定义到了X-Z的映射后,可以应用这个映射在测试和交叉验证集上

img

img

PCA不要用于防止过拟合 ,正则化是解决过拟合好的方法

PCA提高算法速度较好

img

异常检测

高斯分布 正态分布

异常检测算法

img

分离数据

img

异常检测算法和监督学习算法比较

异常检测算法适用于正样本少,大量负样本。

而监督学习算法则在有大量正样本下适用比较好。

img

特征的选择 使用log函数是特征更像高斯分布 (调整参数)

img

如何得到异常算法的特征 误差分析

通过没有拟合的数据(异常样本)来进行参考看看能不能改进优化

img

异常检测算法给数据特征建模,把X1和X2的特征单独提取出来构建高斯函数

img

异常检测算法的一个问题,如下图,绿色的样本是异常样本,但是异常检测算法认为它一般,是因为异常检测算法使粉色的范围,识别不出蓝色区域是好的样本,所以我们需要改进一下。

img

所以会用到多元高斯分布

img

多元高斯分布与异常检测算法结合

img

原始模型和高斯模型使用情况分析

特征 n很大的时候 可以用原始模型。

多元高斯模型适用的n比较小,样本的数量大于特征的数量 ,m>>n的时候应用高斯模型

img

推荐系统

基于内容的推荐算法

img

算法步骤

如何选择θ, 使训练样本的预测值减去实际值平方和最小化。是代价函数最小

img

求所有用户的θ

img

img

协同过滤

img

img

协同过滤算法

将两种结合起来,不应一直不断重复求X和θ了

img

算法步骤

img

低秩矩阵分解(协同考虑算法矩阵向量化)

img

推荐相关的电影

img

均值归一化

img

计算均值

img

大规模机器学习 (大数据量)

数据量很大的时候,对所有样本进行梯度下降,显然是不明智的选择。

img

所以就应用了随机梯度下降,还有另一种叫减少映射,来处理海量的数据集。

随机梯度下降

线性回归为例

img

img

检测算法是否收敛

img

img

在随机梯度下降算法中,一般是让α为一个常数值,还有一少部分让α随着时间来变动(减小),使能更好的趋向全局最优。

img

Mini-batch梯度下降

一次选取b个样本进行计算

img

需要确定好b

img

在线学习算法

大型网站有连续的数据流,可以更好的应用在线学习算法。

-------------The End-------------