1 ML:简介
1.1 什么是机器学习?
现有两种机器学习的定义。
一、亚瑟·塞缪尔(Arthur Samuel)将其描述为:“使计算机无需进行明确编程即可习得的研究领域。” 这是一个较旧的非正式定义。
二、汤姆·米切尔(Tom Mitchell)提出了一个更现代的定义:“如果某计算机程序在任务T(Task)上的性能P(Performance)随着经验E(Experience)的增加而提高,那么可以说计算机程序可以从经验E中学习一些任务T和性能指标P。 ”
例如:玩跳棋。
E :玩过许多跳棋游戏的经验。
T :扮演跳棋的任务。
P :程序赢得下一场比赛的概率。
通常,可以将任一机器学习问题分配给以下两种广泛的分类之一:
监督学习、无监督学习。
1.1.1 监督学习
在监督学习中,我们得到一个数据集,并且已知正确的输出应该是什么样的,以及认为输入与输出有关联。
监督学习问题分为“回归”和“分类”问题。在回归问题中,我们试图预测连续输出中的结果,这意味着我们试图将输入变量映射到某个连续函数。在分类问题中,我们尝试预测离散输出中的结果,这意味着我们正在尝试将输入变量映射为离散类别。
范例1:
给定有关房地产市场上房屋大小的数据,请尝试预测其价格。价格作为规模的函数是一个连续的输出,因此这是一个回归问题。
我们可以通过输出“房屋是否以高于或低于预测价格出售”,从而将这个例子变成分类问题,根据价格将房屋分为两类。
范例2:
(a)回归——给定男性/女性的照片,根据给定的照片预测他/她的年龄。
(b)分类——给定一张男性/女性的照片,预测他/她的年龄是属于高中、大学还是研究生。分类的另一个示例——银行必须根据某人的信用记录来决定是否向某人提供贷款。
1.1.2 无监督学习
另一方面,无监督学习使我们几乎或根本不了解输出结果应该是什么样子。我们可以从数据中获得结构,而不必知道变量的影响。
我们可以通过基于数据中变量之间的关系对数据进行聚类来推导此结构。
在无监督学习的情况下,没有基于预测结果的反馈,即无法纠正。
范例:
聚类——收集有关《美国经济》的1000篇文章,并找到一种方法,将这些文章自动归类,这些变量在某种程度上因不同的变量而相似或相关,例如词频、句子长度、页数。
非集群——“鸡尾酒会算法”,可以在混乱的数据中找到结构。例如,在鸡尾酒会上从声音网格中识别单个声音和音乐。
维基百科:鸡尾酒会算法
Octave实现鸡尾酒会算法代码_(SVD)奇异值分解
matlab实现鸡尾酒会算法代码
下面链接是Quora的相关回答,可以增进你的理解。
Quora问答:监督学习算法和无监督学习算法的区别
知乎:机器学习算法之有监督学习和无监督学习的区别
CSDN:监督学习和无监督学习区别
2 ML:单变量线性回归
2.1 模型表示
回想一下在回归问题中,我们使用输入变量,并试图将输出拟合到连续的预期结果函数中。
具有一个变量的线性回归也称为“单变量线性回归”。
当要根据单个输入值x预测单个输出值y时,使用单变量线性回归。我们在这里使用监督学习,意味着我们已经对输入/输出因果关系有一个了解。
2.2 假设函数
我们的假设函数具有以下一般形式:
y ^ = h θ ( x ) = θ 0 + θ 1 x \hat{y}=h_{\theta}(x)=\theta_{0}+\theta_{1} x y^=hθ(x)=θ0+θ1x
请注意,这是一条直线方程形式。我们通过
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1赋予的
h
θ
(
x
)
h_{\theta}(x)
hθ(x)的值,得到我们的预测输出
y
^
\hat{y}
y^。换句话说,我们正在尝试创建一个名为
h
θ
(
x
)
h_{\theta}(x)
hθ(x)的函数,将我们的输入数据(x)映射到我们的输出数据(y)。
例:
假设我们具有以下训练数据集:
输入x | 输出y |
---|---|
0 | 4 |
1 | 7 |
2 | 7 |
3 | 8 |
现在我们可以随意猜测一下 h θ h_{\theta} hθ函数: θ 0 = 2 \theta_0=2 θ0=2 和 θ 1 = 2 \theta_1=2 θ1=2 。假设函数变为 h θ ( x ) = 2 + 2 x h_{\theta}(x)=2+2 x hθ(x)=2+2x 。
因此,若假设函数的输入x为1,y则为4。注意,我们尝试各种 θ 0 \theta_{0} θ0和 θ 1 \theta_{1} θ1的值,试图通过映射在xy平面上的数据点找到最佳“拟合”或最具代表性的“直线”的值。
3 代价函数
我们可以使用代价函数来衡量假设函数的准确性。把假设函数的所有结果取平均值(实际上是平均值的简化版),将输入x得到 h θ ( x ) h_{\theta}(x) hθ(x)的与实际输出y进行比较。
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( y ^ i − y i ) 2 = 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(\hat{y}_{i}-y_{i}\right)^{2}=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x_{i}\right)-y_{i}\right)^{2} J(θ0,θ1)=2m1∑i=1m(y^i−yi)2=2m1∑i=1m(hθ(xi)−yi)2
将上式分解等价为 1 2 x ˉ \frac{1}{2} \bar{x} 21xˉ,其中 x ˉ \bar{x} xˉ 是 h θ ( x i ) − y i h_{\theta}\left(x_{i}\right)-y_{i} hθ(xi)−yi 的平方的均值 , h θ ( x i ) − y i h_{\theta}\left(x_{i}\right)-y_{i} hθ(xi)−yi 是预测值与实际值之差。
此函数 x ˉ \bar{x} xˉ 也被称为“平方误差函数”或“均方误差”。均值减半( 1 2 m \frac{1}{2 m} 2m1)为了方便计算梯度下降,因为平方函数求导后的导数项将抵消 1 2 \frac{1}{2} 21。
现在,我们可以根据已知的正确输出y具体衡量我们的预测函数
h
θ
(
x
)
h_{\theta}(x)
hθ(x)的准确性,以便预测不在现有数据集中的输入x的输出结果。
从可视化角度看,训练数据集散布在x-y平面上。我们尝试使直线(由 h θ ( x ) h_{\theta}(x) hθ(x)定义)穿过这些分散的数据集。我们的目标是取得最优拟合线,即使散点与该线的平均垂直距离最小的线。在理想的最优情况下,该线应穿过训练数据集的所有点,即 J ( θ 0 , θ 1 ) J\left(\theta_{0}, \theta_{1}\right) J(θ0,θ1)为0。
4 ML:梯度下降
因此,我们有了假设功能,并且有一种方法来衡量它与数据的拟合程度。现在我们需要估计假设函数中的参数,也就是梯度下降。
想象一下,我们根据假设参数 θ 0 \theta_{0} θ0和 θ 1 \theta_{1} θ1的范围绘制假设函数图像(实际上,我们将代价函数绘制为参数估计值的函数)。这可能会造成混淆;我们正在向更高的抽象水平发展。我们不是在绘制x和y本身,而是绘制假设函数的参数范围以及选择特定参数集所产生的代价。
我们把 θ 0 \theta_{0} θ0对应x轴上, θ 1 \theta_{1} θ1对应y轴,代价函数对应垂直的z轴。图上的点是使用假设函数和特定的theta参数的代价函数的所得结果。
当代价函数位于图中凹坑的最底部时,即当其值最小时,梯度下降就成功了。
方法是采用代价函数的导数(函数的切线)。切线的斜率是该点的导数,它将为我们提供一个方向。我们沿下降最陡的方向降低代价函数,每一步的大小由参数α(即学习效率)决定。
梯度下降算法为:
重复直到收敛:
θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) \theta_{j}:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J\left(\theta_{0}, \theta_{1}\right) θj:=θj−α∂θj∂J(θ0,θ1)
j = 0,1代表特征索引号。
直观地,这可以认为是:
重复直到收敛:
θ
j
:
=
θ
j
−
α
\theta_{j}:=\theta_{j}-α
θj:=θj−α[切线aka导数在j维上的斜率][切线aka导数在j维上的斜率]
4.1 线性回归的梯度下降
当专门用于线性回归时,可以得出新形式的梯度下降方程。我们可以用实际的代价函数和实际的假设函数代替,然后将等式修改为(公式的推导超出了本课程的范围,但可以在此处找到一个非常好的方法):
重复直到收敛:{
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
θ
1
:
=
θ
1
−
α
1
m
∑
i
=
1
m
(
(
h
θ
(
x
i
)
−
y
i
)
x
i
)
\begin{aligned} \theta_{0} &:=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x_{i}\right)-y_{i}\right) \\ \theta_{1} &:=\theta_{1}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(\left(h_{\theta}\left(x_{i}\right)-y_{i}\right) x_{i}\right) \end{aligned}
θ0θ1:=θ0−αm1i=1∑m(hθ(xi)−yi):=θ1−αm1i=1∑m((hθ(xi)−yi)xi)
}
其中m是训练集的大小, θ 0 \theta_{0} θ0 是随着 θ 1 \theta_{1} θ1和 x i x_ {i} xi变化的常数, y i y_ {i} yi是给定训练集(数据)的值。
请注意,我们将
θ
j
\theta_{j}
θj分成两个单独的方程式
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1 ; 由于导数,对
θ
1
\theta_{1}
θ1末尾乘以
x
i
x_ {i}
xi。
所有这些的要点是,如果我们从对假设的猜测开始,然后重复应用这些梯度下降方程,则我们的假设将变得越来越准确。
4.2 线性回归的梯度下降:直观的示例
有人可能会发现以下视频[Alexander Ihler:线性回归的梯度下降]有用,因为它可以直观显示假设随着误差函数的减少而改善的情况。