定义:一个年代近一点的定义,由 Tom Mitchell 提出,来自卡内基梅隆大学,Tom 定义的机器学习是,一个好的学习问题定义如下,他说,一个程序被认为能从经验 E 中学习,解决任务 T,达到性能度量值P,当且仅当,有了经验 E 后,经过 P 评判,程序在处理 T 时的性能有所提升。经验e 就是程序上万次的自我练习的经验而任务 t 就是下棋。性能度量值 p 呢,就是它在与一些新的对手比赛时,赢得比赛的概率。
目前存在几主要的两种类型被我们称之为监督学习和无监督学习个想法是指我们将教计算机如何去完成任务而在无监督学习中,我们打算让它自己进行。
eg:可以看出,监督学习指的就是我们给学习算法一个数据集。这个数据集由“正确答案”:可以看出,监督学习指的就是我们给学习算法一个数据集。这个数据集由“正确答案”组成。在房价的例子中,我们给了一系列房子的数据,我们给定数据集中每个样本的正确价格,即它们实际的售价然后运用学习算法,算出更多的正确答案。比如你朋友那个新房子的价格。用术语来讲,这叫做回归问题。
其基本思想是,我们数据集中的每个样本都有相应的“正确答案”。再根据这些样本作出预测,就像房子和肿瘤的例子中做的那样。
我们还介绍了回归问题,即通过回归来推出一个连续的输出,之后我们介绍了分类问题,其目标是推出一组离散的结果。
在无监督学习中,我们已知的数据。看上去有点不一样,不同于监督学习的数据的样子,即无监督学习中没有任何的标签或者是有相同的标签或者就是没标签。所以我们已知数据集,却不知如何处理,也未告知每个数据点是什么。别的都不知道,就是一个数据集。你能从数据中找到某种结构吗?针对数据集,无监督学习就能判断出数据有两个不同的聚集簇。
无监督学习算法可能会把这些数据分成两个不同的簇。所以叫做聚类算法
所以这个就是无监督学习,因为我们没有提前告知算法一些信息,比如,这是第一类的人,那些是第二类的人,还有第三类,等等。我们只是说,是的,这是有一堆数据。我不知道数据里面有什么。我不知道谁是什么类型。我甚至不知道人们有哪些不同的类型,这些类型又是什么。但你能自动地找到数据中的结构吗?就是说你要自动地聚类那些个体到各个类,我没法提前知道哪些是哪些。因为我们没有给算法正确答案来回应数据集中的数据,所以这就是无监督学习。
我将在整个课程中用小写的 m 来表示训练样本的数目。
以之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示:
我们将要用来描述这个回归问题的标记如下:
m 代表训练集中实例的数量
x 代表特征/输入变量
y 代表目标变量/输出变量
(x,y) 代表训练集中的实例
(x(i),y(i) ) 代表第 i 个观察实例
h 代表学习算法的解决方案或函数也称为假设(hypothesis)
这就是一个监督学习算法的工作方式,我们可以看到这里有我们的训练集里房屋价格
我们把它喂给我们的学习算法,学习算法的工作了,然后输出一个函数,通常表示为小写 h表示。h 代表 hypothesis(假设) ,h 表示一个函数,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此 h 根据输入的 x 值来得出 y 值,y 值对应房子的价格 因此,h 是一个从x 到 y 的函数映射。我将选择最初的使用规则 h 代表 hypothesis,因而,要解决房价预测问题,我们实际上是要将训练集“喂”给我们的学习算法,进而学习得到一个假设 h,然后将我们要预测的房屋的尺寸作为输入变量输入给 h,预测出该房屋的交易价格作为输出变量输出为结果。那么,对于我们的房价预测问题,我们该如何表达 h?
一种可能的表达方式为:
我们将定义代价函数的概念,这有助于我们弄清楚如何把最有可能的直线与我们的数据相拟合
在线性回归中我们有一个像这样的训练集,m 代表了训练样本的数量,比如 m = 47。
而我们的假设函数,也就是用来进行预测的函数,是这样的线性函数形式:
我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数
即使得代价函数
梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数
梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1,…,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到
一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定
我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
批量梯度下降(batch gradient descent)算法的公式为:
梯度下降算法如下:
梯度下降是很常用的算法,它不仅被用在线性回归上和线性回归模型、平方误差代价函数。梯度下降算法和线性回归算法比较如下:
这里使用的算法,有时也称为批量梯度下降。实际上,在机器学习中,通常不太会给算法起名字,但这个名字”批量梯度下降”,指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有 m 个训练样本求和。因此,批量梯度下降法这个名字说明了我们需要考虑所有这一”批”训练样本,而事实上,有时也有其他类型的梯度下降法,不是这种”批量”型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。但就目前而言,应用刚刚学到的算法,应该已经掌握了批量梯度算法,并且能把它应用到线性回归中了,这就是用于线性回归的梯度下降法。
首先定义:
此时模型中的参数是一个 n+1 维的向量,任何一个训练实例也都是 n+1 维的向量,特征矩阵
X的维度是m*(n+1)。令:
与单变量线性回归类似,在多变量线性回归中,我们也构建一个代价函数,则这个代价函数是所有建模误差的平方和,即: