-
2019-02-27 20:41:04
单变量线性回归(Linear Regression with One Variable)
代价函数(Cost Function)
代价函数表示分析模型与实际训练集之间的差距 代价函数就是为了就是找到目的函数的最优解,最优解即为代价函数的最小值。
上述是平方误差代价函数,这也是常用到的代价函数,它通过目的函数跟各个实际值的误差平方建立新的函数。为了使这个值不受个别极端数据影响而产生巨大波动,采用类似方差再取二分之一的方式来减小个别数据的影响。
最低点为代价函数最小值:
梯度下降算法(Gradient Descent Algorithm)
梯度下降是一个用来求函数最小值的算法,使用梯度下降算法来求出代价函数J(θ0,θ1) 的最小值。
算法思想
- 从参数的某一个(组)值开始,比如从θ0=0和θ1=0开始
- 保持该(组)值持续减小,如果是一组值就要保证他们同步更新,直到找到我们希望找到的最小值、我们要找到一条最快下山的路径,我们走的每一步大小就是α 。
如果在不同的起点,最后到达的最低点也会不一样。
3.1批量梯度下降(batch gradient descent)
α:学习速率,决定我们让代价函数下降程度最大的方向迈出的步子有多大
3.1.1 同步更新(Simultaneous update)
在梯度下降算法中,我们需要更新θ0,θ1,实现梯度下降算法的微妙之处是,在这个表达式中,如果你要更新这个等式,你需要同时更新。3.1.2 梯度下降算法理解
如果 α 太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果 α 太大,它会导致无法收敛,甚至发散。解决方法——乘偏导数
首先初始化我的梯度下降算法,在那个品红色的点初始化,如果
我更新一步梯度下降,随着我接近最低点,我的导数越来越接近零,所以,梯度下降一步后,新的导数会变小一点点。然后我想再梯度下降一步,在这个绿点,我自然会用一个稍微跟刚才在那个品红点时比,再小一点的一步,到了新的红色点,更接近全局最低点了,因此这点的导数会比在绿点时更小。所 以,我再进行一步梯度下降时,我的导数项是更小的,θ1更新的幅度就会更小。所以随着梯度下降法的运行,你移动的幅度会自动变得越来越小,直到最终移动幅度非常小,你会发现,已经收敛到局部极小值。3.1.3 线性回归的批量梯度下降
偏导数求解推导过程批量梯度下降方程
通过上面几条公式的整合,最终得出以下公式更多相关内容 -
吴恩达机器学习个人笔记完整版
2018-02-24 11:32:20吴恩达机器学习个人笔记完整版,主要记录吴老师上课时的重点,毕竟英文授课,还是要看笔记的。 -
吴恩达机器学习笔记一
2020-06-24 20:33:26机器学习 监督学习 无监督学习 单变量线性回归 代价函数 梯度下降 批量梯度下降 1.机器学习含义 机器学习(Machine Learning)是研究计算机怎样模拟或实现人类的学习行为,以获取新的 知识或技能,重新组织已有的知识...目录:
- 机器学习
- 监督学习
- 无监督学习
- 单变量线性回归
- 代价函数
- 梯度下降
- 批量梯度下降
1.机器学习含义
机器学习(Machine Learning)是研究计算机怎样模拟或实现人类的学习行为,以获取新的
知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
目标“让机器自己学习怎么来解决问题”
由Tom Mitchell定义的机器学习是,
一个好的学习问题或一个程序 认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当有了经验E后,经过P评判,程序在处理T时的性能有所提升。
经验E 就是程序上万次自我练习的经验而任务 T 就是下棋。性能度量值 P ,就是它在与一
些新的对手比赛时,赢得比赛的概率。2.主要内容
- 监督学习(参数/非参数算法,支持向量机,核函数,神经网络)
- 无监督学习(聚类,降维,推荐系统,深入学习推荐)
- 在机器学习的最佳实践(偏差、方差理论等)
3 监督学习
监督学习指我们给学习算法一个由“正确答案”组成的数据集。
横轴表示房子的面积,单位是平方英尺,纵轴表示房价,单位是
千美元。那基于这组数据,假如你有一个朋友,他有一套 750 平方英尺房子,现在他希望把
房子卖掉,想知道这房子能卖多少钱?
拟合一条直线推测出房子可卖$150000
二次方程拟合 房子能卖出接近$200000 ,显然二次方程更好些!在这个例子中,我们给了一系列房子的数据,我们给定数据集中每个样本的正确价格,
即它们实际的售价然后运用学习算法,算出更多的正确答案。比如那个新房子的价格。
用术语来讲,这叫做回归问题。我们试着推测出一个连续值的结果,即房子的价格。假设说你想通过查看病历来推测乳腺癌良性与否,
这个数据集中,横轴表示肿瘤的大小,纵轴上,标出 1 和 0 表示是或者不是恶性肿瘤。我们之前见过的肿瘤,如果是恶性则记为 1,不是恶性,或者说良性记为 0。
或者用不同的符号表示良性和恶性肿瘤,良性的肿瘤改成用 O 表示,恶性的继续用 X 表示,来预测肿瘤的恶性与否。分类指的是,我们试着推测出离散的输出值: 0 或 1 良性或恶性,
监督学习的基本思想是:数据集中的每个样本都有 “正确答案”,再根据这些样本做出预测。
就像房子和肿瘤的例子那样,用回归来推出连续的输出,分类的目标是推出一组离散的结果。
4 无监督学习
无监督学习中没有任何标签 或者是相同的标签 或者是没有标签。 已知数据集,却不知如何处理,也未告知每个数据点是什么, 就是一个数据集。
其实,他就是学习策略,交给算法大量的数据,并让算法为我们从数据中找出某种结构。
无监督学习可用于组织大型计算机集群、社交网络分析、新闻事件分类、垃圾邮件问题等。
5 单变量线性回归
以房屋交易问题为例,假使我们回归问题的训练集如下表所示:
这就是一个监督学习算法的工作方式,我们可以看到这里有我们的训练集里房屋价格
我们把它喂给我们的学习算法,学习算法的工作了,然后输出一个函数,通常表示为小写 ℎ
表示。 ℎ 代表 hypothesis(假设), ℎ表示一个函数,输入是房屋尺寸大小,就像你朋友想出售
的房屋,因此 ℎ 根据输入的 𝑥值来得出 𝑦 值, 𝑦 值对应房子的价格 因此, ℎ 是一个从𝑥
到 𝑦 的函数映射。
我将选择最初的使用规则ℎ代表 hypothesis,因而,要解决房价预测问题,我们实际上
是要将训练集“喂”给我们的学习算法, 进而学习得到一个假设ℎ,然后将我们要预测的房屋
的尺寸作为输入变量输入给ℎ,预测出该房屋的交易价格作为输出变量输出为结果。那么,
对于我们的房价预测问题,我们该如何表达 ℎ?
一种可能的表达方式为: ℎ𝜃(𝑥) = 𝜃0 + 𝜃1𝑥,因为只含有一个特征/输入变量,因此这样
的问题叫作单变量线性回归问题。
6 代价函数
这个问题中,每次拟合出不同的直线,就会有一个代价函数值,
我们的目标就是找出满足代价函数值最小的 θ0和θ1值。
7 梯度下降
梯度下降是一个用来求函数最小值的算法,我们可使用梯度下降自动找出代价函数J最小值。
通俗的理解:
想象一下你正站立在山的这一点上,站立在你想象的公园这座红色山上,在梯度下降算
法中,我们要做的就是旋转 360 度,看看我们的周围,并问自己要在某个方向上,用小碎步
尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你
会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下
山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并
决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点
的位置。
其中𝑎是学习率( learning rate),它决定了我们沿着能让代价函数下降程度最大的方向
向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率
乘以代价函数的导数。
它的关键是同时更新θ0,θ1
像这样:
注意: α太小,每次会一点点挪动,需要很多不才能到达全局最低点。
α太大,可能会越过最低点,甚至可能无法收敛,一次次越过最低点,直到越来越远,甚至发散。
假如 θ1在一个局部最低点,那么它的导数等于0,并且θ1不再改变,此时对其更新等于什么都没做,不会改变参数的值。并且θ1越接近最低点,每次移动步伐越小,直至最后不在改变。
8. 梯度下降的线性回归
有时也称为批量梯度下降, 指的是在梯度下降的每一步中, 我们都用到了
所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在
每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有𝑚个训练样
本求和。 批量梯度下降说明了我们需要考虑所有这一批训练样本,每次只关注训练集中的一些小的子集。
之前的线性回归问题运用梯度下降,关键在于求出代价函数的导数。
更多内容参见:https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes -
吴恩达机器学习笔记
2018-09-23 13:43:16吴恩达机器学习视频的笔记,时间不充足的同学可以通过笔记代替视频进行学习。 -
吴恩达机器学习
2017-11-15 14:07:48吴恩达 机器学习上课时的课件笔记,可以配合吴恩达的视频看 -
吴恩达机器学习笔记~斯坦福公开课笔记!
2018-06-05 18:06:28吴恩达斯坦福机器学习公开课笔记!!!最好的机器学习入门课!完全照着公开课视频所做的完整笔记!有这篇文档完全可以不看视频!节省时间~ -
吴恩达机器学习课程笔记
2019-02-01 00:05:36吴恩达机器学习课程笔记目录
吴恩达机器学习课程笔记
机器学习定义
什么是机器学习?
机器学习(Machine Learning):是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。一个程序被认为能从经验E中学习,解决任务 T,达到性能度量值P,当且仅当,有了经验E后,经过P评判, 程序在处理T时的性能有所提升。监督学习和无监督学习
监督学习(Supervised Learning):对于数据集中每一个样本都有对应的标签,包括回归(regression)和分类(classification);
无监督学习(Unsupervised Learning):数据集中没有任何的标签,包括聚类(clustering),著名的一个例子是鸡尾酒晚会。实现公式:[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x’);单变量线性回归
模型表示(model representation)
线性回归模型:
h θ ( x ) = θ 0 + θ 1 x J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h ( x i ) − y i ) 2 h_\theta(x)=\theta_0+\theta_1x \\ J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(h(x^i)-y^i)^2 hθ(x)=θ0+θ1xJ(θ0,θ1)=2m1i=1∑m(h(xi)−yi)2给定训练样本 ( x i , y i ) (x^i,y^i) (xi,yi),其中: i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m, x x x表示特征, y y y表示输出目标,监督学习算法的工作方式如图所示:
假设函数h(hypothesis):是一个从输入 x x x到输出 y y y的映射, h ( x ) = θ 0 + θ 1 x h(x)=\theta_0+\theta_1x h(x)=θ0+θ1x。 θ 0 \theta_0 θ0和 θ 1 \theta_1 θ1都是模型参数。代价函数
代价函数(cost function) J ( θ ) J(\theta) J(θ),通常使用平方误差函数,如下: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h ( x i ) − y i ) 2 , m 为 训 练 样 本 的 数 量 。 J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(h(x^i)-y^i)^2,m为训练样本的数量。 J(θ0,θ1)=2m1i=1∑m(h(xi)−yi)2,m为训练样本的数量。训练的目标为最小化代价函数,即 m i n m i z e θ 0 , θ 1 J ( θ 0 , θ 1 ) \underset {\theta_0,\theta_1} {minmize}J(\theta_0,\theta_1) θ0,θ1minmizeJ(θ0,θ1)。
代价函数的另外一个图形表示是等高图,如图所示:
梯度下降
代价函数: J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1),可以推广到 J ( θ 0 , θ 1 , θ 2 , . . . , θ n ) J(\theta_0,\theta_1,\theta_2,...,\theta_n) J(θ0,θ1,θ2,...,θn)
目标: m i n θ 0 , θ 1 J ( θ 0 , θ 1 ) \underset {\theta_0,\theta_1} {min}J(\theta_0,\theta_1) θ0,θ1minJ(θ0,θ1)
初始化 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1,更新公式: θ j = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) \theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) θj=θj−α∂θj∂J(θ0,θ1) α \alpha α为学习速率(learning rate)。
如果α太小,梯度下降会变得缓慢;如果α太大,梯度下降可能无法收敛甚至发散。线性回归中的梯度下降
梯度下降的每一步遍历的所有数据集中的样例,又叫“batch” Gradient Descent Algorithm。凸函数(convex function)
多变量线性回归
假设函数: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\dots+\theta_nx_n hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn。 定义 x 0 = 1 x_0=1 x0=1,
从而: x = [ x 0 , x 1 , x 2 , … , x n ] T , x ∈ R n + 1 x=[x_0,x_1,x_2,\dots,x_n]^T,x\in\R^{n+1} x=[x0,x1,x2,…,xn]T,x∈Rn+1; θ = [ θ 0 , θ 1 , θ 2 , … , θ n ] T , θ ∈ R n + 1 \theta=[\theta_0,\theta_1,\theta_2,\dots,\theta_n]^T,\theta\in\R^{n+1} θ=[θ0,θ1,θ2,…,θn]T,θ∈Rn+1
假设函数可记作: h θ ( x ) = θ T x h_\theta(x)=\theta^Tx hθ(x)=θTx。
代价函数: J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2梯度下降更新公式: θ j : = θ j − α ∂ ∂ θ j J ( θ ) , j = 0 , 1 , … , n \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta),\ j=0,1,\dots,n θj:=θj−α∂θj∂J(θ), j=0,1,…,n更精确的: θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) , j = 0 , 1 , … , n \theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)},\ j=0,1,\dots,n θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i), j=0,1,…,n
可以通过for循环更新 θ \theta θ,也可以采用向量形式更新 θ \theta θ: θ = θ − α m X T ( X θ − y ) \theta=\theta-\frac{\alpha}{m}X^T(X\theta-y) θ=θ−mαXT(Xθ−y)特征缩放(feature scaling)
目的:保证特征处于相似的尺度上,有利于加快梯度下降算法运行速度,加快收敛到全局最小值
方式:
Mean normalization: x i = x i − μ σ x_i=\frac{x_i-\mu}{\sigma} xi=σxi−μ其中 μ \mu μ为平均值, σ \sigma σ为标准差;
max-min: x i = x i − m i n m a x − m i n x_i=\frac{x_i-min}{max-min} xi=max−minxi−min学习率(learning rate)
梯度下降更新公式: θ j : = θ j − α ∂ ∂ θ j J ( θ ) , \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta), θj:=θj−α∂θj∂J(θ),
- “debugging”:如何确保梯度下降正确运行;
- 如何正确选择学习率。
- 如果 α \alpha α太小:收敛慢
- 如果
α
\alpha
α太大:每一次迭代过程中
J
(
θ
)
J(\theta)
J(θ)将会不断的越过最小值,无法收敛,
J
(
θ
)
J(\theta)
J(θ)如下图所示:
- choose α \alpha α: … , 0.001 , 0.003 , 0.01 , 0.03 , 0.1 , 0.3 , 1 , … \dots,0.001,0.003,0.01,0.03,0.1,0.3,1,\dots …,0.001,0.003,0.01,0.03,0.1,0.3,1,…
- 寻找一个合适的较小值和较大值,保证结果和速度的同时选取较大的值,或者稍小的合理值。
特征和多项式回归
举例:房价预测问题
假设有两个特征: x 1 x_1 x1是土地宽度, x 2 x_2 x2是土地纵向深度,可做假设: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2 hθ(x)=θ0+θ1x1+θ2x2。
可以考虑构造特征底面积 x = x 1 ∗ x 2 x=x_1*x_2 x=x1∗x2,此时假设函数: h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+\theta_1x hθ(x)=θ0+θ1x。
数据集样本分布如图:
多项式回归(polynomial regression):
二次模型:
三次模型:
更恰当的模型:
正规方程(normal equation)
代价函数: J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2对 J ( θ ) J(\theta) J(θ)求偏导并令导数为零可解得: θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)−1XTy,推导过程如下:
令 x ( i ) = ( x 0 ( i ) x 1 ( i ) ⋮ x n ( i ) ) ∈ R n + 1 , y = ( y 1 y 2 ⋮ y m ) ∈ R m x^{(i)}=\begin{pmatrix}x_0^{(i)}\\x_1^{(i)}\\\vdots\\x_n^{(i)}\\\end{pmatrix}\in\R^{n+1},y=\begin{pmatrix}y_1\\y_2\\\vdots\\y_m\\\end{pmatrix}\in\R^m x(i)=⎝⎜⎜⎜⎜⎛x0(i)x1(i)⋮xn(i)⎠⎟⎟⎟⎟⎞∈Rn+1,y=⎝⎜⎜⎜⎛y1y2⋮ym⎠⎟⎟⎟⎞∈Rm令
X = ( 1 x 1 ( 1 ) ⋯ x j ( 1 ) ⋯ x n ( 1 ) 1 x 1 ( 2 ) ⋯ x j ( 2 ) ⋯ x n ( 2 ) ⋮ ⋮ ⋱ ⋮ ⋱ ⋮ 1 x 1 ( m ) ⋯ x j ( m ) ⋯ x n ( m ) ) = ( ( x ( 1 ) ) T ( x ( 2 ) ) T ⋮ ( x ( m ) ) T ) ∈ R m × ( n + 1 ) X=\begin{pmatrix} 1 & x_1^{(1)} & \cdots & x_j^{(1)} & \cdots & x_n^{(1)} \\ 1 & x_1^{(2)} & \cdots & x_j^{(2)} & \cdots & x_n^{(2)} \\ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots \\ 1 & x_1^{(m)} & \cdots & x_j^{(m)} & \cdots & x_n^{(m)} \\ \end{pmatrix} =\begin{pmatrix} (x^{(1)})^T\\(x^{(2)})^T\\\vdots\\(x^{(m)})^T \end{pmatrix}\in\R^{m×(n+1)} X=⎝⎜⎜⎜⎜⎛11⋮1x1(1)x1(2)⋮x1(m)⋯⋯⋱⋯xj(1)xj(2)⋮xj(m)⋯⋯⋱⋯xn(1)xn(2)⋮xn(m)⎠⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎛(x(1))T(x(2))T⋮(x(m))T⎠⎟⎟⎟⎞∈Rm×(n+1)又 ∂ ∂ θ J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) = 0 \frac{\partial}{\partial\theta}J(\theta)=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x^{(i)}=0 ∂θ∂J(θ)=m1∑i=1m(hθ(x(i))−y(i))x(i)=0,可得 θ = ( X T X ) − 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)−1XTy推导过程如下:
正规方程存在条件:-
X
T
X
X^TX
XTX是可逆矩阵,若不可逆,可计算广义可逆矩阵。
比较:
梯度下降算法:需要选择学习速率 α \alpha α; 需要许多次迭代;当特征数量n较大时也能够运转正常;
正规方程: 无需选择参数;无需迭代;需要计算 ( X T X ) − 1 (X^TX)^{-1} (XTX)−1;当n较大时计算缓慢
逻辑回归(logistic regression)
假设表示
逻辑回归模型: h θ ( x ) , h_\theta(x), hθ(x),want: 0 ≤ h θ ( x ) ≤ 1 0 \leq h_\theta(x) \leq 1 0≤hθ(x)≤1
令 h θ ( x ) = g ( θ T x ) \ h_\theta(x)\ =g(\theta^Tx) hθ(x) =g(θTx),将 θ T x \theta^Tx θTx代入 g ( ⋅ ) g(\cdot) g(⋅): h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+e−θTx1其中: g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+e−z1称为Sigmod函数,也叫作Logistic函数。
hope:
{ h θ ( x ) ≥ 0.5 , y = 1 h θ ( x ) < 0.5 , y = 0 \begin{cases} h_\theta(x) \geq 0.5,y=1 \\ h_\theta(x) < 0.5,y=0 \end{cases} {hθ(x)≥0.5,y=1hθ(x)<0.5,y=0
从概率的角度: h θ ( x ) = p { y = 1 ∣ x , θ } h_\theta(x)=p\{y=1|x,\theta\} hθ(x)=p{y=1∣x,θ}决策界限(Decision Boundary)
predict:y=1 , if h θ ( x ) ≥ 0.5 \text {predict:y=1},\text {if }h_\theta(x) \geq 0.5 predict:y=1,if hθ(x)≥0.5
predict:y=0 , if h θ ( x ) < 0.5 \text {predict:y=0},\text {if }h_\theta(x) < 0.5 predict:y=0,if hθ(x)<0.5
h θ ( x ) ≥ 0.5 → z ≥ 0 → θ T x ≥ 0 h_\theta(x) \geq 0.5\quad \to\quad z\geq0 \quad \to\quad \theta^Tx\geq0 hθ(x)≥0.5→z≥0→θTx≥0
h θ ( x ) < 0.5 → z < 0 → θ T x < 0 h_\theta(x) < 0.5\quad \to\quad z<0 \quad \to\quad \theta^Tx<0 hθ(x)<0.5→z<0→θTx<0
定义: θ T x = 0 \theta^Tx=0 θTx=0为决策边界。代价函数(cost function)
假设表示定义的: h θ ( x ) = p { y = 1 ∣ x , θ } h_\theta(x)=p\{y=1|x,\theta\} hθ(x)=p{y=1∣x,θ},由极大似然的思想: θ = a r g m a x θ ∏ i = 1 m p { y i = 1 ∣ x , θ } y i p { y i = 0 ∣ x , θ } 1 − y i = a r g m a x θ ∏ i = 1 m p { y i = 1 ∣ x , θ } y i ( 1 − p { y i = 1 ∣ x , θ } ) 1 − y i \begin{array}{} \theta=\underset{\theta}{argmax}\prod_{i=1}^{m}p\{y_i=1|x,\theta\}^{y_i}p\{y_i=0|x,\theta\}^{1-y_i}\\ = \underset{\theta}{argmax}\prod_{i=1}^{m}p\{y_i=1|x,\theta\}^{y_i}(1-p\{y_i=1|x,\theta\})^{1-y_i} \end{array}{} θ=θargmax∏i=1mp{yi=1∣x,θ}yip{yi=0∣x,θ}1−yi=θargmax∏i=1mp{yi=1∣x,θ}yi(1−p{yi=1∣x,θ})1−yi令 Γ = ∏ i = 1 m p { y i = 1 ∣ x , θ } y i ( 1 − p { y i = 1 ∣ x , θ } ) 1 − y i \Gamma=\prod_{i=1}^{m}p\{y_i=1|x,\theta\}^{y_i}(1-p\{y_i=1|x,\theta\})^{1-y_i} Γ=∏i=1mp{yi=1∣x,θ}yi(1−p{yi=1∣x,θ})1−yi,取对数可得: log ( Γ ) = ∑ i = 1 m y i log ( h θ ( x ) ) + ( 1 − y i ) ( 1 − log ( h θ ( x ) ) ) \log(\Gamma)=\sum_{i=1}^my_i\log(h_\theta(x))+(1-y_i)(1-\log(h_\theta(x))) log(Γ)=i=1∑myilog(hθ(x))+(1−yi)(1−log(hθ(x)))所以: θ = a r g m a x θ log ( Γ ) = a r g m a x θ ∑ i = 1 m y i log ( h θ ( x ) ) + ( 1 − y i ) ( 1 − log ( h θ ( x ) ) ) \theta = \underset{\theta}{argmax}\log(\Gamma)\\=\underset{\theta}{argmax}\sum_{i=1}^my_i\log(h_\theta(x))+(1-y_i)(1-\log(h_\theta(x))) θ=θargmaxlog(Γ)=θargmaxi=1∑myilog(hθ(x))+(1−yi)(1−log(hθ(x)))令 c o s t ( h θ ( x ) , y i ) = − y i log ( h θ ( x ) ) − ( 1 − y i ) ( 1 − log ( h θ ( x ) ) ) cost(h_\theta(x),y_i)=-y_i\log(h_\theta(x))-(1-y_i)(1-\log(h_\theta(x))) cost(hθ(x),yi)=−yilog(hθ(x))−(1−yi)(1−log(hθ(x))),所以目标: θ = a r g m a x θ ∑ i = 1 m c o s t ( h θ ( x ) , y i ) \theta= \underset{\theta}{argmax}\sum_{i=1}^mcost(h_\theta(x),y_i) θ=θargmaxi=1∑mcost(hθ(x),yi)(注意:线性回归的 c o s t ( h θ ( x ) , y i ) = ( h θ ( x ) − y i ) 2 cost(h_\theta(x),y_i)=(h_\theta(x)-y_i)^2 cost(hθ(x),yi)=(hθ(x)−yi)2。)
由于 c o s t ( h θ ( x ) , y i ) = − y i log ( h θ ( x ) ) − ( 1 − y i ) ( 1 − log ( h θ ( x ) ) ) cost(h_\theta(x),y_i)=-y_i\log(h_\theta(x))-(1-y_i)(1-\log(h_\theta(x))) cost(hθ(x),yi)=−yilog(hθ(x))−(1−yi)(1−log(hθ(x))),写成: c o s t ( h θ ( x ) , y i ) = { − y i log ( h θ ( x ) ) , if y i = 1 − ( 1 − y i ) ( 1 − log ( h θ ( x ) ) ) , if y i = 0 cost(h_\theta(x),y_i)=\begin{cases} -y_i\log(h_\theta(x)),\quad \quad \quad \quad\quad\text{if $y_i=1$} \\-(1-y_i)(1-\log(h_\theta(x))),\text{if $y_i=0$}\end{cases} cost(hθ(x),yi)={−yilog(hθ(x)),if yi=1−(1−yi)(1−log(hθ(x))),if yi=0
逻辑回归代价函数:
J ( θ ) = 1 m ∑ i = 1 m c o s t ( h θ ( x ( i ) ) , y ( i ) ) = − 1 m ∑ i = 1 m ( y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ) J(\theta)=\frac{1}{m}\sum_{i=1}^{m}cost(h_\theta(x^{(i)}),y^{(i)})\\=-\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))) J(θ)=m1i=1∑mcost(hθ(x(i)),y(i))=−m1i=1∑m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))拟合参数: min θ J ( θ ) \underset{\theta}{\min}J(\theta) θminJ(θ)
梯度下降法:
∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial}{\partial\theta_j}J(\theta)=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} ∂θj∂J(θ)=m1i=1∑m(hθ(x(i))−y(i))xj(i) θ j : = θ j − α ∂ ∂ θ j J ( θ ) = θ j − α m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta)=\theta_j-\frac{\alpha}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θj−α∂θj∂J(θ)=θj−mαi=1∑m(hθ(x(i))−y(i))xj(i)高级优化算法:- 共轭梯度算法
- BFGS
- L-BFGS
优点:无需人工选择参数 α \alpha α;运算速度比梯度下降更快
缺点:更加复杂
正则化(regularization)
欠拟合和过拟合(underfitting and overfitting)
欠拟合
欠拟合,高偏差:说明没有很好的拟合训练数据
解决办法:增加特征,如增加多项式过拟合
过拟合,高方差:拟合训练数据过于完美, J ( θ ) ≈ 0 J(\theta)\approx0 J(θ)≈0,导致模型的泛化能力很差,对于新样本不能准确预测;
解决办法:- 减少特征个数
a)人工保留合适的特征
b)采用模型选择算法 - 正规化
a)保留所有特征,减小参数 θ j \theta_j θj的维度
正则化代价函数
对 θ j \theta_j θj加入惩罚项:
线性回归代价函数: J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 m θ j 2 ] J(\theta)=\frac{1}{2m}\left[ \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^m\theta_j^2\right] J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑mθj2]
逻辑回归代价函数:
J ( θ ) = − 1 m ∑ i = 1 m ( y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ) + λ 2 m ∑ j = 1 m θ j 2 J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)})))+\frac{\lambda}{2m}\sum_{j=1}^{m}\theta_j^2 J(θ)=−m1i=1∑m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))+2mλj=1∑mθj2拟合参数: min θ J ( θ ) \underset{\theta}{\min}J(\theta) θminJ(θ)目标: min θ J ( θ ) \underset{\theta}{\min}J(\theta) θminJ(θ)线性回归和逻辑回归的正则化
梯度下降算法:
repeat:{ θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) \theta_0:= \theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))x0(i) θ j : = θ j − α 1 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) + λ θ j ] \theta_j:= \theta_j-\alpha\frac{1}{m}\left[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}+\lambda\theta_j\right] θj:=θj−αm1[i=1∑m(hθ(x(i))−y(i))x0(i)+λθj]
   \quad\quad\quad\; }
