线性回归——Stanford Machine Learning (1)
2016-03-09 21:17
260 查看
一.梯度下降法:
我们假设回归函数为:
,这里x0
= 1.
定义回归函数和实际值之间差的均方和为损失函数:
,m为样本数量
我们的目的是求出使损失函数
最小的参数
的值。求最小值,对于每个参数
,求出梯度并使梯度等于0,此时的
即为对于参数
来说,损失函数最小。
是包含所有参数的一维向量,我们先初始化一个
,在这个
值之上,用梯度下降法去求出下一组
的值,由于是梯度下降的,所以损失函数
的值在下降。当迭代到一定程度,
的值趋于稳定,此时的
即为要求得的值。
迭代函数如下:
每次迭代,我们用当前的求出
求出等式右边的值,并覆盖
得到迭代后的值。
这里
二. 随机梯度下降法(stochastic gradient descent)和批梯度下降法(batch gradient descent)
随机梯度下降法和批梯度下降法是对于多样本迭代的两种策略,其中,随机梯度下降法是在每一次迭代中,随机的选择m个样本来求取
的值,而批梯度下降法在每次迭代中,需要先求出所有样本的梯度值。相比之下,随机梯度下降法高效。
A. 随机梯度下降法:
Repeat{
for i = 1 to m{
对于每一个j进行操作
}
}
这里的m为随机选择的m个样本。
B. 批梯度下降法:
Repeat 直到收敛{
对于每一个j进行操作
}
这里的m为整个样本数。需要先求出在本次迭代中整个样本关于j的导数和,再计算出
,对于大样本,很耗时。
三.最小二乘法
A. 需要用到的公式
首先我们定义
为一个m*n矩阵,它在(i,j)上的元素值为
。定义n*n的方矩阵A的迹trA为
我们可以证明trABCD = trDABC = trCDAB = trBCDA
同时,下面两个公式也可以证明:
B. 最小二乘法求线性回归
对于m个样本,每个样本的n个特征值可以表示为一维列向量Xi,则m个样本,可以组成样本矩阵m*(n+1),其中的1为常量参数:
这里每一行为一个样本的特征向量;
我们设Y向量为样本特征值对应的目标值,则:
由于
,我们可以得到:
到这里,我们需要求X
-Y的平方和,假设各个特征之间是相互独立的,则(X
-Y)转置*(X
-Y)可以得到除了对角线之外都为0的矩阵,而对角线上的值,为X
-Y的平方值。于是有:
对
矩阵求导的:
令求导函数等于0,此时
于是:
我们假设回归函数为:
,这里x0
= 1.
定义回归函数和实际值之间差的均方和为损失函数:
,m为样本数量
我们的目的是求出使损失函数
最小的参数
的值。求最小值,对于每个参数
,求出梯度并使梯度等于0,此时的
即为对于参数
来说,损失函数最小。
是包含所有参数的一维向量,我们先初始化一个
,在这个
值之上,用梯度下降法去求出下一组
的值,由于是梯度下降的,所以损失函数
的值在下降。当迭代到一定程度,
的值趋于稳定,此时的
即为要求得的值。
迭代函数如下:
每次迭代,我们用当前的求出
求出等式右边的值,并覆盖
得到迭代后的值。
这里
二. 随机梯度下降法(stochastic gradient descent)和批梯度下降法(batch gradient descent)
随机梯度下降法和批梯度下降法是对于多样本迭代的两种策略,其中,随机梯度下降法是在每一次迭代中,随机的选择m个样本来求取
的值,而批梯度下降法在每次迭代中,需要先求出所有样本的梯度值。相比之下,随机梯度下降法高效。
A. 随机梯度下降法:
Repeat{
for i = 1 to m{
对于每一个j进行操作
}
}
这里的m为随机选择的m个样本。
B. 批梯度下降法:
Repeat 直到收敛{
对于每一个j进行操作
}
这里的m为整个样本数。需要先求出在本次迭代中整个样本关于j的导数和,再计算出
,对于大样本,很耗时。
三.最小二乘法
A. 需要用到的公式
首先我们定义
为一个m*n矩阵,它在(i,j)上的元素值为
。定义n*n的方矩阵A的迹trA为
我们可以证明trABCD = trDABC = trCDAB = trBCDA
同时,下面两个公式也可以证明:
B. 最小二乘法求线性回归
对于m个样本,每个样本的n个特征值可以表示为一维列向量Xi,则m个样本,可以组成样本矩阵m*(n+1),其中的1为常量参数:
这里每一行为一个样本的特征向量;
我们设Y向量为样本特征值对应的目标值,则:
由于
,我们可以得到:
到这里,我们需要求X
-Y的平方和,假设各个特征之间是相互独立的,则(X
-Y)转置*(X
-Y)可以得到除了对角线之外都为0的矩阵,而对角线上的值,为X
-Y的平方值。于是有:
对
矩阵求导的:
令求导函数等于0,此时
于是:
相关文章推荐
- 用Python从零实现贝叶斯分类器的机器学习的教程
- My Machine Learning
- 机器学习---学习首页 3ff0
- 反向传播(Backpropagation)算法的数学原理
- 也谈 机器学习到底有没有用 ?
- 如何用70行代码实现深度神经网络算法
- 量子计算机编程原理简介 和 机器学习
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- 初识机器学习算法有哪些?
- 机器学习相关的库和工具
- 10个关于人工智能和机器学习的有趣开源项目
- 机器学习实践中应避免的7种常见错误
- 机器学习书单
- 北美常用的机器学习/自然语言处理/语音处理经典书籍
- 如何提升COBOL系统代码分析效率
- 自动编程体系设想(一)
- 自动编程体系设想(一)
- 支持向量机(SVM)算法概述
- [Ng机器学习公开课1]机器学习概述