机器学习(三)线性归回模型多变量

在(二)中我们讲到了单变量的线性回归模型,但是在现实生活中会有很多对结果产生影响的因素,所以我们引入了多变量的模型。

同样的我们有M个样本,$x_i$表示第$i$个特性,$x_i^{(j)}$表示第$j$个样本的第$j$个特性。

假设函数$h_{\theta}=\theta_0+\theta_1x_1+\theta_2x_2$

我们假设$x_0=1$, $\theta^{T}=(\theta_1, \theta_2, \cdots)$,$X^{T}=(x_1,x_2, \cdots)$。

那么$h_{\theta}=\theta^{T}X$。

所以$J(\theta_1, \theta_2, \cdots)=\frac{1}{2m}\sum_{i=0}^m(h_\theta(x^(i))-y^(i))^2$.

然后求偏导$\frac{\partial J}{\partial\theta_j}=\frac{1}{m}\sum_{i=0}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}$。

 

在使用梯度下降法的时候有一些小技巧

1)特征放缩:尽量让所有特征的值在一个相近的范围里,这样可以让算法执行的更快。例如$-1\leq x\geq 1$。如果它是一个正值,我们应该让它变成$0\leq x\geq 1$。

2) 均值归一化:用$x_i-\mu_i$来代替$x_i$,让特征值接近0。

而我们通常是用如下的等式$x_i=\frac{x_i-\mu_i}{s_i}$。

$\mu_i$是平均值,$s_i$是最大值减去最小值或者说标准差。

3)学习速率: 对于$\alpha$的选取,不宜过大或者过小,通常我们画出$J(\theta)$与迭代次数的图像来大致确定我们的$\alpha$。我们可以通过选取多个$\alph$,例如:0.001, 0.01, 0.1, 1这么一组来确定它。

或者我们去设定迭代之后$J(\theta)$变化的阈值来控制循环。

 

选取特征:

在选取特征的时候,可以做一些处理,例如:我现在有特征a,特征b,我可以设定一个新的特征c=a*b来代替它们。

 

假设的函数形式:

不仅限于$h_{\theta}(x)=\theta_0+\theta_1x$,还可以是$h_{\theta}(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3\cdots$。

所以在这个时候我们就更应该注意特征值的范围缩放。

 

除了梯度下降法,我们还可以用正规方程(解析法)去解出我们的参数。

 

$\theta=(X^{T}X)^{-1}X^{T}y$

其中,$\theta是参数的一个列向量,$

posted @ 2016-10-21 22:41  老王945  阅读(162)  评论(0)    收藏  举报