机器学习笔记(一)
in 学习笔记 with 0 comment

机器学习笔记(一)

in 学习笔记 with 0 comment

网易公开课:斯坦福大学的机器学习公开课

用Markdown记笔记太费劲了,尤其是对一些公式支持的并不好,一些公式的推导可能没有记录。

第一节

机器学习定义

对于一个计算机程序来说,给它一个任务T和一个性能测量方法P,如果在经验E的影响下,P对T的测量结果得到了改进,那么就说程序从E中学习。

监督学习

回归问题

房价的预测

分类问题

判断肿瘤是否为良性或恶性

无监督学习

聚类问题

通常人们会根据样本间的某种距离或者相似性来定义聚类,即把相似的(或距离近的)样本聚为一类,而把不相似的(或距离远的)样本归为其他类;

图像像素的分组、社会网络分析、市场数据分析、话筒收录的声音的分类;

强化学习

在强化学习过程中,通常会在一段时间内完成一系列决策 ;

控制直升飞机:一个错误的决策不对导致飞机摔下来但是一系列的错误决策会,同样一系列的正确的决定会让飞机飞得更好;

通常通过回报函数来实现强化学习,让机器尽量做多的正确决策和尽量少的决策来获得更多的回报;

聚类和分类的区别

第二节

线性回归

$$ h(x)=\sum^n_{i=0}{\theta_i x_i}=\pmb{\theta}^T\textbf{X} $$

$\theta_i$被称为参数,最初设置为0,通过机器学习不断更新$\theta_i$(即下面不断对$\theta_i$进行赋值)。利用训练集得出合适$\theta_i$,是机器学习的任务;(x,y)是训练集,$h_{\theta}(x)$是假设$h(x)$基于训练集得出的结果。

梯度下降

选取一个点,找到一个下降最快的方向正是梯度的方向前进一步;重复这个过程直到一个最低的位置;

性质

批梯度下降法

规则

$$ J( \theta )=min_{\theta}\{\frac{\sum^{n} _ {j=1} (h_{\theta}(x^{(j)})- y^{(j)})^2}{2} \} $$

除以2是为了简化之后的数学计算;$J(\theta)$对于$\theta_{i}$求偏导得到$\theta_{i}$($:=$是赋值号):

$\alpha$为学习速度,由手动设置,决定每次“前进”的步长。如果设置的值过小,会导致要花很长时间去收敛;如果设置的值过大,可能会导致错过最小值。

分析

每次梯度下降,都要对j从1到n进行求和,程序就要检测所有训练样本,对于几百万甚至几亿的数据十分耗费资源

随机梯度下降算法(增量梯度下降)

规则

对于所有的$i$:$j=1->n \{ \theta_i := \theta_i - \alpha (h_\theta(x^{(j)}) - y^{(j)})x_i^{(j)} \}$

首先第一次仅仅查看第一个训练样本并利用第一个训练样本对θi进行修改;然后再用第二个训练样本θi进行修改;

分析

对于大规模的数据集随机 梯度算法会快得多,但不会精准的收敛到全局最小值,可能会一直在最小值周围徘徊。

正规方程组

定义$\textbf{J}$对于$ \theta _ i$的梯度是一个n+1维的向量,即$\nabla_{\theta} J = (\frac{\partial{J}}{\partial{\theta_0}}, \frac{\partial{J}}{\partial{\theta_1}}, ...,\frac{\partial{J}}{\partial{\theta_n}})^T$

将批梯度下降算法写成:$\theta := \theta - \alpha \nabla_{\theta}\textbf{J}$

定义设计矩阵X包含了训练集中所有输入的矩阵,$\textbf{X} = ((x^{(1)})^T, (x^{(2)})^T,...,(x^{(m)})^T)$(m个训练样本),定义矩阵Y包含所有训练集的目标数据,也是m维矩阵;

$$ \pmb{X \theta}-\pmb{Y} = ((h(x^{(1)})-y^{(1)}),(h(x^{(2)})-y^{(2)}),...,(h(x^{(m)})-y^{(m)}))^T \\\\ \frac{(\pmb{X\theta -Y})^T (\pmb{X\theta -Y})}{2} = J(\theta) $$

令$\nabla_{\theta} J =0$,即$\nabla_{\theta} \frac{(\pmb{X\theta -Y})^T (\pmb{X\theta -Y})}{2} =0$,展开化简经过漫长的计算后可以得到:

