机器学习

机器学习2

当变量增加时

n 特征(变量)的数量
{x^{(i)}} 第i个训练样本的输入特征值, 是一个n维向量

\rm{x^{(i)}_j}

新的假设形式

h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4

为了方便, 定义x_0=1

\rm{x^{(i)}_0}=0

x=
\begin{bmatrix}
x_0\\
x_1\\
x_2\\
\vdots\\
x_n
\end{bmatrix}
\text{ }\theta=
\begin{bmatrix}
x_0\\
x_1\\
x_2\\
\vdots\\
x_n
\end{bmatrix}

用θ的转置乘x
得:

\theta^Tx=
\begin{bmatrix}
\theta_0 & \theta_1 & \dots & \theta_n
\end{bmatrix}
\begin{bmatrix}
x_0\\
x_1\\
\vdots\\
x_n
\end{bmatrix}
h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\dots\theta_nx_n

多元线性回归的梯度下降算法

代价函数变为:

J(\theta)= {1\over2m}\sum_{i=1}^{m}(h_\theta(x^i)-y^i)^2\\
\text{其中θ是一个n维向量}

梯度下降算法:

\theta_j:=\theta_j-\alpha{\partial\over\partial\theta_j}J(\theta_0,\dots,\theta_n) \text{ (j=0,…n)}

得:

\theta_j:=\theta_j-\alpha {1\over m}\sum_{i=1}^m(h_\theta(x^i)-y^i)x_j^i

特征缩放

将特征值除以区间宽度

如果特征值的取值范围差距很大比如一个是0-2000一个是1-5, 这样等值图就会形成一个修长的椭圆形:

如果在这个图上运行梯度下降算法, 可能会使路径反复震荡, 才会最终到达全局最小值点.

这时候可以用到特征缩放(scale the features):

令: x_1 = {size \over 2000} , x_2={number_of_bedroom \over 5}

等值图会变得比较圆一些:

这样梯度下降算法会更快的找到局部最低点.

执行特征缩放时, 通常会使每个特征值都在-1\leq x_i \leq 1这个范围内. 当然不需要强求, 在范围附近, 区间宽度相似也可以.

均值归一化

x_i-\mu_i来代替x_i. 让特征值具有为0的平均值(不需要应用到x_0中, x_0 = 1)

如:
x_1 = {size-1000 \over2000}
x_2 = {bedroom – 2 \over 5}
形式可以归纳为:
x_i = {x_i – \mu_i \over s_i}\
\mu_1是训练集中特征} x_1的平均值
s_i是特征值的最大值减去最小值}, 通常也用标准差来作为s_i
特征缩放不需要特别精确, 只是将梯度下降运行得更快而已.

留言

您的电子邮箱地址不会被公开。 必填项已用*标注