等价于:
repeat:{ θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) \theta_0:= \theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))x0(i) θ j : = θ j ( 1 − α 1 m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) \theta_j:= \theta_j(1-\alpha\frac{1}{m})-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} θj:=θj(1−αm1)−αm1i=1∑m(hθ(x(i))−y(i))x0(i)
   \quad\quad\quad\; }
正规方程:
假设: m ≤ n ( e x a m p l e s ≤ f e a t u r e s ) m\leq n(examples\leq features) m≤n(examples≤features)
θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)−1XTyIf λ > 0 \lambda>0 λ>0, θ = ( X T X + λ [ 0 1 1 ⋱ 1 ] ⎵ ( n + 1 ) × ( n + 1 ) ) − 1 X T y \theta=\left(X^TX+\lambda\underbrace{ \begin{bmatrix}0\\ &1\\ &&1\\ &&& \ddots \\&&&&1\end{bmatrix}}_{(n+1)\times(n+1)}\right)^{-1}X^Ty θ=⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎛XTX+λ(n+1)×(n+1) ⎣⎢⎢⎢⎢⎡011⋱1⎦⎥⎥⎥⎥⎤⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎞−1XTy只要 λ > 0 \lambda>0 λ>0,那么括号内的矩阵一定不是奇异矩阵,也就是可逆的。神经网络学习
模型表示
上图代表单个的神经元。神经网络即是一组神经元。典型的三层神经网络如下图所示:
详细解释:
a i ( j ) a^{(j)}_i ai(j):第 j j j层的单元 i i i的激活项。(“activation of unit i in layer j”)
Θ ( j ) \Theta^{(j)} Θ(j):从第 j j j层( u n i t s units units: s j s_j sj)到第 j + 1 j+1 j+1层( u n i t s units units: s j + 1 s_{j+1} sj+1)的权重矩阵,维数: s j + 1 × ( s j + 1 ) s_{j+1}\times (s_j+1) sj+1×(sj+1)
a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a_1^{(2)}=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3) a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3) a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a_2^{(2)}=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3) a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3) a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) a_3^{(2)}=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3) a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3) h Θ ( x ) = a 1 ( 3 ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) h_\Theta(x)=a_1^{(3)}=g(\Theta_{10}^{(2)}a_0^{(2)}+\Theta_{11}^{(2)}a_1^{(2)}+\Theta_{12}^{(2)}a_2 ^{(2)}+\Theta_{13}^{(2)}a_3^{(2)}) hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))神经网络前向传播
h Θ ( x ) = a ( 3 ) = g ( z ( 3 ) ) = g ( Θ ( 2 ) a ( 2 ) ) = g ( Θ ( 2 ) g ( z ( 2 ) ) ) = g ( Θ ( 2 ) g ( Θ ( 1 ) a ( 1 ) ) ) h_\Theta(x)=a^{(3)}=g(z^{(3)})=g(\Theta^{(2)}a^{(2)})=g(\Theta^{(2)}g(z^{(2)}))=g(\Theta^{(2)}g(\Theta^{(1)}a^{(1)})) hΘ(x)=a(3)=g(z(3))=g(Θ(2)a(2))=g(Θ(2)g(z(2)))=g(Θ(2)g(Θ(1)a(1)))
代价函数
逻辑回归代价函数: J ( θ ) = − 1 m ∑ i = 1 m ( y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ) + λ 2 m ∑ j = 1 m θ j 2 J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)})))+\frac{\lambda}{2m}\sum_{j=1}^{m}\theta_j^2 J(θ)=−m1i=1∑m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))+2mλj=1∑mθj2神经网络代价函数: J ( θ ) = − 1 m ∑ i = 1 m ∑ k = 1 K ( y k ( i ) log ( h θ ( x ( i ) ) ) k + ( 1 − y k ( i ) ) log ( 1 − h θ ( x ( i ) ) ) k ) + λ 2 m ∑ l = 1 L − 1 ∑ j = 1 m ∑ i = 1 m ( θ j i l ) 2 J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{K}(y_k^{(i)}\log(h_\theta(x^{(i)}))_k+(1-y_k^{(i)})\log(1-h_\theta(x^{(i)}))_k)+\frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{j=1}^{m}\sum_{i=1}^{m}(\theta_{ji}^{l})^2 J(θ)=−m1i=1∑mk=1∑K(yk(i)log(hθ(x(i)))k+(1−yk(i))log(1−hθ(x(i)))k)+2mλl=1∑L−1j=1∑mi=1∑m(θjil)2优化目标: min Θ J ( Θ ) \underset{\Theta}{\min} J(\Theta) ΘminJ(Θ)
需要计算:- J ( Θ ) J(\Theta) J(Θ)
- ∂ ∂ Θ i j ( l ) J ( Θ ) \frac{\partial}{\partial\Theta_{ij}^{(l)}}J(\Theta) ∂Θij(l)∂J(Θ), Θ i j ( l ) ∈ R \Theta_{ij}^{(l)}\in\R Θij(l)∈R
如图:
前向传播:
a ( 1 ) = x z ( 2 ) = Θ ( 1 ) a ( 1 ) a ( 2 ) = g ( z ( 2 ) ) z ( 3 ) = Θ ( 2 ) a ( 2 ) a ( 3 ) = g ( z ( 3 ) z ( 4 ) = Θ ( 3 ) a ( 3 ) a ( 4 ) = g ( z ( 4 ) h Θ ( x ) = a ( 4 ) a^{(1)}=x \\ z^{(2)}=\Theta^{(1)}a^{(1)} \\ a^{(2)}=g(z^{(2)}) \\ z^{(3)}=\Theta^{(2)}a^{(2)} \\ a^{(3)}=g(z^{(3}) \\ z^{(4)}=\Theta^{(3)}a^{(3)} \\ a^{(4)}=g(z^{(4}) \\ h_{\Theta}(x)=a^{(4)} a(1)=xz(2)=Θ(1)a(1)a(2)=g(z(2))z(3)=Θ(2)a(2)a(3)=g(z(3)z(4)=Θ(3)a(3)a(4)=g(z(4)hΘ(x)=a(4)反向传播:
计算: δ j ( l ) \delta_j^{(l)} δj(l)=第 l l l层第 j j j个节点的误差(error);
对于每一个输出单元: δ j ( 4 ) = a j ( 4 ) − y j \delta_j^{(4)}=a_j^{(4)}-y_j δj(4)=aj(4)−yj,写成向量形式为: δ ( 4 ) = a ( 4 ) − y \delta^{(4)}=a^{(4)}-y δ(4)=a(4)−y;由输出层逐级往上计算 δ ( l ) 、 δ ( l − 1 ) … δ ( 2 ) \delta^{(l)}、\delta^{(l-1)}\dots \delta^{(2)} δ(l)、δ(l−1)…δ(2):
δ ( 3 ) = ( Θ ( 3 ) ) T δ ( 4 ) . ∗ g ′ ( z ( 3 ) ) , g ′ ( z ( 3 ) ) = a ( 3 ) . ∗ ( 1 − a ( 3 ) ) δ ( 2 ) = ( Θ ( 2 ) ) T δ ( 3 ) . ∗ g ′ ( z ( 2 ) ) , g ′ ( z ( 2 ) ) = a ( 2 ) . ∗ ( 1 − a ( 2 ) ) \delta^{(3)}=(\Theta^{(3)})^T\delta^{(4)}.*g\prime(z^{(3)}),\qquad g\prime(z^{(3)})=a^{(3)}.*(1-a^{(3)}) \\ \delta^{(2)}=(\Theta^{(2)})^T\delta^{(3)}.*g\prime(z^{(2)}),\qquad g\prime(z^{(2)})=a^{(2)}.*(1-a^{(2)}) δ(3)=(Θ(3))Tδ(4).∗g′(z(3)),g′(z(3))=a(3).∗(1−a(3))δ(2)=(Θ(2))Tδ(3).∗g′(z(2)),g′(z(2))=a(2).∗(1−a(2)) 可以证明(忽略 λ \lambda λ,即 λ = 0 \lambda=0 λ=0): ∂ ∂ Θ i j ( l ) J ( Θ ) = a j ( l ) δ i ( l + 1 ) \frac{\partial}{\partial\Theta_{ij}^{(l)}}J(\Theta)=a_j^{(l)}\delta_i^{(l+1)} ∂Θij(l)∂J(Θ)=aj(l)δi(l+1)详细的:
对于训练集 { ( x ( 1 ) , y ( 1 ) ) , … , ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),\dots,(x^{(m)},y^{(m)})\} {(x(1),y(1)),…,(x(m),y(m))};
初始化 Δ i j l = 0 \Delta_{ij}^l=0 Δijl=0,for all l , i , j l,i,j l,i,j
理解:
换句话说: δ j ( l ) = ∂ ∂ z j ( l ) c o s t ( i ) \delta_j^{(l)}=\frac{\partial}{\partial z_{j}^{(l)}}cost(i) δj(l)=∂zj(l)∂cost(i) , f o r ( j ≥ 0 ) for(j\geq0) for(j≥0)
where c o s t ( i ) = y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) cost(i)=y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)})) cost(i)=y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))
δ \delta δ项是代价函数关于这些中间项的偏导数,衡量影响神经网络的权值,进而影响神经网络的输出的程度。展开参数
梯度检验
随机初始化
together
机器学习细节
模型选择(model selection)
可以依据训练误差和测试误差来评估假设 h θ ( x ) h_\theta(x) hθ(x);
一般来说,我们将数据集划分成训练集(60%)、验证集(20%)和测试集(20%);
在训练集上我们学习参数 θ \theta θ: m i n J ( θ ) minJ(\theta) minJ(θ);
计算训练误差、验证误差:
for linear regression:
J t r a i n ( θ ) = 1 2 m t r a i n ∑ i = 1 m t r a i n ( h θ ( x t r a i n ( i ) ) − y t r a i n ( i ) ) 2 J_{train}(\theta)=\frac{1}{2m_{train}} \sum_{i=1}^{m_{train}}(h_\theta(x_{train}^{(i)})-y_{train}^{(i)})^2 Jtrain(θ)=2mtrain1i=1∑mtrain(hθ(xtrain(i))−ytrain(i))2 J c v ( θ ) = 1 2 m c v ∑ i = 1 m c v ( h θ ( x c v ( i ) ) − y c v ( i ) ) 2 J_{cv}(\theta)=\frac{1}{2m_{cv}} \sum_{i=1}^{m_{cv}}(h_\theta(x_{cv}^{(i)})-y_{cv}^{(i)})^2 Jcv(θ)=2mcv1i=1∑mcv(hθ(xcv(i))−ycv(i))2for logistic regression: J t r a i n ( θ ) = − 1 m t r a i n ∑ i = 1 m t r a i n ( y t r a i n ( i ) log ( h θ ( x t r a i n ( i ) ) ) + ( 1 − y t r a i n ( i ) ) log ( 1 − h θ ( x t r a i n ( i ) ) ) ) J_{train}(\theta)=-\frac{1}{m_{train}}\sum_{i=1}^{m_{train}}(y_{train}^{(i)}\log(h_\theta(x_{train}^{(i)}))+(1-y_{train}^{(i)})\log(1-h_\theta(x_{train}^{(i)}))) Jtrain(θ)=−mtrain1i=1∑mtrain(ytrain(i)log(hθ(xtrain(i)))+(1−ytrain(i))log(1−hθ(xtrain(i)))) J c v ( θ ) = − 1 m c v ∑ i = 1 m c v ( y c v ( i ) log ( h θ ( x c v ( i ) ) ) + ( 1 − y c v ( i ) ) log ( 1 − h θ ( x c v ( i ) ) ) ) J_{cv}(\theta)=-\frac{1}{m_{cv}}\sum_{i=1}^{m_{cv}}(y_{cv}^{(i)}\log(h_\theta(x_{cv}^{(i)}))+(1-y_{cv}^{(i)})\log(1-h_\theta(x_{cv}^{(i)}))) Jcv(θ)=−mcv1i=1∑mcv(ycv(i)log(hθ(xcv(i)))+(1−ycv(i))log(1−hθ(xcv(i))))选择 J c v ( θ ) J_{cv}(\theta) Jcv(θ)最小的模型;
计算测试误差 J t e s t ( θ ) J_{test}(\theta) Jtest(θ);
对于逻辑回归还可以计算误分类率: e r r o r = { 1 , if y i = 1 , h θ ( x ) < 0.5 o r y i = 0 , h θ ( x ) ≥ 0.5 0 , if y i = 1 , h θ ( x ) ≥ 0.5 o r y i = 0 , h θ ( x ) < 0.5 error=\begin{cases} 1,\text{if $y_i=1,h_\theta(x)<0.5\ or\ y_i=0,h_\theta(x)\geq0.5$} \\ 0 ,\text{if $y_i=1,h_\theta(x)\geq0.5\ or\ y_i=0,h_\theta(x)<0.5$}\end{cases} error={1,if yi=1,hθ(x)<0.5 or yi=0,hθ(x)≥0.50,if yi=1,hθ(x)≥0.5 or yi=0,hθ(x)<0.5方差和偏差(variance VS bias)
如图:
一般来说,欠拟合会产生高偏差;过拟合过产生高方差;
具体来说,当模型欠拟合时,训练误差和验证误差都会较大;当模型过拟合时,训练误差很小,然而验证误差很大,如下图:
如何处理高方差和高偏差问题呢?
一般来说,加入合适的正则化项可以有效地避免过拟合(即高方差)
当正则化参数 λ \lambda λ较大时, θ j ≈ 0 \theta_j\approx0 θj≈0(除 θ 0 \theta_0 θ0外),假设函数趋于直线,因而会造成高偏差的问题,导致欠拟合;
当正则化参数 λ \lambda λ较小时,正则化项不起作用,模型会变得过拟合。如图:
一般的,对于高偏差问题(欠拟合):- 增加特征个数
- 增加多项式特征
- 降低 λ \lambda λ
对于高方差问题(过拟合):
- 增加训练样本
- 减少特征个数
- 增加 λ \lambda λ
对于神经网络来说,参数越少,越有可能欠拟合;参数越多,网络结构越复杂,越有可能过拟合,应该加入正则化项。
机器学习系统设计
不对称分类的误差评估(skewed classes)
查准率和召回率(Precision和Recall)
y=1 in presence of rare class that we want to detect;
Precision: 预测为正,实际为正的概率
P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP
Recall: 正例被准确预测的概率,也叫查全率,敏感性
R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP两者平衡
以逻辑回归为例: 0 ≤ h θ ( x ) ≤ 1 0\leq h_\theta(x) \leq1 0≤hθ(x)≤1
预测y=1,if h θ ( x ) ≥ 0.5 h_\theta(x) \geq 0.5 hθ(x)≥0.5;预测y=0,if h θ ( x ) < 0.5 h_\theta(x) < 0.5 hθ(x)<0.5;- 如果我们想要比较确信为正例时才判定为正例,那么提高阈值,模型会对应高查准率,低召回率;
- 如果希望避免假阴性,那么降低阈值,模型会对应低查准率,高召回率
PR曲线
F1 Score
F 1 = 2 P R P + R F1=2\frac{PR}{P+R} F1=2P+RPR
支持向量机
优化目标
复习:
逻辑回归的假设函数: h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+e−θTx1
if y=1, we want h θ ( x ) ≈ 1 , θ T x > > 0 \text{if y=1, we want }h_\theta(x)\approx1,\theta^Tx>>0 if y=1, we want hθ(x)≈1,θTx>>0
if y=0, we want h θ ( x ) ≈ 0 , θ T x < < 0 \text{if y=0, we want }h_\theta(x)\approx0,\theta^Tx<<0 if y=0, we want hθ(x)≈0,θTx<<0
c o s t ( θ , x ) = − ( y log h θ ( x ) + ( 1 − y ) log ( 1 − h θ ( x ) ) ) cost(\theta,x)=-(y\log h_\theta(x)+(1-y)\log (1-h_\theta(x))) cost(θ,x)=−(yloghθ(x)+(1−y)log(1−hθ(x)))
对逻辑回归的代价函数进行修改:
因此,我们可以得到支持向量机的代价函数:
min θ C ∑ i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + 1 2 ∑ i = 1 m θ j 2 \underset{\theta}{\min}C\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^Tx^{(i)})+(1-y^{(i)})cost_0(\theta^Tx^{(i)})]+\frac{1}{2}\sum_{i=1}^{m}\theta_j^2 θminCi=1∑m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+21i=1∑mθj2
公式中的 C C C可以看做是 1 λ \frac{1}{\lambda} λ1,说明支持向量机中更加偏重代价;间隔最大化
当取一个较大的 C C C值时,当 y ( i ) = 1 y^{(i)}=1 y(i)=1时, θ T x ( i ) ≥ 1 \theta^Tx^{(i)}\geq1 θTx(i)≥1;当 y ( i ) = 0 y^{(i)}=0 y(i)=0时, θ T x ( i ) ≤ − 1 \theta^Tx^{(i)}\leq-1 θTx(i)≤−1;
因此我们可以得到支持向量机的决策边界(Decision Boundary):
m i n θ 1 2 ∑ j = 1 n θ j 2 s.t. θ T x ( i ) ≥ 1 , if y ( i ) = 1 θ T x ( i ) ≤ − 1 , if y ( i ) = 0 \begin{array}{} \underset {\theta} {min} & \frac{1}{2} \sum_{j=1}^{n}\theta_j^2 \\ \text{s.t.}& \theta^Tx^{(i)}\geq1, \quad \text{if} \ y^{(i)}=1 \\ &\theta^Tx^{(i)}\leq-1, \quad \text{if}\ y^{(i)}=0 \end{array} θmins.t.21∑j=1nθj2θTx(i)≥1,if y(i)=1θTx(i)≤−1,if y(i)=0
从数学解释上看间隔问题:
1 2 ∑ i = 1 n θ j 2 = 1 2 ( θ 1 2 + … θ n 2 ) 2 = 1 2 ∣ ∣ θ ∣ ∣ 2 \frac{1}{2}\sum_{i=1}^{n}\theta_j^2 = \frac{1}{2}(\sqrt{\theta_1^2+\dots\theta_n^2})^2=\frac{1}{2}||\theta||^2 21i=1∑nθj2=21(θ12+…θn2)2=21∣∣θ∣∣2
简化:n=2
所以有: θ T x ( i ) = p ( i ) ∣ ∣ θ ∣ ∣ = θ 1 x 1 ( i ) + θ 2 x 2 ( i ) \theta^Tx^{(i)}=p^{(i)}||\theta||=\theta_1x_1^{(i)}+\theta_2x_2^{(i)} θTx(i)=p(i)∣∣θ∣∣=θ1x1(i)+θ2x2(i)
决策问题转换为:
核函数
高斯核函数: f i = similarity ( x , l ( i ) ) = exp ( − ∣ ∣ x − l ( i ) ∣ ∣ 2 2 σ 2 ) f_i=\text{similarity}(x,l^{(i)})=\exp(-\frac{||x-l^{(i)}||^2}{2\sigma^2}) fi=similarity(x,l(i))=exp(−2σ2∣∣x−l(i)∣∣2)
如果 x ≈ l ( i ) x\approx l^{(i)} x≈l(i): f i ≈ exp ( − 0 2 2 σ 2 ) ≈ 1 f_i \approx \exp(-\frac{0^2}{2\sigma^2})\approx 1 fi≈exp(−2σ202)≈1如果 x x x is far from l ( i ) l^{(i)} l(i): f i ≈ exp ( − (larger number) 2 2 σ 2 ) ≈ 0 f_i \approx \exp(-\frac{\text{(larger number)}^2}{2\sigma^2})\approx 0 fi≈exp(−2σ2(larger number)2)≈0
σ 2 \sigma^2 σ2对核函数的影响:
可以看出, σ 2 \sigma^2 σ2越大,变化越缓慢; σ 2 \sigma^2 σ2越大,变化越剧烈。
如何选择标记 l ( i ) l^{(i)} l(i)呢?
SVM将每一个训练样本 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)),令标记 l ( i ) = x ( i ) l^{(i)}=x^{(i)} l(i)=x(i),对于每一个输入 x x x,计算 f 1 , f 2 , . . . , f m f_1,f_2,...,f_m f1,f2,...,fm,令 f 0 = 1 f_0=1 f0=1,生成新的特征向量 f ∈ R m + 1 f\in\R^{m+1} f∈Rm+1
SVM参数对性能的影响:
逻辑回归和SVM比较
- 如果特征个数n远远大于训练样本个数,建议使用逻辑回归或者线性SVM
- 如果特征个数n较小,训练样本个数适当,建议使用高斯核SVM
- 如果特征个数小,训练样本非常大,建议增加更多特征或者使用逻辑回归或线性SVM
无监督学习
-
【免积分下载】吴恩达 机器学习笔记PDF版v5.5.pdf
2020-06-22 22:06:09我设置的价格是0,CSDN下载多了会自动提价, 如有需要,请点击:...【免积分下载】吴恩达 机器学习笔记PDF版v5.5.pdf https://blog.csdn.net/ftimes/article/details/106910881 -
吴恩达 - 机器学习课程笔记(持续更新)
2022-02-25 16:46:02一、机器学习 1.1 机器学习定义 计算机程序从经验E中学习,解决某一任务T,进行某一性能P,通过P测定在T上的表现因经验E而提高 eg:跳棋程序 E: 程序自身下的上万盘棋局 T: 下跳棋 P: 与新对手下跳棋时赢的概率 ...一、机器学习
1.1 机器学习定义
计算机程序从经验E中学习,解决某一任务T,进行某一性能P,通过P测定在T上的表现因经验E而提高
eg:跳棋程序
E: 程序自身下的上万盘棋局
T: 下跳棋
P: 与新对手下跳棋时赢的概率1.2 监督学习
1.2.1 监督学习定义
给算法一个数据集,其中包含了正确答案,算法的目的是给出更多的正确答案
1.2.2 例1:预测房价(回归问题)
回归问题目的: 预测连续的数值输出
1. 用直线拟合
2. 用二次函数或二阶多项式拟合(效果更佳)
1.2.3 例2:预测肿瘤是良性或恶性(分类问题)
分类问题目的: 预测离散值输出。
就本问题而言,结果只有0和1的输出。1. 只有一个特征时
2. 有两个特征时
3. 算法最终的目的是解决无穷多个特征的数据集
1.3 无监督学习
1.3.1 无监督学习定义
只给算法一个数据集,但是不给数据集的正确答案,由算法自行分类。
1.3.2 聚类算法
- 谷歌新闻每天收集几十万条新闻,并按主题分好类
- 市场通过对用户进行分类,确定目标用户
- 鸡尾酒算法:两个麦克风分别离两个人不同距离,录制两段录音,将两个人的声音分离开来(只需一行代码就可实现,但实现的过程要花大量的时间)
二、单变量线性回归
2.1 线性函数
假设函数 hθ(x) = θ0 + θ1x
代价函数
J(θ0, θ1) = 1 2 m \frac{1}{2m} 2m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( h(x(i)) − y(i))2(m表示训练样本的数量)
目标: 最小化代价函数,即minimize J(θ0, θ1)
代价函数也被称为平方误差函数或者平方误差代价函数,在线性回归问题中,平方误差函数是最常用的手段
2.1.1 只考虑一个参数 θ1
改变θ1的值,得到多组J(θ0) = 1 2 m \frac{1}{2m} 2m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( h(x(i)) − y(i))2,并作出下右图
得到的minimize J(θ0) 就是线性回归的目标函数
2.1.2 θ0和θ1都考虑
- 得到的三维图如下
- 将三维图平面化
等高线的中心对应最小代价函数
2.2 梯度下降
算法思路
- 指定θ0 和 θ1的初始值
- 不断改变θ0和θ1的值,使J(θ0,θ1)不断减小
- 得到一个最小值或局部最小值时停止
梯度: 函数中某一点(x, y)的梯度代表函数在该点变化最快的方向
(选用不同的点开始可能达到另一个局部最小值)
梯度下降公式- θj = θj − α
∂
∂
θ
j
\frac{∂}{∂θj}
∂θj∂ J(θ0, θ1)
其中 α 为学习速率( learning rate ) - θ0和θ1应同步更新,否则如果先更新θ0,会使得θ1是根据更新后的θ0去更新的,与正确结果不相符
关于α
如果α选择太小,会导致每次移动的步幅都很小,最终需要很多步才能最终收敛
如果α选择太大,会导致每次移动的步幅过大,可能会越过最小值,无法收敛甚至会发发散
实现原理- 偏导表示的是斜率,斜率在最低点左边为负,最低点右边为正。 θj减去一个负数则向右移动,减去一个正数则向左移动
- 在移动过程中,偏导值会不断变小,进而移动的步幅也不断变小,最后不断收敛直到到达最低点
- 在最低点处偏导值为0,不再移动
2.3 线性回归的梯度下降 / Batch梯度下降
- 公式推导:
J(θ0, θ1) = 1 2 m \frac{1}{2m} 2m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( h(x(i)) − y(i))2 = 1 2 m \frac{1}{2m} 2m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i))2
j = 0时表示对θ0求偏导
j = 1时表示对θ1求偏导∂ J ( θ 0 , θ 1 ) ∂ θ 0 \frac{∂J(θ ~0 , θ ~1 )}{∂θ ~0 } ∂θ 0∂J(θ 0,θ 1) = 1 m \frac{1}{m} m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i))
∂ J ( θ 0 , θ 1 ) ∂ θ 1 \frac{∂J(θ ~0 , θ ~1 )}{∂θ ~1 } ∂θ 1∂J(θ 0,θ 1) = 1 m \frac{1}{m} m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i)) x(i)
x(i)的 i 表示第 i 个样本
进而更新得到:
θ0 := θ0 - α 1 m \frac{1}{m} m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i))
θ1 := θ0 - α 1 m \frac{1}{m} m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i)) x(i)
梯度回归的局限性: 可能得到的是局部最优解
线性回归的梯度下降的函数是凸函数,因此没有局部最优解,只有全局最优解
凸函数
三、矩阵
3.1 矩阵加法和标量乘法
同维矩阵对应位置相加。
矩阵对应位置乘标量。
3.2 矩阵乘向量
A12表第一行第二列
A11 * x1 + A12 * x2 + A13 * x3 + …… + A1n * xn = y1
A21 * x1 + A22 * x2 + A23 * x3 + …… + A2n * xn = y23.2 矩阵乘法
An1 * B1b + An2 * B2b + …… + Anm * Bab = Cnb
eg:
A11 * B11 + A12 * B21 + A13 * B31 + …… + A1n * Bn1 = C11
矩阵乘法特征(对于一般矩阵而言)- 不满足交换律
- 满足结合律
3.3 矩阵逆和矩阵转置
单位矩阵
- 用 I 表示
- 主对角线上都是1,其余位置都是0
逆矩阵
-
用A-1 表示
-
A * A-1 = I
矩阵转置
-
用AT表示
-
Anm变为Amn
四、多变量线性回归
4.1 多变量线性回归假设函数
x(i) 表示第 i 组样本
xj(i) 表示第 i 组样本中的第 j 个数据eg:
x4(2)表示第4组样本中的第3个数据,值为40
假设函数
hθ(x) = θ0 + θ1x1 + θ2x2 + …… + θnxn定义x0 = 1 (即θ0的系数,也即x0(i) = 1 )
则
x = [x0, x1, x2, ……, xn]T
θ = [θ0, θ1, θ2,…, θn]T, θ∈Rn+1进而
假设函数可记作:hθ(x) = θTx4.2 多元梯度下降法
∂ J ( θ ) ∂ θ 0 \frac{∂J(θ )}{∂θ ~0 } ∂θ 0∂J(θ) = 1 m \frac{1}{m} m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i))x0(i)
∂ J ( θ ) ∂ θ 1 \frac{∂J(θ)}{∂θ ~1 } ∂θ 1∂J(θ) = 1 m \frac{1}{m} m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i)) x1(i)
∂ J ( θ ) ∂ θ 2 \frac{∂J(θ)}{∂θ ~2 } ∂θ 2∂J(θ) = 1 m \frac{1}{m} m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i)) x2(i)
进而更新得到:
θ0 := θ0 - α 1 m \frac{1}{m} m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i))x0(i)
θ1 := θ0 - α 1 m \frac{1}{m} m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i)) x1(i)
θ2 := θ0 - α 1 m \frac{1}{m} m1 ∑ i = 1 n \displaystyle\sum_{i=1}^{n} i=1∑n ( (θ0 + θ1x(i)) − y(i)) x2(i)
4.3 特征缩放
当特征范围相差太大时,会一直来回振荡,梯度下降效率低
(本例子中θ0不考虑)引入特征缩放解决这一问题
xi = x i − μ σ \frac{x~i~ − μ}{σ} σx i −μ
μ 为平均值,σ 为range(即max - min)
如下述例子
x1 = x 1 − 1000 5 \frac{x~1~ - 1000}{5} 5x 1 −1000x2 = x 2 − 2 5 \frac{x~2~ - 2}{5} 5x 2 −2
其中1000 和 2 是事先知道的平均值
通常计算出来的 x 最好在-3 ~ +3之间
4.4 学习率
绘制代价函数J(θ)的变化来反映下降的过程
’梯度下降更新公式: θj = θj - α ∂ ∂ θ j \frac{∂}{∂θ~j~} ∂θ j ∂J(θ)
形如下左两种情况都是α选取太大导致的。
选取合适的α: … \dots …, 0.001,0.003,0.01,0.03,0.1,0.3,1, … \dots …
以3为倍数找到一个最大值,以该最大值或比该最大值略小的值作为α4.5 特征和多项式回归
房价预测问题
4.5.1 特征
假设有两个特征:x1 是土地宽度,x2 是土地纵向深度,则有hθ(x) = θ0 + θ1x1 + θ2x2
由于房价实际与面积挂钩,所以可假设x = x1 * x2,则有hθ(x) = θ0 + θ1x数据集样本分布如图所示
4.5.2 多项式回归
选用二次模型拟合
曲线后半明显下降,不符合实际
选用三次模型拟合曲线符合实际,但由于次方的出现,要十分注意自变量范围的选取
选用根号模型能充分拟合,且自变量范围可变曲度大
4.6 正规方程
4.6.1推导过程
代价函数:
J(θ) = 1 2 m \frac{1}{2m} 2m1 ∑ i = 1 m \displaystyle\sum_{i=1}^{m} i=1∑m (hθ(x{(i)}) - y(i))2
对J (θ) 求偏导并令导数为零可解得: θ = (XTX)-1XTy
推导过程如下:
令
令
(加一行x0且值都赋为1)
又
∂ ∂ θ \frac{∂}{∂θ} ∂θ∂J(θ) = 1 m \frac{1}{m} m1 ∑ i = 1 m \displaystyle\sum_{i=1}^{m} i=1∑m (hθ(x(i)) - y(i))x(i) = 0
可得
θ = (XTX)-1XTy
4.6.2 正规方程同梯度下降比较
- 是同级算法
- 梯度下降缺点是需确定α,需要许多次迭代;优点是适用于样本量大(m > 10000)的数据
- 正规方程缺点是不适用于样本量大(m > 10000)的数据,但无需确定α,无需许多次迭代
4.6.3 正规方程与不可逆矩阵
矩阵不可逆的情况很小,导致不可逆可能有以下两个原因:
- 两个及两个以上的特征量呈线性关系,如x1 = 3x2
- 特征量过多。当样本量较小时,无法计算出那么多个偏导来求出结果
实际操作过程中,要删除多余特征,且呈线性关系的多个特征保留一个即可
Octave中的pinv即使面对不可逆矩阵,也能计算出结果,得出来的是伪矩阵
五、Octave
5.1 基本操作
5.1.1 加减乘除与逻辑判断
5 + 6 ans = 11 3 - 2 ans = 1 5 * 8 ans = 40 1 / 2 ans = 0.50000 2 ^ 6 ans = 64 1 == 2 //判断 1 是否等于 2 ans = 0 1 ~= 2 ans = 1 1 && 0 //and ans = 0 1 || 0 //or ans = 1 xor(1, 0) //异或 ans = 1 //消除注释 PS1('>> ')
5.1.2 dips()与format
dips(a); disp(spintf('2 decimals: %0.2f', a)) format long format short
5.1.3 矩阵与向量
A = [1 2; 3 4; 5 6]
v = 1:0.1:2 v = 1:6
5.1.4 ones() 、 zeros() 与rands()
ones(2, 3) 2*ones(2, 3)
zeros(1, 3)
rand(1, 3)
5.1.5 hist()
w = -6 + sqrt(10)*(randn(1, 10000)) hist(w)
后续第五节有关Octave,先跳过,后续再补上
六、逻辑回归
6.1 线性回归对于分类问题的局限性
由于离群点的存在,线性回归不适用于分类问题。
如下图(阈值为0.5),由于最右离群点,再用线性回归与实际情况不拟合。
因此,我们引入 逻辑回归(logistic regression) 算法,来解决这个问题。6.2 logistic regression假设陈述
logistic regression的假设函数值总是在0到1之间
logistic regression模型
线性回归中 hθ(x) = θTx
作一下修改,变成下图形式
logistic函数 / sigmoid函数
6.2 决策边界
决策边界不是训练集的属性,而是假设本身及其参数的属性
6.2.1 例1
假设有一个训练集:
用一种方法或者假设,得到参数θ0 = -3,θ1 = 1,θ2 = 1
预测 y = 1 if -3 + x1 + x2 ≥ 0,即x1 + x2 ≥ 3
则有下图,中间的洋红色直线即为 决策边界(x1 + x2 = 3)
6.2.1 例2
其他参数更多更复杂的也同理。
6.3 代价函数(cost function)
6.3.1 cost function的导出
将线性回归的代价函数改写为如下形式(即把1/2提到后面去)
进而定义cost函数为
如果在逻辑回归中用线性回归的代价函数,会导致图像为非凸函数,很难得到最小代价函数
6.3.2 cost function 运用到逻辑回归中
y表示实际,hθ(x)表示预测
1. 当y = 1时
if hθ(x) = 1, cost = 0
if hθ(x) = 0, cost = ∞ (预测与实际完全不一致,要花费很大的代价惩罚算法)
关于图像的导出
2. 当y = 0时
if hθ(x) = 0, cost = 0
if hθ(x) = 1, cost = ∞ (预测与实际完全不一致,要花费很大的代价惩罚算法)
6.4 简化代价函数与梯度下降
将上述式子合并为一个式子
Cost(hθ(x), y) = -y(hθ(x)) - (1 - y)log(1 - hθ(x))
当y = 1时,后一个式子整体为0
当y = 0时,前一个式子整体为0进而我们得到
求最小代价函数
由
得
注意:
- 逻辑回归的代价函数看似与线性回归的代价函数相同,但本质不同。
- 逻辑回归中的hθ(x) = 1 / e-θTx(T是θ的上标)
- 线性回归中的hθ(x) = θTx
6.5 高级优化
本质: 利用一些高级算法,来更快计算出结果。
通常这些算法:
- 能够自主选择α
- 速度大大快于梯度下降
- 比梯度下降更为复杂
Octave中的标号是从1开始的
故theta[1] = θ0,theta[n + 1] = θn
写一个costFunction()函数
该函数需返回- jVal。因此需要一些代码来计算出J(θ)的值
- gradient。gradient(1)对应关计算出关于θ0的代码
6.7 多元分类:一对多
多元分类: 结果有多种可能。
如下例,有三种可能结果。
将它们两两作为一组,得到
即
最后需要输入一个x,选择h最大的类别,也即在三个分类器中选择可信度最高,效果最好的
七、过拟合问题
7.1 过拟合定义
过拟合
当变量过多时,训练出来的假设能很好地拟合训练集,所以代价函数实际上可能非常接近于0,但得到的曲线为了千方百计的拟合数据集,导致它无法泛化到新的样本中,无法预测新样本数据泛化
指一个假设模型应用到新样本的能力例
下左欠拟合,存在高偏差
下中拟合适中
下右过拟合,存在高方差
解决方法-
减少特征数量
人工选择
模型选择算法(后续讲到)缺点:舍弃一部分特征变量也舍弃了关于问题的一些信息
-
正则化
减少特征量级或参数θj的大小
7.2 过拟合代价函数
7.2.1 房价例子引入
以这个例子为例,其代价函数为
再之后再加上两项(1000为任意一个较大的数)
为了minisize代价函数,自然而然地θ3,θ4要等于0,从而去除了这两项,相当原来的式子变为二次函数7.2.2 代价函数
- 其中
+
后的一项为正则化项,
λ
为正则化参数,作用是控制两个不同目标之间的取舍
(1)第一个目标与第一项有关,即我们想要更加拟合数据集。
(2)第二个目标与第二项有关,即我们想要参数θj尽量小 - 惩罚从θ1到θn,不包括θ0(实操中有无θ0影响不大)
- 若 λ 设置的过大,即对θ1θ2θ3θ4的惩罚程度过大,导致θ1θ2θ3θ4都接近于0,最后假设模型只剩一个θ0,出现欠拟合情况
7.3 线性回归的正则化
7.3.1 梯度下降的正则化
由于正则化是从1到n项,故先将θ0提出来
将第二个式子写成下面这样的形式
其中m是样本量,所以一般都是一个很大的值,λ 正则化参数,一般都不大。故 1 - α λ m \frac{λ}{m} mλ一项的值比1略小
每次迭代时,θj都乘这么一个比1略小的数,效果相当于梯度下降7.3.2 正规方程的正则化
7.4 逻辑回归的正则化
首先有这么个例子
其cost函数为
进而得到其偏导
与之前操作类似的,得到 能计算加上正则项的cost函数的偏导 jVal代码,和计算每一个偏导值的gradient(i)代码
八、神经网络
8.1 神经网络的必要性
当特征值只有两个时,我们仍可以用之前学过的算法去解决
但当特征值很多,且含有很多个多次多项式时,用之前的算法就很难解决了例 汽车识别
计算机识别汽车是靠像素点的亮度值
给定数据集汽车和非汽车的数据,按照之前的方法划分
可以看到仅针对50*50像素的灰白图片,就有2500个特征值。当引入rgb时,特征值达到了7500个,如果算上多次多项式,特征值达到了三百万个,显然再继续用之前的算法难以处理这么庞大的数据
8.2 模型展示
8.2.1 神经元的工作方式
神经元由树突接收外界信息,经神经元计算,再由轴突发出信息
神经元之间可互相传递信息类似地,我们定义一个神经网络如下:
- x0,a0为偏置单元,默认值为1
- Layer1是输入层,Layer3是输出层,Layer2的工作过程看不到故为隐藏层
- ai(j)是第 j 层第 i 个神经元的激活值(即由一个具体神经元计算并输出的值)
- θ(j)是权重矩阵,控制从第 j 层到第 j + 1层的映射
进而得到 a(2) 和 hθ(x) 的计算公式
θ是映射,可理解为是中间的连线。
因为是矩阵相乘,x是4行1列向量(记得算上x0),所以θ是4列,又因为a有三个,所以θ是3行,最后得θ是3行4列向量,则θ × x结果为3行1列向量
如果一个网络在第 j 层有 sj 个单元,在第 j + 1 层有 sj +1 个单元,则矩阵θj的维度为 sj+1 * (sj +1 )。如θ(2)是3×4矩阵
8.2.2 前向传播
从输入单元的激活项开始,进行前向传播给隐藏层,计算隐藏层的激活项,继续前向传播,并计算输出层的激活项
- 由之前我们有如下式子
- 其中 x 为 4维向量
- 令 z(2) = θ(1)x,从而z是一个 3维向量
-
进而
-
进而 a(2) = g(z(2))
-
类似的,加上a0(2) = 1,a(2)为 4维向量,进而得到
合在一起比较好理解
更复杂的神经网络
中间的均为隐藏层
一层层往后越来越复杂
8.3 例:神经网络用于计算XOR,XNOR
-
定义两个特征x1,x2,它们的值只能为0或1
-
AND
引入x0,值为1。对权重 / 参数进行赋值,-30、+20、+20
x1 = 0,x2 = 0,hθ(x)结果为0
同理得到另外三组结果
总结果与 x1 AND x2 一致
-
OR
与AND同理
-
(NOT x1)AND(NOT x2)
NOT即结果取反。如果x1输入为1,则输出为0
x1输入0,hθ(x1)输出1;x2输入0,hθ(x2)输出1,再进行AND运算可得最终结果
其他三种情况同理
- XNOR
有AND,(NOT x1)AND (NOT x2), OR三个前提
同样在输入层定义x0,x1,x2
在隐藏层中
进行AND运算得到a1(2),进行(NOT x1)AND (NOT x2)运算得到a2(2)
在输出层中
进行OR运算得到a1(3),即为最终结果每层都是通过计算不断复杂
九、神经网络的运用
9.1 代价函数
定义L
,指网络中共有多少层
定义s~l~
,指每层中有多少个偏差单元
如,s1 = 3,s4 = sL = 4针对01输出问题
-
二元分类
只有一个输出,则sL = 1
K = 1(K表示输出层的单元数目)
输出结果h(x)是一个实数 -
多类别分类
K个输出单元(K ≥ 3,不然没有必要用多类别分类)
输出结果h(x)是一个K维向量
(eg:有不同的交通工具,定义一个结果集yk每个车对应向量第j行的值是1,其他位置都为0,将结果h(x)与yk比较,对应得上则说明是该交通工具)
代价函数
在逻辑回归中,我们有如下代价函数
演化到神经网络中,得到如下代价函数
-
其中
两个连加类似for循环。
这里相当于求k等于从1到4的每一个逻辑回归算法的代价函数,然后按四次输出的顺序,依次把这些代价函数加起来 -
其次
这一项表对所有θji(l)求和
1 到 L - 1是因为映射是两两之间的
注意 j 和 i没有标错,按照之前的定义,j就是θ向量的行,进而 i 就代表列
在计算中,不将θi0这一项也进行计算,乘出来的结果有些类似于偏差单元的值,但实际运用中,影响不大十、应用机器学习的建议
10.1 应用机器学习的建议
到目前为止,我们已经学习了许多不同的学习算法,但可能没有完全理解怎样运用它们,因此总是把时间浪费在毫无意义的尝试上。所以我们接下来将学习一些方法去选择一条最正确的道路。
我们将重点关注的是如果我们在开发一个机器学习系统,或者想试着改进一个机器学习系统的性能,我们要如何决定接下来应该选择哪条道路?
为了解释这一问题,我们仍然使用预测房价的学习例子。假设已经完成了正则化线性回归,也就是最小化代价函数的值,但如果假设函数放到一组新的房屋样本上进行测试,发现在预测房价时产生了巨大的误差,我们要如何改进这个算法?
第一种办法是使用更多的训练样本。但有时候获得更多的训练数据实际上并没有作用。
第二种方法是尝试选用更少的特征集。如果你有很多特征,我们可以从这些特征中仔细挑选一小部分来防止过拟合。
第三种方式是尝试选用更多的特征,也许目前的特征集,对我们来讲并不是很有帮助。所以我们也许可以从获取更多特征的角度来收集更多的数据,也可以把这个问题扩展为一个很大的项目。
第四种方式是可以尝试增加多项式特征,比如X1的平方,X2的平方,X1和下的乘积等等。
第五种方式是可以考虑其他方法去减小或增大正则化参数的值。以上这些方法都需要很长的时间,但有一系列简单的方法能让我们事半功倍,排除掉这些方法中的至少一半,从而节省大量不必要花费的时间。这些方法被叫做 “机器学习诊断法” 。
“诊断法” 的意思是:这是一种测试法,你通过执行这种测试,能够深入了解某种算法到底是否有用。这也能告诉我们,要想改进一种算法的效果,去做什么样的尝试才是有意义的。但同时这些诊断法的执行和实现,也需要花费时间,有时候确实需要花很多时间来理解和实现,不过这样做是把时间用在了刀刃上,可以为我们在开发学习算法时节省几个月的时间。
10.2 评估一个假设
在之前的学习中我们尝试选择参量来使训练误差最小化,但得到一个非常小的训练误差并不一定是一件好事,它推广到新的训练集上并不一定适用。那么我们该如何判断一个假设函数是否过拟合呢?
对于简单的例子,我们可以对假设函数进行画图,然后观察图形的趋势,但对于像右边这样特征变量不止一个的情况,就很难画图去观察了。所以需要另一种方法来评估(假设函数是否过拟合)。
这里展示十组训练样本,我们将数据分成两部分,第一部分(通常为70%)作为我们的训练集,第二部分(通常为30%)作为我们的测试集。
用Mtest表示测试样本的总数,(x(1)test, y(1)test)就表示第一组测试样本。
要注意的是,在分成两组数据集之前,应该先将数据随机排列再进行分组。
对于线性回归,假设函数J(θ)由70%的训练集得到。
之后要计算出测试误差,用Jtest来表示。把从训练集中学习得到的参数 θ 放在Jtest中来计算测试误差,这个是测试集平方误差的平均值(样本量为Mtest)。
对于逻辑回归,同样我们也要从训练集中学习得到参数θ,再放到Jtest中去。这个目标函数和之前的一样,唯一的区别是这里使用的是Mtest个样本。还有另一种测试度量可能更便于理解,叫做错误分类,也叫作0/1分类错误。
可以定义一次预测的误差,是关于假设函数和标签y的误差:
(1)误差等于1的情况是,当假设函数h(x)的值大于等于0.5且y的值等于0时;假设函数的值小于0.5,且y的值等于1时;这两种情况都表示假设对样本进行了误判。
(2)其他情况则误差等于0,表示假设能对样本进行正确分类。然后我们就能用应用错误分类误差(Test error),来定义测试误差,也就是错误分类误差求平均值。
10.3 模型选择和交叉验证集
如果我们想要确定对于一个数据集最合适的多项式次数,怎样选用正确的特征来构造学习算法;或者如果我们要选择学习算法中的正则化参数LAMBDA,要怎么做?这类问题叫做模型选择问题。
我们之前提到过拟合问题,用左边这些参数来拟合训练集,就算假设函数在训练集上表现得很好,也不意味着该假设对新样本也有好的泛化能力。所以训练集误差不能用来表示假设对新样本的拟合好坏。而如果参数对某个数据集拟合的很好,那么用同一数据集计算得到的误差,比如训练误差并不能很好地估计出实际的泛化误差(即对该数据集的泛化能力)。
假设我们要在10个不同次数的二项式模型之间进行选择,用参数d
来表示多项式的次数。d=1……d=10。
(1)选择各个模型,分别得到各个参数,为做区别,在参数上加上上标。
(2)用这些参数分别计算得到各个测试集误差。
(3)为从这些模型找到最好一个,应该看哪个模型的测试集误差最小。
(4)假设这里最终选择了五次多项式模型,现在要知道这个模型的泛化能力,可以观察这个模型对测试集的拟合程度,但由于我们拟合了一个参数d,并且选择了一个最好地拟合测试集的参数d的值,因此我们的参数向量θ(5)在测试集上的性能很可能是对泛化误差过于乐观的估计。意思就是说是用测试集拟合得到的参数d,再在测试集上评估假设,所以假设可能对测试集的表现要好过那些其他那些新的测试集中没有的样本。为解决模型选择出现的问题,通常会使用以下的方法来评估一个假设:
给定一个数据集,分为三部分,用60%的数据作为训练集,用 20%的数据作为交叉验证集(CV,也叫验证集),用20%的数据作为测试集。
用Mcv来表示验证集的样本总数,同样用(x(i) ,y(i) )来表示第i个验证样本
用三个样本分别计算测试误差
(1)同样我们用训练集来计算最小代价函数得到各个参数,但这次用验证集来测试。
(2)用计算出的Jcv来观察这些假设模型在交叉验证集上的效果如何。
(3)选择Jcv最小的假设,这里假设选择四次多项式对应的交叉验证误差最小,进而得到d=4
(4)之后就可以用测试集来衡量模型的泛化误差了。10.4 诊断偏差和方差
当我们运行一个学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差比较大,要么是方差比较大。换句话说,出现的情况要么是欠拟合,要么是过拟合问题。高偏差和高方差的问题基本上来说是欠拟合和过拟合的问题。能判断出现的情况是这两种情况中的哪一种,是一个很有效的指示器,指引着可以改进算法的最有效的方法和途径。
通过之前的学习我们知道,上图左边是欠拟合,右边是过拟合,而中间是刚好拟合,其泛化误差也是最小的。
上图的图像,横坐标d代表多项式的次数,左边值为1的时候对应一次函数,右边值为4的时候对应更高的多项式次数。
粉色线Jtrain(θ)代表训练误差,由于次数越高越拟合,所以训练误差是趋于下降的。
红色线Jcv(θ)代表测试误差,d=1时欠拟合,测试误差较高,d=4时过拟合,测试误差较高,而d=2时刚好拟合,测试误差较低。
由上面的分析我们可以知道,
d=1时欠拟合,呈现高偏差,此时训练误差和测试误差都很大,且两者接近;
d=4时过拟合,呈现高方差,此时训练误差很大,测试误差很小,测试误差远大于训练误差。