2020机器学习线性模型(1)

作者: zidea | 来源:发表于2020-01-18 20:41 被阅读0次
    machine_learning.jpg

    线性模型

    今天我们来讨论一下线性模型,之前已经了解到线性模型来做回归问题,所谓回归问题就是根据给定样本数据训练出一个线性模型,然后用这个线性模型来估计新样本的值。通常模型都是下面样子
    h_{\theta} = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n

    监督学习中样本通常都是这个样,是一个 n 维特征的向量和 y 是样本的标签。在回归问题中 y 是具体数值而在分类问题中 y 是表示样本所属的类别。

    准备数据

    D = \{ (x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\dots, (x^{(n)},y^{(n)}) \} x^{(i)} \in \mathbb{R}^n

    定义模型

    我们要求就是\theta 线性方程的参数,通常表示
    \theta = \{ \theta_0, \theta_1, \dots, \theta_n \}^T
    这里\theta_0 表示偏置。

    目标函数

    通过计算样本点到线性模型(直线或超平面)距离来评估我们模型对数据拟合程度,较少每一个点到线距离是我们的目标,我们目标就是让目标函数(也叫损失函数)取值最小,这里用\hat{y} - y 的作为点到线距离,大家可能会有疑问点到直线距离不是从点引一条直线的垂线,其实他们是等价的问题,并不是求距离的问题而是减少距离的优化问题。

    一旦我们确定 \theta 确定,无论点到直线距离是点通过引用垂线来作为距离,还是用于估计 y 减去真实值 y 都是等同。

    之前我们都是通过梯度下降方式来
    \theta_j = \theta_j + \alpha \frac{\partial L}{\partial \theta_j}
    通过通过不断迭代来优化参数 \theta 来找到最优解。这是之间我们做回归问题的一般步骤。

    这是之前通过回归我们已经了解到了线性模型,今天我们来系统学习线性模型。

    最小二乘法

    在线性问题中,我们找到一条直线来拟合样本,通过一条直线来拟合数据,然后计算点到直线距离来评估

    D = \{ (x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\dots, (x^{(n)},y^{(n)}) \} x^{(i)} \in \mathbb{R}^n

    h_{\theta} = \theta_0 x_0 + \theta_1 \theta1 + \dots + \theta_n x_n

    将我们问题用线性方程组来表示

    \begin{aligned} \theta_0 x_0 + \theta_1 x_1^{(1)} + \theta_2 x_2^{(1)} + \cdots + \theta_n x_n^{(1)} = y_n^{(1)} \\ \theta_0 x_0 + \theta_1 x_1^{(2)} + \theta_2 x_2^{(2)} + \cdots + \theta_n x_n^{(2)} = y_n^{(2)} \\ \vdots \\ \theta_0 x_0 + \theta_1 x_1^{(N)} + \theta_2 x_2^{(N)} + \cdots + \theta_n x_n^{(N)} = y_n^{(N)} \\ \end{aligned}
    现在尝试用用矩阵形式来表示这个线性方程组,矩阵 A 表示我们样本,每一行表示一个样本,这里有 N 个样本,小写 n 表示每一个样本的特征数量。
    A = \begin{bmatrix} 1 & x_1^{(1)} & x_2^{(1)} & \dots & x_n^{(1)} \\ 1 & x_1^{(2)} & x_2^{(2)} & \dots & x_n^{(2)} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & x_1^{(N)} & x_1^{(N)} & \dots & x_n^{(N)} \\ \end{bmatrix}
    在 A矩阵中第一列是作为 \theta_0(截距)准备的样本的一个特征。
    这里 \theta 是 (n+1) * 1 的参数矩阵,那么表示标签 y 是 N * 1 的向量
    A_{N \times (n+1)} \theta_{(n+1) \times 1} = y_{N \times 1}
    \sum_{i=1}^N (h_{\theta}(x^{(i)}) - y^{(i)})^2
    有了矩阵表示形式,我们就可以用矩阵形式来表示我们损失函数

    S = \min ||A \theta - Y||^2
    这里我们对矩阵进行求模,然后进行化简,详细推导过程如下。
    \begin{aligned} = (A\theta - Y)^T(A\theta - Y) \\ = (\theta^TA^T - Y^T)(A\theta - Y) \\ = \theta^TA^TA\theta - \theta^TA^TY - Y^TA\theta +Y^TY\\ = \theta^TA^TA\theta - 2\theta^TA^TY +Y^TY \end{aligned}
    这里\theta^TA^TYY^TA\theta 是标量,那么我么看为什么他们是标量\theta^T1 \times (n+1) 的向量而A是(n+1) \times N 乘积结果就是1 \times N 向量乘以 N \times 1 所以 \theta^TA^TY 是一个标量。

    \frac{\partial S}{\partial \theta} = 0

    \frac{\partial S}{\partial \theta} = \frac{\partial( \theta^TA^TA\theta - 2 \theta^TA^TY + Y^TY)}{\partial \theta}

    有关矩阵求导大家已经了解到有以下公式
    \frac{\partial X^T}{\partial X} = 1
    然后我们可以开始对矩阵求\theta的偏导,化简得到下面公式
    \frac{\partial S}{\partial \theta} = \frac{\partial (\theta^TA^TA\theta) }{\partial \theta} - 2A^TY

    这一部分\frac{\partial (\theta^TA^TA\theta) }{\partial \theta} 是求导的难点,接下来我们重点就是攻克这部分求导。

    有关矩阵求导我们先介绍一个公式
    \frac{d(u^Tv)}{d(x)} = \frac{du^T}{dx} v + \frac{dv^T}{dx} u
    这里 u v 是关 x 的函数,我们在线性代数已经学习过有关矩阵求导,上面就是对矩阵进行求导中一个公式,在接下来对到中我们会用这个公式,如果大家还不了解可以回去看看线性代数。

    \frac{d(X^TX)}{dx} = \frac{dX^T}{dx} X + \frac{dX^T}{dx} X = 2X
    进一步来看我们引入方阵 B 注意这里是方阵然后我们 BX 看成一个整体来解决下面问题。
    \frac{d(X^TBX)}{dx} = \frac{dX^T}{dx} BX + \frac{dX^TB^T}{dx} X = (B + B^T)X
    我们知道A^TA 是一个方阵,这样我们问题就好解决了。我们通过上面推导等式
    \frac{\partial \theta^TA^TA\theta}{\partial \theta} = (A^TA + AA^T)\theta = 2 A^TA\theta

    wechat.jpeg

    相关文章

      网友评论

        本文标题:2020机器学习线性模型(1)

        本文链接:https://www.haomeiwen.com/subject/ejklzctx.html