文章目录
1.1 多维特征
在之前的线性模型中,我们只通过房子的面积来预测房子的价格,但实际上房子房间数目,房子年龄等都会对房价产生影响,因此算法的输入特征有多个,如下图:
x(i):即第i个训练样本实例,是一个包含第i个训练实例所有特征的向量
xj:下标j是指某个训练实例的第j个特征,xj是具体的值
多元线性回归模型
多元线性回归模型(multiple linear regression)即具有n个特征的线性回归模型
1.2 - 1.3 向量化
向量化计算f
利用Python提供的Numpy库进行向量计算更加有效
numpy.dot() 对于两个一维的数组,计算的是这两个数组对应下标元素的乘积和(数学上称之为向量点积);
对于二维数组,计算的是两个数组的矩阵乘积;
对于多维数组,它的通用计算公式如下,即结果数组中的每个元素都是:数组a的最后一维上的所有元素与数组b的倒数第二位上的所有元素的乘积和: dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])。
##非向量化与向量化的底层逻辑
非向量化计算时计算机按顺序计算所有的值
向量化计算时计算机硬件并行对乘积进行计算,效率高
1.5 用于多元线性回归的梯度下降法
向量化后的算法参数、线性回归算法、代价函数、梯度下降算法如下:
多元线性回归的梯度下降
此时需要找到n个w与一个b使得代价函数**J(wj,b)**取得最小值
2.1 - 2.2 特征缩放
引入
由于特征1(x1)和特征2(x2)的数量级不同,则较小的w1 稍微变动一下就会影响结果,而较大的w2 变动很大才会影响结果,这就会导致梯度下降会来回横跳,不利于找到最小的J,如下所示:
解决上述问题的办法就是将不同的特征进行缩放至统一,即归一化处理
归一化处理
最大归一化
公式如下所示:
x’= x x m a x {x \over x~max~ } x max x
代入上述实例,则对特征1进行“缩”操作,对特征2进行“放”操作,如下所示:
均值归一化
均值归一化(Mean normalization)公式如下所示:
代入上述实例,则对特征1进行“缩”操作,对特征2进行“放”操作,如下所示:
Z-score标准化
Z-score标准化(Z-Score Normalization ),公式如下:
代入上述实例,则对特征1进行“缩”操作,对特征2进行“放”操作,如下所示:
2.3 判断梯度下降是否收敛
要判断梯度下降是否收敛则可以根据以上代价函数-迭代次数图像是否趋于平稳或者每次迭代中代价函数下降的值是否小于一个 ε {\varepsilon} ε
, ε {\varepsilon} ε是一个很小的值
2.4 如何设置学习率
如果出现图中上部分情况,有两种情况:代码有误或学习率过大,学习率过大导致梯度下降过程中的代价函数值会来回横跳,代码错误也会影响代价函数值。
推荐的学习率设置步骤
首先设置一个较小的学习率,可以根据下图中的学习率进行设置
2.5 特征工程
特征工程(Feature Engineering)是将原始数据转化成更好的表达问题本质的特征的过程,使得将这些特征运用到预测模型中能提高对不可见数据的模型预测精度 。
在预测房子价格的过程中,比起将房子长度和宽度及面积都作为影响房价的特征来说,仅使用房子的面积能更好的拟合模型,这就是特征工程。
2.6 多项式回归
**多项式回归(polynomail regression)**可以用来拟合曲线、非线性函数等。
例如,上图中为了拟合我们的数据,我们可以尝试加入x的2次,3次,甚至1/2次,这些其实就是多项式回归