1.绪论
1.1 机器学习的定义:
-
Arthur Samuel: " Field of study that gives computers the ability to learn without being explicitly programmed."
-
Tom Mitchell: " A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P. improves with experiience E."
(译:计算机程序从经验E中学习,解决某一任务T,进行某一性能度量P,通过P测定在T上的表现因经验E而提高。)
1.2 监督学习:
利用一组带标签的数据, 学习从输入到输出的映射, 然后将这种映射关系应用到未知数据, 达到分类或者回归的目的。
Regression Problem(回归问题):设法预测取值连续的数值输出(房价预测)
Classification Problem (分类问题) :设法预测取值离散的数值输出 (肿瘤良性/恶性预测)
1.3 无监督学习:
利用无标签的数据学习数据的分布或数据与数据之间的关系被称为无监督学习。
无监督学习最常应用的场景是聚类(clustering)和降维(Dimension Reduction)
有监督学习和无监督学习的最大区别在于数据是否有标签
2.单变量线性回归
2.1模型描述
专用的术语以及假设函数h:
假设函数( Hypothesis function)表示从输入到输出的映射,通常写作
h
θ
(
x
)
h_\theta(x)
hθ(x)或简写为
h
(
x
)
h(x)
h(x)
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta(x)=\theta_0+\theta_1x
hθ(x)=θ0+θ1x
其中,
θ
0
\theta_0
θ0、
θ
1
\theta_1
θ1:模型参数(parameters of the model), 选取不同的模型参数会导致不同的假设函数。
2.2代价函数(cost function)
常用:平方误差代价函数。
例如:在根据房子大小预测房子售价的问题中,令平方误差代价函数为
J
(
θ
0
,
θ
1
)
J(\theta_0,\theta_1)
J(θ0,θ1).
则由上述得:
- Hypothesis function: h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+\theta_1x hθ(x)=θ0+θ1x
- Parameters: θ 0 、 θ 1 \theta_0 、\theta_1 θ0、θ1
- Cost function: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2
- Goal:
min J ( θ 0 , θ 1 ) = min 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \min J(\theta_0,\theta_1)=\min \frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 minJ(θ0,θ1)=min2m1i=1∑m(hθ(x(i))−y(i))2
找出使得代价函数最小的 θ 0 、 θ 1 \theta_0、\theta_1 θ0、θ1,即目标函数最小时对应的 θ 0 、 θ 1 \theta_0、\theta_1 θ0、θ1,则找到了拟合训练集的假设函数 h θ ( x ) h_\theta(x) hθ(x)。
若 θ 0 = 0 \theta_0=0 θ0=0,即假设函数简化为 h θ ( x ) = θ 1 x h_\theta(x)=\theta_1x hθ(x)=θ1x。
则根据不同的
θ
1
\theta_1
θ1的值,可以绘制出相对应的
h
θ
(
x
)
h_\theta(x)
hθ(x)函数曲线,根据图中函数曲线与训练集(含输入x,实际输出y)的差值,可以得出此时的
J
(
θ
1
)
J(\theta_1)
J(θ1)的值。取不同的
θ
1
\theta_1
θ1,绘制出
J
(
θ
1
)
J(\theta_1)
J(θ1)的函数曲线(碗状)。——凸函数
若
θ
0
≠
0
\theta_0\neq0
θ0̸=0,
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta(x)=\theta_0+\theta_1x
hθ(x)=θ0+θ1x
或投影成等高线图的形式:
若融入更多的参数时,会得到更加高维的代价函数曲线,甚至无法绘制、无法可视化,此时再手动读取代价函数最小参数,不可取。
——>梯度下降算法可以解决这些问题
2.3 梯度下降算法(Gradient decent)
α
\alpha
α 是学习速率,可控制算法以多大的幅度更新参数。换句话而言,就是以多大的步幅沿最陡下降路移动。
如果
α
\alpha
α过小,梯度下降算法可能会收敛得很慢。
如果
α
\alpha
α过大,可能导致不断地震荡以至于无法收敛甚至发散,离局部地最优点越来越远。
J
(
θ
)
J(\theta)
J(θ)随着迭代次数的增加,反而越来越大。例如:
当到达局部最优点时,导数部分为0。
利用梯度下降算法可求得局部最优解
2.4 线性回归算法——第一个机器学习算法
Batch Gradient Descent算法
(Batch:each step of gradient descent uses all the training examples)
思想:将梯度下降算法应用到最小化平方差代价函数
平方代价函数是凸函数,不存在局部最优解,只有一个全局最优。
3.线性代数的知识
4.配置Matlab
5.多变量线性回归
5.1 多元梯度下降算法
相比较单变量线性回归,多变量线性回归有以下特征:
(1)表示特征数目的变量:n,每个特征用
x
j
x_j
xj表示,j=1,2…n ;
(2)训练集的样本中每一对输入和输出分别是一个n维向量,第i个输入样本表示为
x
(
i
)
x^{(i)}
x(i),输出为
y
(
i
)
y^{(i)}
y(i);
(3)
x
j
(
i
)
{\rm{x}}_j^{(i)}
xj(i) 表示:第i个训练样本的第j个特征量的值。
(4)假设函数:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
…
+
θ
n
x
n
{h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2} + \ldots + {\theta _n}{x_n}
hθ(x)=θ0+θ1x1+θ2x2+…+θnxn。可以看作是
x
0
=
1
x_0=1
x0=1的两个n+1维向量的内积。
x
=
[
x
0
,
x
1
…
x
n
]
T
x = {\left[ {{x_0},{x_{\rm{1}}} \ldots {x_{\rm{n}}}} \right]^T}
x=[x0,x1…xn]T
θ
=
[
θ
0
,
θ
1
…
θ
n
]
T
\theta = {\left[ {{\theta _0},{\theta _{\rm{1}}} \ldots {\theta _{\rm{n}}}} \right]^T}
θ=[θ0,θ1…θn]T
h
θ
(
x
)
=
θ
T
x
{h_\theta }(x) = {\theta ^T}x
hθ(x)=θTx
(5)代价函数:
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
(6)梯度下降算法应用到多变量线性回归问题中的改变:(多元梯度下降算法)
5.2特征缩放
当模型的某些特征值
x
j
x_j
xj过大,而其他的过小时,通常会造成代价函数的等值线图过于椭圆(拥挤),使得梯度下降的过程变得更加缓慢,反复来回振荡,才能找到一条通往全局最小的路。
此时要对这些特征值进行适当处理,使其值相近,即特征缩放。通常采用的方法是归一化处理。
5.3学习率
在单变量线性回归算法中,曾经提到,
α
\alpha
α过大过小都不好。在多变量里同理。
因此,选取一个合适的学习率
α
\alpha
α很重要。
可以尝试不同的
α
\alpha
α值,观察代价函数
J
(
θ
)
J(\theta)
J(θ)随迭代次数变化的曲线。(正常情况下,应该是单调递减曲线)
5.4正规方程
正规方程通常在特征不多的情况下使用,特征过多时最好使用梯度下降。
举例:
样本数为4,特征数为4。
如前所述:
假设函数:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
…
+
θ
n
x
n
{h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2} + \ldots + {\theta _n}{x_n}
hθ(x)=θ0+θ1x1+θ2x2+…+θnxn。可以看作是
x
0
=
1
x_0=1
x0=1的两个n+1维向量的内积。
x
=
[
x
0
,
x
1
…
x
n
]
T
x = {\left[ {{x_0},{x_{\rm{1}}} \ldots {x_{\rm{n}}}} \right]^T}
x=[x0,x1…xn]T
θ
=
[
θ
0
,
θ
1
…
θ
n
]
T
\theta = {\left[ {{\theta _0},{\theta _{\rm{1}}} \ldots {\theta _{\rm{n}}}} \right]^T}
θ=[θ0,θ1…θn]T
h
θ
(
x
)
=
θ
T
x
{h_\theta }(x) = {\theta ^T}x
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
增加一个特征:即
x
0
=
1
x_0=1
x0=1
则必然有:
其中,第i个样本
x
(
i
)
=
[
x
0
(
i
)
x
1
(
i
)
x
2
(
i
)
…
x
n
(
i
)
]
T
∈
R
n
+
1
{{x}^{(i)}}={{\left[ \begin{matrix} x_{0}^{(i)} & x_{1}^{(i)} & x_{2}^{(i)} & \ldots & x_{n}^{(i)} \\ \end{matrix} \right]}^{T}}\in {{R}^{n+1}}
x(i)=[x0(i)x1(i)x2(i)…xn(i)]T∈Rn+1
即:
X
=
[
1
2104
5
1
45
1
1416
3
2
40
1
1534
3
2
30
1
852
2
1
36
]
X=\left[ \begin{matrix} 1 & 2104 & 5 & 1 & 45 \\ 1 & 1416 & 3 & 2 & 40 \\ 1 & 1534 & 3 & 2 & 30 \\ 1 & 852 & 2 & 1 & 36 \\ \end{matrix} \right]
X=⎣⎢⎢⎡11112104141615348525332122145403036⎦⎥⎥⎤
y = [ 460 232 315 178 ] y=\left[ \begin{matrix} 460 \\ 232 \\ 315 \\ 178 \\ \end{matrix} \right] y=⎣⎢⎢⎡460232315178⎦⎥⎥⎤
θ = [ θ 0 , θ 1 … θ n ] T \theta = {\left[ {{\theta _0},{\theta _{\rm{1}}} \ldots {\theta _{\rm{n}}}} \right]^T} θ=[θ0,θ1…θn]T
因此, X θ = y X\theta =y Xθ=y,又写作: θ = ( X T X ) − 1 X T y \theta ={{({{X}^{T}}X)}^{-1}}{{X}^{T}}y θ=(XTX)−1XTy
P.S:若
X
T
X
X^{T}X
XTX不可逆,即奇异矩阵,这种情况很少发生。
如果发生:可能是包含了多余的特征(有类似的,导致矩阵某几行成正比)或者特征过多(m<=n),此时应该删除一些特征或考虑正规化的方法。