$$ \pmb{\theta}=(\pmb{X}^T \pmb{X} )^{-1} \pmb{X}^T \pmb{Y} $$

第三节

欠拟合和过拟合

欠拟合:使用了较小的训练集得出了一个比较简单的模型

过拟合:由于使用了过大的训练集导致算法过于复杂,算法仅仅恰好符合给出的训练集的特性而没有反映出更一般的规律

局部加权回归

参数学习算法是一种有固定数目的参数以用来数据拟合的算法

非参数学习算法是一种参数数量会随训练集合大小增加而增加的算法

概念

选取训练集中的一点x,x(i)是x点周边的值,我们通过这种方式来拟合θ的值:h(x)=∑iw(i)(y(i)-θTx(i))2

其中w(i)表示权重,w(i)=exp(-(x(i)-x)2/2τ2)。如果训练样本只有一个,即x(i)和x非常接近,那么w(i)≈1;如何训练样本很大,x(i)离x很远,那么对应的权重w(i)≈0;其中w(i)可以用其他函数,参数τ2被称为波长函数,它控制了权值随距离下降的速率。

局部加权回归是非参数学习算法。

Logistic函数

g(z)=1/(1+e-z)称为Logistic函数或Sigmoid函数,g(z)∈[0,1]

对于非线性函数,特别的我们令hθ(x)=g(θTX)=1/(1+e-θTX)

P(y=1|x;θ)=hθ(x);P(y=0|x;θ)=1-hθ(x),则P(y|x;θ)=hθ(x)y(1-hθ(x))1-y

令L(θ)=P(y|x;θ)=∏iP(y(i)|x(i);θ)=∏ihθ(x)y(i)(1-hθ(x(i)))1-y(i)

对L(θ)取对数得到l(θ),利用之前梯度下降的方法(这里是最大化)得到θ:=θ+α▽θl(θ)

l(θ)对θj求偏导得到:θj:=θj+α∑nj=1(y(i)-hθ(x(i)))x(i)j

这里的hθ(x)是Logistic函数,和前面的线性回归函数不一样。最终得到一样或相似的学习规则并不是巧合。

感知器算法

g(z)=1(z>=0) 0(z<0)

hθ(x)=g(θTX)

θj:=θj+α(y(i)-hθ(x(i)))x(i)j

第四节

牛顿方法

假设我们有一个函数f(θ),想找出f(θ)=0的θ值。

首先随便找一个坐标(θ(0),f(θ(0))),对其求切线并延长与θ轴相交,将相交点的横坐标记为θ(1),再次对其求切线延长与θ轴相交;重复上述步骤直至f(θ(i))=0。

用公式表示即:

记两个θ之间的距离为△,f'(θ(0))=f(θ(0))/△,可以推出△=f(θ(0))/f'(θ(0));

那么θ(1)(0)-△即θ(1)(0)-f(θ(0))/f'(θ(0));

通常来说,对牛顿方法的一次迭代θ(t+1)(t)-f(θ(t))/f'(θ(t))

用相同的思想,如果我们有一个函数l(θ),求其最大值,可以令l'(θ)=0,那么θ(t+1)(t)-l'(θ(t))/l''(θ(t))

对于一般化的牛顿方法(θ是向量的情况下):θ(t+1)=θ(t)-H-1θl

这里的▽θl表示l的梯度,H叫做Hession矩阵,Hij2l/əθiəθj

对于合理的特征数量此种算法较快

指数分布族

T(y)是充分估计量

伯努利分布

Ber(Φ) P(y=1:Φ)=Φ

P(y:Φ)=Φy(1-Φ)1-y=exp(logΦy(1-Φ)1-y)=exp(ylogΦ+(1-y)log(1-Φ))=exp(ylog(Φ/(1-Φ))+log(1-Φ))

我们令ŋ=log(Φ/(1-Φ)),T(y)=y,-a(ŋ)=log(1-Φ);由ŋ=log(Φ/(1-Φ))我们可以得到Φ=1/(1+e)即Logistic函数

a(ŋ)=-log(1-Φ),将Φ=1/(1+e)代入得到a(ŋ)=log(1+e)

高斯分布

f(x)=exp(-(x-b)2/(2c2),这里我们令c2=1

1/(2π)1/2exp((-1/2)(y-μ)2)=...=1/(2π)1/2exp(-y2/2)exp(μy-μ2/2)

令μ=ŋ,T(y)=y,a(ŋ)=μ2/2=ŋ2/2

Responses