在第一周中讲解的内容包含:
什么是回归问题?
在监督学习中,我们给学习算法一个数据集,比如一系列房子的数据,给定数据集中每个样本的正确价格,即它们实际的售价然后运用学习算法,算出更多的答案,我们需要估算一个连续值的结果,这属于回归问题
什么是分类问题?
机器学习的问题就在于,估算出肿瘤是恶性的或是良性的概率,属于分类问题。
分类问题指的是,我们试着推测出离散的输出值:0或1良性或恶性,而事实上在分类问题中,输出可能不止两个值。
比如说可能有三种乳腺癌,所以希望预测离散输出0、1、2、3
。0 代表良性,1 表示第1类乳腺癌,2表示第2类癌症,3表示第3类,也是分类问题。
横轴是不同的房屋面积,纵轴是房屋的出售价格。
监督学习:对于每个数据来说,给出了正确的答案。在监督学习中,我们有一个给定的数据,叫做训练集training set
回归问题:根据之前的数据,预测出一个准确的输出值。
分类问题:预测离散的输出值,例如寻找癌症肿瘤,并想要确定肿瘤是良性的还是恶性的,属于0/1
离散输出的问题
学习过程解释:
h
表示hypothesis
,代表的是学习算法的解决方案或者函数。h
根据输入的x
值得到y
值,因此h
是x
到的y
的一个函数映射代价函数也称之为平方误差函数,平方误差代价函数。
在线性回归中我们有一个像这样的训练集, m m m代表了训练样本的数量,比如 m = 47 m = 47 m=47。而我们的假设函数,也就是用来进行预测的函数,是这样的线性函数形式: h θ ( x ) = θ 0 + θ 1 x h_\theta \left( x \right)=\theta_{0}+\theta_{1}x hθ(x)=θ0+θ1x。
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J \left( \theta_0, \theta_1 \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2} J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2
本例中是通过假设 θ 0 = 0 \theta_0=0 θ0=0来进行,假设函数 h ( x ) h(x) h(x)是关于x的函数,代价函数 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1)是关于 θ \theta θ的函数,使得代价函数最小化
通过等高线图来进行解释。通过绘制出等高线图可以看出来,必定存在某个点,使得代价函数最小,即:可以看出在三维空间中存在一个使得 J ( θ 0 , θ 1 ) J(\theta_{0}, \theta_{1}) J(θ0,θ1)最小的点。
梯度下降是一个用来求函数最小值的算法。
背后的思想:开始随机选取一个参数的组合 ( θ 0 , θ 1 , … , θ n ) (\theta_0,\theta_1,…,\theta_n) (θ0,θ1,…,θn)计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。
持续这么做,直到一个局部最小值(local minimum),因为并没有尝试完所有的参数组合,所以不能确定得到的局部最小值是否是全局最小值(global minimum)
算法公式为
特点:需要同步更新两个参数
算法公式: θ j : = θ j − α ∂ J ( θ ) ∂ θ j \theta_j:=\theta_j-\alpha \frac {\partial J(\theta)}{\partial \theta_j} θj:=θj−α∂θj∂J(θ)
具体描述:对 θ \theta θ赋值,使得 J ( θ ) J(\theta) J(θ)按照梯度下降最快的方向进行,一直迭代下去,最终得到局部最小值。
学习率: α \alpha α是学习率它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。
梯度下降是很常用的算法,它不仅被用在线性回归上和线性回归模型、平方误差代价函数。将梯度下降和代价函数相结合。
对之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
∂ ∂ θ j J ( θ 0 , θ 1 ) = ∂ ∂ θ j 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \frac{\partial }{\partial { {\theta }_{j}}}J({ {\theta }_{0}},{ {\theta }_{1}})=\frac{\partial }{\partial { {\theta }_{j}}}\frac{1}{2m}{ {\sum\limits_{i=1}^{m}{\left( { {h}_{\theta }}({ {x}^{(i)}})-{ {y}^{(i)}} \right)}}^{2}} ∂θj∂J(θ0,θ1)=∂θj∂2m1i=1∑m(hθ(x(i))−y(i))2
j = 0 j=0 j=0 时: ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ ∗ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) \frac{\partial }{\partial { {\theta }_{0}}}J({ {\theta }_{0}},{ {\theta }_{1}})=\frac{1}{m}{ {\sum\limits*{i=1}^{m}{\left( { {h}_{\theta }}({ {x}^{(i)}})-{ {y}^{(i)}} \right)}}} ∂θ0∂J(θ0,θ1)=m1∑∗i=1m(hθ(x(i))−y(i))
j = 1 j=1 j=1 时: ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ ∗ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( i ) ) \frac{\partial }{\partial { {\theta }_{1}}}J({ {\theta }_{0}},{ {\theta }_{1}})=\frac{1}{m}\sum\limits*{i=1}^{m}{\left( \left( { {h}_{\theta }}({ {x}^{(i)}})-{ {y}^{(i)}} \right)\cdot { {x}^{(i)}} \right)} ∂θ1∂J(θ0,θ1)=m1∑∗i=1m((hθ(x(i))−y(i))⋅x(i))
则算法改写成:
Repeat {
θ 0 : = θ 0 − a 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) {\theta_{0}}:={\theta_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{ \left({ {h}_{\theta }}({ {x}^{(i)}})-{ {y}^{(i)}} \right)} θ0:=θ0−am1i=1∑m(hθ(x(i))−y(i))
θ 1 : = θ 1 − a 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( i ) ) {\theta_{1}}:={\theta_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left({ {h}_{\theta }}({ {x}^{(i)}})-{ {y}^{(i)}} \right)\cdot { {x}^{(i)}} \right)} θ1:=θ1−am1i=1∑m((hθ(x(i))−y(i))⋅x(i))
}
这种梯度下降的算法称之为批量梯度下降算法,主要特点: