学习网站,上面有习题
监督学习
监督学习的定义:给算法一个数据集,其中包含正确分数,并用此来预测新的数据集的分数。
监督学习分为:
- 回归问题(regression):设法预测连续值的输出。
- 分类问题(classification):设法预测一个离散值的输出。
在实际应用中,我们希望可以处理无穷多的特征(features),特征量过多也可能会导致内存溢出,在支持向量机(SVM)算法中提供一种数学方法来处理无穷多的特征。
第一个学习算法:线性回归
首先定义一些常用的符号:
m:表示训练集的数量
x:表示输入的特征变量
y:表示输出变量
(x,y):表示一个训练样本
:表示第i个训练样本。
监督算法的工作方式
向学习算法提供训练集——>学习算法输出一个假设函数(h)——>假设函数根据新的训练集的输入,预测输出。
问题是怎样表示这个假设函数:
这个线性函数是学习的基础,以后会用更复杂的非线性函数。以此为基础拟合线性函数,及以后用非线性函数拟合更复杂的模型。
上式中有两个参数值θ0和θ1,选择不同的参数会有不同的假设函数。我们要做的是根据给定的数据集,得出θ0和θ1和两个参数,使得假设函数更好的拟合数据集,问题是如何得出参数θ0和θ1使得假设函数很好的拟合模型。
在线性回归中,我们要解决的是一个最小化问题:(关于θ0和θ1的最小化过程,即找到θ0和θ1使得下面这个表达式的值最小)
这将是线性回归的整体目标函数。这个函数就是代价函数(cost function):
即最小化代价函数(优化目标),代价函数也叫平方误差代价函数。平方误差代价函数是解决回归问题的最常用手段。当然还有其他代价函数。
代价函数
上图中将代价函数简化为只含θ1的函数,训练集选用的是((1,1),(2,2),(3,3)),那么当θ1选取不同的值时,对应着不同的假设函数,就对应着不同的代价函数,可以画出上图中的曲线。
我们的优化目标就是通过选择θ1的值,获得最小的J(θ1)。所以可以通过最小化J(θ1),来选择最好的拟合函数。
梯度下降
可将代价函数最小化的算法:梯度下降算法(GD)。
梯度下降算法的思路:给定θ0和θ1的初始值,不停的一点点改变θ0和θ1,来使代价函数变小,直到找到代价函数的最小值或局部最小值。
也就是反复做上面这一步,直至收敛。上式中的α是学习率(learning rate),用来控制梯度下降的步长。注意要做到同步更新。
要做的是将梯度下降算法来应用到最小化平方代价函数,由于这里我们只用了两个参数,所以梯度下降算法即为重复以下过程:
上面这种梯度下降算法优势被称为Batch梯度下降(BGD),每一次梯度下降,我们都遍历了整个训练集样本。还有其他梯度下降算法。
多个特征值的数据集
引入新的变量:n表示特征数量。
:表示第i个样本的第j个特征。
我们引入新的假设函数(假设有n个特征量):
为了简化假设函数,添加一个特征量x0,且x0=1,这样我们每个样本的特征量具有n+1个,下表从0开始。将所有的特征值和参数用向量表示:
所以假设函数可以用以下公式来表示:
这时我们的代价函数和梯度下降算法(多元线性回归梯度下降算法)分别表示如下:
特征缩放
同一样本的不同特征值之间比例相差过大(比如第一个特征值的范围是0~ 5,第二个特征值的范围是0~1000)会导致梯度下降算法的时间过长。可以使用特征缩放的方法使各个特征值的范围变得相近,这样梯度下降算法的时间会缩短很多。一般来说,我们特征缩放的目的是将特征值取值约束到-1到1之间。
- 均值归一化:使某一特征量的平均值为0,如某一特征量的取值范围是0 ~2000,它的均值是1000,那么可用下面的式子代替原来的特征量(1.公式中的2000代表特征值范围的最大值减去最小值,2.也可把分母设置为标准差):
学习率α(learning rate)
通过(迭代次数——J(θ))曲线可以观察出当前选取的学习率是否合适,如果选取足够小的学习率,代价函数通常会不断的减小,如果代价函数的之越来越大,就该尝试一个较小的学习率。当然学习率如果过小,将会导致代价函数收敛速度过慢。
多项式回归
对于一些数据集,线性回归可能已经满足不了需求,可以考虑用多项式来拟合函数(注意x是同一个特征量):
如果像这样选择特征,那么特征缩放就显得更为重要了,因为某个数的幂次方通常是一个很大的数字了。
在实际应用中,特征可能有多种选择,一些算法可以自动的选择要使用什么样的特征,让算法观察数据集,并自动的选择该选用一个二次函数、三次函数还是别的函数。
分类问题
logistic回归算法(logistic regression):一种分类算法,该算法的预测值始终介于0和1之间。
首先介绍sigmoid function,或称logistic function:
这时假设函数h(x)为:
有了假设函数,同样地,要调整参数θ来拟合数据集。
决策边界(decision boundary):这个概念帮助我们理解假设函数在计算什么。
决策边界是假设函数的一个属性,并不是数据集的属性。
同样,使用高阶多项式可以的到更加复杂的决策边界。
代价函数
通过优化代价函数来拟合logistic回归模型的参数θ。
把平方误差项写成以下形式:
那么代价函数就为如下形式: