梯度下降
梯度下降是很常用的算法,它不仅被用在线性回归上和线性回归模型、平方误差代价函数
通过不断调整θi 的大小来不断使代价函数最小
梯度下降的算法
同时更新参数
导数项的含义
α 学习速率 太大或者太小的情况如下图
局部最优 导数为0,θ不变了
越接近局部最优点,梯度下降自动选取小幅下降,因为越接近局部最优,导数越来越小。
代价函数
什么是代价函数?
假设有训练样本(x, y),模型为h,参数为θ。h(θ) = θTx(θT表示θ的转置)。
(1)概况来讲,任何能够衡量模型预测出来的值h(θ)与真实值y之间的差异的函数都可以叫做代价函数C(θ),如果有多个样本,则可以将所有代价函数的取值求均值,记做J(θ)。因此很容易就可以得出以下关于代价函数的性质:
- 对于每种算法来说,代价函数不是唯一的;
- 代价函数是参数θ的函数;
- 总的代价函数J(θ)可以用来评价模型的好坏,代价函数越小说明模型和参数越符合训练样本(x, y);
- J(θ)是一个标量;
代价函数的常见形式
均方误差
在线性回归中,最常用的是均方误差(Mean squared error),具体形式为:
m:训练样本的个数;
hθ(x):用参数θ和x预测出来的y值;
y:原训练样本中的y值,也就是标准答案
上角标(i):第i个样本
线性回归的代价函数3D图
梯度下降和代价函数结合 得到线性回归算法
下面看看对J求偏导的步骤
凸函数 没有局部最优只有全局最优
批量梯度下降:用到了所有数据集
正则化和过拟合问题
过拟合不能很好地泛化(应用预测在新样本)
线性回归的欠拟合和过拟合
逻辑回归的欠拟合和过拟合
解决过拟合的方法
1、减少选取变量的数量(缺点就是舍弃变量会舍弃掉一些信息) 可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)
2、正则化 保留所有的特征,但是减少参数的大小(magnitude)。
通过是后两项参数接近于0 来使其发挥不了太大作用
缩小每一个参数 来使其变的平缓,不容易出现过拟合
线性回归的正则化
梯度下降 加上正则化项
逻辑回归的正则化
训练神经网络步骤
1、随机初始化权值为接近0的
2、前向传播
3、通过代码代价函数J()
4、反向传播计算偏导数项
5、梯度检验 梯度下降
数据集分三类 训练集、测试集、验证集。 比例为 60%:20%:20%
测试数据随机选择比较好
过拟合欠拟合 偏差 方差
为了防止过拟合 正则化
训练和验证误差定义不包括正则化项
选取合适的λ
学习曲线来判断算法与改进算法
当选二次函数时,训练误差随着训练样本的增加而增加,而交叉验证误差随之减小
处于高偏差
高方差
高方差选取一些部分特征 减小λ
高偏差 增加特征 增加λ
查准率和召回率 (针对偏斜类的情况下使用较好)
以得癌症的例子为例
查准率: 实际为 positive 的 / 预测 为 positive 的 越高越好
召回率: 预测为 positice的 / 实际上为 positice的 越高越好
支持向量机(SVM)
先看看逻辑回归 激活函数 如下
逻辑回归代价函数: 先看看每个样本对代价函数的,在求样本求和
逻辑回归的代价函数J
SVM算法步骤
首先消去1/m,之后逻辑回归代价函数项前一部分设为A,正则化项设为B,如下图。
SVM y=1 和 y=0
假设C很大,
SVM 选择最大间隔 因此SVM也叫最大间隔分类器
当C很大的时候 会因为一些异常点而改变最大间隔分类 不是很好
SVM为什么选择最大间隔推导
向量内积
优化目标函数
对于这样选择的参数θ ,可以看到参数向量 事实上是和决策界是90度正交的。SVM之所以最大间隔分类是因为想最大P,所以就是训练样本到决策边界距离大。
SVM核函数
高斯核函数
使用SVM
线性核函数和高斯核函数 两个常用的核函数
样本特征n多,但是训练数据m少,用线性核函数
n小,m大小适中,,高斯核函数
n小,m大 高斯核函数运行很慢,创建更多的特征,用逻辑回归或者不用核函数(即线性核函数)
神经网络比SVM包慢 SVM优化的问题是凸优化问题 SVM不用担心局部最优。神经网络则需要考虑局部最优问题。
逻辑回归
该函数的图像为:
无监督学习
聚类算法
K-Means算法
K-Means算法是迭代算法
1、簇分配
遍历每一个样本点,找到 离哪个簇中心近的,并将其分类
2、移动聚类中心
找出所有一个簇的均值 然后把簇中心移动到那一类
样本点变了所以再次移动聚类中心
K-Means接受两个参数 一个是K 簇的数量 另一个参数是X表示的训练集 n维
1.随机初始化
2.循环 对每个样本看它离哪一个簇的聚类中心更近 便将其染成相同颜色
或者 遍历每一个聚类中心,看这个点离哪一个聚类中心更近
3.移动聚类中心 算出这个簇的均值 然后移动聚类中心
如果有一次簇没有样本,则可以直接移除这个簇聚类中心 这是通常做法,这样簇的数量就会变成K-1,如果需要K个簇的话可以重新随机初始化聚类中心。
优化目标函数
K-means算法步骤
如何随机初始化聚类中心
随机选样本
有可能局部最优
防止局部最优 可以多次随机初始化
在多次的结果中选择代价最小的那一次
k 比较小 比较适用 k 2~10 比较好
如何取选择K的值(聚类数量)
1.
2.根据实际需求
降维
作用 数据压缩
2D->1D
3D->2D
都投影到一个平面上
作用 可视化数据
PCA 算法
降维算法 :当前流行的算法:主成分分析方法(PCA) 最小化平方投影误差
PCA将 个特征降维到 个,可以用来进行数据压缩,如果100维的向量最后可以用10维来表示,那么压缩率为90%。同样图像处理领域的KL变换使用PCA做图像压缩。但PCA 要保证降维后,还要保证数据的特性损失最小。
PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
在应用PCA前,先进行均值归一化和特征规范化。
PCA和线性回归的区别
PCA之前首先数据预处理
对于数据降维后PCA如何在新的维度进行计算呢,
从 n 维 降到k维
k(主成分)
从低维回到高维
如何选择K (主成分数字)
x和其投影的平均距离除以数据的总方差 希望这个数值小于0.01
那么如何实现呢
SVD(奇异值分解)
应用PCA
应用PCA对监督学习问题加速
先用PCA将数据压缩降维 一般可以减少到1/5 或者1/10
PCA 可以减少对内存和硬盘空间的需求
PCA仅在训练集上进行,不在测试和交叉验证集上进行
定义到了X-Z的映射后,可以应用这个映射在测试和交叉验证集上
PCA不要用于防止过拟合 ,正则化是解决过拟合好的方法
PCA提高算法速度较好
异常检测
高斯分布 正态分布
异常检测算法
分离数据
异常检测算法和监督学习算法比较
异常检测算法适用于正样本少,大量负样本。
而监督学习算法则在有大量正样本下适用比较好。
特征的选择 使用log函数是特征更像高斯分布 (调整参数)
如何得到异常算法的特征 误差分析
通过没有拟合的数据(异常样本)来进行参考看看能不能改进优化
异常检测算法给数据特征建模,把X1和X2的特征单独提取出来构建高斯函数
异常检测算法的一个问题,如下图,绿色的样本是异常样本,但是异常检测算法认为它一般,是因为异常检测算法使粉色的范围,识别不出蓝色区域是好的样本,所以我们需要改进一下。
所以会用到多元高斯分布
多元高斯分布与异常检测算法结合
原始模型和高斯模型使用情况分析
特征 n很大的时候 可以用原始模型。
多元高斯模型适用的n比较小,样本的数量大于特征的数量 ,m>>n的时候应用高斯模型
推荐系统
基于内容的推荐算法
算法步骤
如何选择θ, 使训练样本的预测值减去实际值平方和最小化。是代价函数最小
求所有用户的θ
协同过滤
协同过滤算法
将两种结合起来,不应一直不断重复求X和θ了
算法步骤
低秩矩阵分解(协同考虑算法矩阵向量化)
推荐相关的电影
均值归一化
计算均值
大规模机器学习 (大数据量)
数据量很大的时候,对所有样本进行梯度下降,显然是不明智的选择。
所以就应用了随机梯度下降,还有另一种叫减少映射,来处理海量的数据集。
随机梯度下降
线性回归为例
检测算法是否收敛
在随机梯度下降算法中,一般是让α为一个常数值,还有一少部分让α随着时间来变动(减小),使能更好的趋向全局最优。
Mini-batch梯度下降
一次选取b个样本进行计算
需要确定好b
在线学习算法
大型网站有连续的数据流,可以更好的应用在线学习算法。