吴恩达机器学习-1-监督学习与非监督学习
在第一周中讲解的内容包含:
- 监督学习和无监督学习
- 单变量线性回归问题
- 代价函数
- 梯度下降算法
监督学习Supervised Learning
利用监督学习预测波士顿房价(回归问题)
- 大多数情况下,可能会拟合直线
- 有时候用二次曲线去拟合效果可能会更好的
什么是回归问题?
在监督学习中,我们给学习算法一个数据集,比如一系列房子的数据,给定数据集中每个样本的正确价格,即它们实际的售价然后运用学习算法,算出更多的答案,我们需要估算一个连续值的结果,这属于回归问题
利用监督学习来推测乳腺癌良性与否(分类问题)
- 横轴表示肿瘤的大小
- 纵轴表示1表示恶性,0表示良性
什么是分类问题?
机器学习的问题就在于,估算出肿瘤是恶性的或是良性的概率,属于分类问题。
分类问题指的是,我们试着推测出离散的输出值:0或1良性或恶性,而事实上在分类问题中,输出可能不止两个值。
比如说可能有三种乳腺癌,所以希望预测离散输出0、1、2、3
。0 代表良性,1 表示第1类乳腺癌,2表示第2类癌症,3表示第3类,也是分类问题。
应用
- 垃圾邮件问题
- 疾病分类问题
无监督学习Unsupervised Learning
- 监督学习中,数据是有标签的
- 无监督学习中,数据是没有标签,主要提到了聚类算法
应用
- 基因学的理解应用
- 社交网络分析
- 组织大型计算机集群
- 细分市场
- 新闻事件分类
单变量线性回归Linear Regression with One Variable
房价问题
横轴是不同的房屋面积,纵轴是房屋的出售价格。
监督学习:对于每个数据来说,给出了正确的答案。在监督学习中,我们有一个给定的数据,叫做训练集training set
回归问题:根据之前的数据,预测出一个准确的输出值。
分类问题:预测离散的输出值,例如寻找癌症肿瘤,并想要确定肿瘤是良性的还是恶性的,属于0/1
离散输出的问题
监督学习工作模式
学习过程解释:
- 将训练集中的房屋价格喂给学习算法
- 学习算法工作,输出一个函数,用h表示
h
表示hypothesis
,代表的是学习算法的解决方案或者函数。h
根据输入的x
值得到y
值,因此h
是x
到的y
的一个函数映射- 可能的表达式: h θ ( x ) = θ 0 + θ 1 x h_{\theta}(x)=\theta_0+\theta_1x hθ(x)=θ0+θ1x,只有一个特征或者出入变量,称为单变量线性回归问题
代价函数cost function
代价函数也称之为平方误差函数,平方误差代价函数。
在线性回归中我们有一个像这样的训练集, 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。
函数解释
- m:训练样本的个数
- h θ ( x ) = θ 0 + θ 1 x h_{\theta}(x)=\theta_0+\theta_1x hθ(x)=θ0+θ1x:假设函数
- θ 0 \theta_0 θ0 和 θ 1 \theta_1 θ1:表示两个模型参数,即直线的斜率和y轴上的截距
建模误差
建模目标
- 图中红色的点表示真实值 y i y_i yi,真实的数据集
- h ( x ) h(x) h(x)表示的是通过模型得到的预测值
- 目标:选择出可以使得建模误差的平方和能够最小的模型参数
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
代价函数直观解释1
本例中是通过假设 θ 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 θ的函数,使得代价函数最小化
代价函数直观解释2
通过等高线图来进行解释。通过绘制出等高线图可以看出来,必定存在某个点,使得代价函数最小,即:可以看出在三维空间中存在一个使得 J ( θ 0 , θ 1 ) J(\theta_{0}, \theta_{1}) J(θ0,θ1)最小的点。
梯度下降Gradient Descent
思想
梯度下降是一个用来求函数最小值的算法。
-
背后的思想:开始随机选取一个参数的组合 ( θ 0 , θ 1 , … , θ n ) (\theta_0,\theta_1,…,\theta_n) (θ0,θ1,…,θn)计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。
-
持续这么做,直到一个局部最小值(local minimum),因为并没有尝试完所有的参数组合,所以不能确定得到的局部最小值是否是全局最小值(global minimum)
批量梯度下降batch gradient descent
算法公式为
特点:需要同步更新两个参数
梯度下降直观解释
算法公式: θ 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 α是学习率它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。
- 学习率太小:收敛速度慢需要很长的时间才会到达全局最低点
- 学习率太大:可能越过最低点,甚至可能无法收敛
梯度下降的线性回归GradientDescent-For-LinearRegression
梯度下降是很常用的算法,它不仅被用在线性回归上和线性回归模型、平方误差代价函数。将梯度下降和代价函数相结合。
梯度下降VS线性回归算法
对之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
∂ ∂ θ 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))
}
这种梯度下降的算法称之为批量梯度下降算法,主要特点:
- 在梯度下降的每一步中,我们都用到了所有的训练样本
- 在梯度下降中,在计算微分求导项时,我们需要进行求和运算,需要对所有m个训练样本求和