一、概述
机器学习大致会被划分为两类:监督学习,无监督学习
1.1 监督学习
监督学习其实就是,给计算机一些输入x和正确的输出y(训练数据集),让他总结x->y的映射关系,从而给他其他的输入x,他能预测出较为准确的y。
接下来举一些监督学习的简单示例:
1.1.1 回归算法
给你训练数据集(x,y),拟合出一条直线或者曲线,能够完美的反应x和y的关系,从而给你其他的数据x,能够通过拟合线计算出y。
1.1.2 分类算法
通过某些特征,将数据进行分类。
1.2 无监督学习
给你一些数据,算法会自动帮你划分数据。(与分类算法的区别:分类算法中,已经对数据x打上标签y,对这些标签进行分类。但是无监督学习,数据没有标签,算法自动对他进行划分,即只有输入x,没有输出y)
1.2.1 聚类算法
获取没有标签的数据,并尝试自动将他们分组到集群中。
1.2.2 降维算法
二、单变量线性回归模型
给出训练集(x,y),拟合出一条直线f(x)=wx+b,能够将测试集xi带入,计算出yi。
2.1 代价函数
w,b被称为模型参数,我们需要定义代价函数,来说明w,b拟合效果的好坏。
假设m表示训练集的大小,y-hat表示计算值,y表示真实值
成本函数:J(w,b)=1/2m(i=1.....m)(y-hati-yi)^2,(用计算值-真实值的平方 的平均值来估计w,b拟合效果的好坏)这里不是除以m而是2m,是为了方便后续的计算,不再除以2也是可以的。他也被称为平方误差成本函数。
在机器学习中,会有不同定义的成本函数,平方误差成本函数是其中之一,且效果好。
我们需要根据成本函数、训练数据,来计算出可以使cost最小化的模型参数w和b。
将w,b,J画成三维图,发现是一个碗的形状。我们将碗用J的等值面切割,会得到等高线图,他表示不同的(w,b)会有相同的J。越靠近等高线图的中心,J会越小。
我们需要一个高效的算法,帮助计算最优模型参数。梯度下降法是个好方法。
2.2 梯度下降法
梯度下降法适用于求任何函数的最小值。步骤如下:
- 确定想要最小化的函数J(w,b)
- 设置w,b的初始值(一般初始化为w=0,b=0)
- 每次改变w,b,使J一直变小
- 直到J稳定或接近最小值
梯度下降法的简单理解:如图所示,当站在最高处,环绕360°,选择一个方向,可以使我迈出一小步,却能更快接近谷底,这个方向就是梯度下降最快的方向。到达下一个点后,继续环绕360°,选择一个最快接近谷底的方向。。。。如此反复,就能到达谷底。
当选择不同的初始值,使用梯度下降法可能会到达不同的谷底,这被称为局部最小值。
2.2.1 梯度下降法的实现
执行第三步骤时:给w赋值成这里的
表示学习率。学习率通常是0-1之间的小正数,他的作用是控制下坡的步幅。
同理需要更新b值。值得注意的是,更新的步骤要合理,如下图所示,左边是正确的,右边是错误的,这是因为,更新b时需要计算J对b的偏导数,此时需要用到w的原始值。