机器学习
一,常见符号
h(x) =
M = #training examples 训练数目 #代表着数目。
x = “inputs”/feature x是输入,或者有叫特征。
y = “output”/target variable。
= training example 训练实例。
表示的是第b个训练实例里面的第a个参数(上标指的是训练实例,下标指的是参数的顺序。
n = #feature n代表的是特征的个数,n=|x|-1,n=x的维度-1,因为x0是一个虚拟的特征,这个虚拟的特征是不算在n里面的。
对任意的 (A,B是任意的矩阵,tr指的是迹:主对角线的元素之和,
迹的循环排列)
有(证明用到
,有点像
)
线性回归(linear regression)里面的目标就是使得
这个式子
其中的是为了保证等等求导的时候可以减少计算量。
批次梯度下降(收敛,全局最优)(Batch Gradient Descent,BGD)
那最小化这个的方法算法是怎么呢,这里就要提到梯度下降算法(gradient descent)
1.将θ设置成一个0向量,作为一个初始值
2.持续更改θ来减少
将每次的θj更换成右边的式子进行迭代,其中的叫做学习率(learning rate),右边是J(θ)对θj的偏导数,这一步在一轮中要进行n次,每个特征都要做一次进行最小化。
对此求偏导数
而
对求偏导,首先得由于链式法则,平方的那个2要乘上去和1/2抵消,再乘上一个括号一样的东西。
由于是只对偏导,所以别的项全变成了0,只依赖于对应的θiXi项。
最后第一步的转换就变成了这样了。
后面的那一大坨就是偏导数最后简化的结果了。
3.每一次都往最低的方向走下坡路,也就是沿着梯度最小的方向走babystep
4.梯度下降法的结果,取决于初始的θ值(不同的起点)
5.每次的操作是for(j=1,…,n)进行第3步的操作直到收敛。
6.每次的迭代都是对全局进行的,所以消耗将会非常非常大。
随机梯度下降****(Stochastic Gradient Descent,SGD)****
永远的震荡,并且不会收敛,但是允许不断变换,得到结果会更快
每次迭代的公式是这样的,并没有求和符号,并不是进行全局的
repeat{
}i从1到m