开篇:一枚热爱机器学习的菜鸟程序员,通过学习吴恩达教授的机器学习课程,总结归纳一些重要知识点及自己的感悟。文中有错误或不足之处,希望大家批评指正!内容较浅显,适合和我一样的萌新…
常见名词
在机器学习过程中会遇到很多数学公式、字母、英文单词等,记住一些常见名词还是很有必要滴,这样在后续的学习过程中,能帮助我们快速理解一些公式的含义。
话不多说,直接上图,图中是一个”俄勒冈州的波特兰“(地区)房价与房屋大小关系的例子。其中涉及5个参数,分别为
m
m
m、
x
x
x、
y
y
y、
x
(
i
)
x^{(i)}
x(i)、
y
(
i
)
y^{(i)}
y(i),只是普遍表示形式,并不是所有的都以此为准。
m
m
m:表示训练样本数量。比如现在已知有47对房屋大小与对应房价,那么此时样本数量
m
m
m就等于47;
x
x
x:表示自变量。也就是图中所示的输入特征房屋大小;
y
y
y:表示因变量。也就是图中所示的输出特征房屋价格,它随着
x
x
x(房屋大小)的改变而改变;
x
(
i
)
x^{(i)}
x(i):表示训练样本中第
i
i
i个自变量对应的值。如图
x
(
1
)
x^{(1)}
x(1)=2104;
y
(
i
)
y^{(i)}
y(i):表示训练样本中第
i
i
i个因变量对应的值。如图
y
(
1
)
y^{(1)}
y(1)=460。
好了,大概了解一下就进入今天的主题:最基础的监督学习模型之一线性回归模型。
监督学习
为什么说线性回归是监督学习中最基础的模型之一呢?当然是因为它简单了,就和数学中的函数一样,一次函数最基础也最好学。如果连这个都搞不懂的话,emmm,那指定是没好好学!
监督学习:我的理解就是借鉴之前已有的经验去完成某件事。重点就是需要有已有的经验,也就是说需要有训练样本。我们依照经验分析完成这件事并得到结果的过程,其实就是监督学习所要做的事情。
正规点的解释“监督学习”:利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,称为监督训练,该过程中有指导者。对于给出的数据集中的每个样本有相应的“正确答案”。
监督学习主要有两种:分类(classification)和回归(regression)。
现在再来理解一下我给出的解释,分析一下样本、输入、输出分别是什么呢?
样本:已有的经验,比如有三个朋友在同一城市分别买了80平(100w)、90平(110w)、110平(160w)的房子;
输入:这件事,比如这件事就是我想了解该城市100平房子的价格;
输出:完成这件事的结果,通过朋友买房的经验,我推测该城市100平房子为140w。
[注]:此处的栗子只是监督学习中的一种,属于监督学习中的回归问题。
线性回归
线性回归:吴恩达教授在授课中解释“回归”指的是可以预测出一个具体的数值输出,那么如何预测出具体输出呢?就是依据输入和输出之间呈现的线性关系。
以房屋大小与价格为例, 如上图所示,图中横坐标
x
x
x为房屋大小,
y
y
y为对应尺寸的价格,图中红色×为已知的数据集(图1);此时,我们想知道数据集中从未出现过的房屋大小(100平)的价格是多少该怎么办呢?其实我们只需要根据已有的数据集,大致推断出一个模型就可以了(图2中的绿色线);根据这个模型我们可以大致推断出100平房屋的价格是100w(图3所示)。
总结一下也就是下边这张图,我们输入训练集给学习算法,学习算法会输出一个假设函数
h
h
h(hypothesis),它的作用就是我们输入一个房屋大小,
h
h
h函数会输出对应价格。图2中的绿色线其实就代表
h
h
h函数,也就是单变量线性回归函数。表示为:
h
y
p
o
t
h
e
s
i
s
:
h
θ
(
x
)
=
θ
0
+
θ
1
x
等
价
于
:
h
(
x
)
=
θ
0
+
θ
1
x
\begin{array}{l} hypothesis:h_{\theta(x)}=\theta_{0}+\theta_{1} x \\ 等价于:h_{(x)}=\theta_{0}+\theta_{1} x \end{array}
hypothesis:hθ(x)=θ0+θ1x等价于:h(x)=θ0+θ1x是不是很眼熟,没错,其实就和一次函数
y
=
k
x
+
b
y=kx+b
y=kx+b一样。
代价函数
前边我们已经了解线性回归函数:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_{\theta(x)}=\theta_{0}+\theta_{1} x
hθ(x)=θ0+θ1x,它其实和一次函数
y
=
k
x
+
b
y=kx+b
y=kx+b一样,众所周知k表示斜率,b表示截距。在我看来线性回归函数中
θ
1
\theta_{1}
θ1和
θ
0
\theta_{0}
θ0与k和b是一一对应的,只不过在机器学习中
θ
1
\theta_{1}
θ1和
θ
0
\theta_{0}
θ0被称为模型参数。
那么我们该如何选择合适的参数,让我们的模型更加准确呢?换句话说,当
θ
1
\theta_{1}
θ1和
θ
0
\theta_{0}
θ0分别等于多少时,
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_{\theta(x)}=\theta_{0}+\theta_{1} x
hθ(x)=θ0+θ1x函数预测的结果更加准确。我们所期望的当然是预测的结果和实际结果差距越小越好,在函数中差距是如何体现的呢?差距就是实际值与预测值之间的距离。
所以在线性回归中我们要解决的是一个最小化问题,即让我们的模型预测的结果与实际对应结果误差最小。
在数据集(样本)中,第
i
i
i个样本的实际值表示为
y
(
i
)
y^{(i)}
y(i),根据
h
h
h函数预测的第
i
i
i个样本的值表示为
h
θ
(
x
(
i
)
)
h_{\theta(x^{(i)})}
hθ(x(i)),它们的差值表示为
h
θ
(
x
(
i
)
)
−
y
(
i
)
h_{\theta(x^{(i)})} - y^{(i)}
hθ(x(i))−y(i),当然差值有正有负,但是我们只关系距离不关心正负,因此添加平方,即
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
(h_{\theta(x^{(i)})} - y^{(i)})^{2}
(hθ(x(i))−y(i))2。因为我们有
m
m
m个样本,所以我们应该保证
m
m
m个样本最终得到的误差和最小,即:
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
,
∑
i
=
1
m
表
示
取
i
从
1
到
m
的
结
果
之
和
。
\sum_{i=1}^{m}\left(h_{\theta}(x^{(i)})-y^{(i)}\right)^{2},\sum_{i=1}^{m}表示取i从1到m的结果之和。
i=1∑m(hθ(x(i))−y(i))2,i=1∑m表示取i从1到m的结果之和。
最后再把误差和平均到
m
m
m个样本,即:
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}(x^{(i)})-y^{(i)}\right)^{2}
m1i=1∑m(hθ(x(i))−y(i))2
最终表示为:
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}(x^{(i)})-y^{(i)}\right)^{2}
2m1i=1∑m(hθ(x(i))−y(i))2
除以2的原因不是很懂,都是这么写的…好像是和求导有关,有明白的大佬指导一下。(在第3节公式推导中可以看出来。)
该函数其实就是代价函数,当代价函数越小时,模型越准确。
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J_{\left(\theta_{0}, \theta_{1}\right)}=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}(x^{(i)})-y^{(i)}\right)^{2}
J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2