zoukankan      html  css  js  c++  java
  • 2. Linear Model

    1. 基本形式

    给定由$d$个属性描述的示例 $ extbf{x} =(x_1;x_2;...,x_n)$,其中$x_i$是$x$在第$i$个属性上的取值,线性模型(linear model)试图学习一个通过属性的线性组合来进行预测的函数,即

              $f( extbf{x}) = heta_0+ heta_1x_1+ heta_2x_2 +...+ heta_nx_n$         (1)

    这里为了计算方便,我们添加$x_0=0$, 则向量形式则为

              $f( extbf{x}) = Theta^T extbf{x} $                    (2)

    其中$Theta = ( heta_0; heta_1; heta_2;...; heta_n)$. $Theta$学得之后,模型就可以确定。

    2. 线性回归(linear regression)

    我们将要用来描述回归问题的标记如下:
    $m$ 代表训练集中实例的数量
    $n$ 代表属性特征数量
    $x$ 代表特征/输入变量
    $y$ 代表目标变量/输出变量
    $x^{(i)},y^{(i)}$  代表第 $i$ 个实例

    线性回归试图学得

              $f( extbf{x}) = Theta^T extbf{x}$, 使得 $f( extbf{x}) ≈y$

    均方误差是回归任务中常用的性能度量:
              $(Theta^*) = argunderset{Theta}{min}sum_{i=1}^{m}[f(x^{(i)}) - y^{(i)}]^2$ 

    求解$Theta$有以下两种方法。

    梯度下降法:(需要选择学习率$alpha$,需要多次迭代,适用各种类型)

    代价函数:$J(Theta) = frac{1}{2m}sum_{i=1}^{m}[f(x^{(i)}) - y^{(i)}]^2   +  frac{lambda}{2m}sum_{j=1}^{n} heta_j^2$ (后面是正则化项,防止过拟合)

    梯度下降法:$ heta_j := heta_j - alphafrac{partial}{partial{ heta_j}}J( heta)$

        repeat until convergence{

            $ heta_j := heta_j - alphafrac{1}{m}[(f(x^{(i)}) - y^{(i)})x_j^{(i)}] - alphafrac{lambda}{m} heta_j$

        }

    正规方程求解:(适用于特征数较少,$ extbf{x}^T extbf{x}$必须可逆,只适用线性模型)

     $Theta = ( extbf{x}^T extbf{x})^{-1} extbf{x}^Ty$

    3. 逻辑回归(logistic regression)

    逻辑回归即二分类问题,其输出标记$yin[0,1]$.

    这里我们使用简单的 Sigmoid 函数将连续输出映射为0/1输出:

              $f( extbf{x}) = frac{1}{1+e^{ extbf{-}Theta^T extbf{x}}}$

    类似于线性回归梯度下降法求解方式一样:

    代价函数:$J(Theta) = -frac{1}{m}[y^{(i)}log f(x^{(i)})+(1-y^{(i)})log (1-f(x^{(i)})] + frac{lambda}{2m}sum_{j=1}^{n} heta_j^2$ (后面是正则化项)

    梯度下降法:$ heta_j := heta_j - alphafrac{partial}{partial{ heta_j}}J( heta)$

        repeat until convergence{

            $ heta_j := heta_j - alphafrac{1}{m}[(f(x^{(i)}) - y^{(i)})x_j^{(i)}] - alphafrac{lambda}{m} heta_j$

        }

    4. 多分类学习(multiclass classification)

    一种解决这种问题的途径是采用一对多(One-vs-All)方法。在一对多方法中,我们将多分类问题转化成二元分类问题。为了实现这样的转变,我们将多个类中的一个类标记为正向类(y=1),其他所有类标记为负向类,这个模型记作$f^{(1)}( extbf{x})$。接着,类似地我们选择第二个类作为正向类(y=2),再将其他类标记为负向类,将这个模型记作$f^{(2)}( extbf{x})$,以此类推。最后,我们需要预测时,将所有分类器都运行一遍,然后对每个输入变量,选择最高的可能性的输出变量。

    5. 特征缩放(feature scaling)

    在我们面对多特征问题时,我们要保证这些特征都具有相似的尺度,这将帮助梯度下降算法更快的收敛。

    解决的方法是尝试将所有的特征的尺度都尽量缩放到-1到1之间。最简单的方法是令:

              $x_n = frac{x_n-mu_n}{s_n}$

    其中$mu_n$是平均值,$s_n$是标准差(或用max-min代替也行)。

    这里为了计算方便,我们添加$ heta_0$, 则有:

  • 相关阅读:
    redis 持久化
    Linux 配置 FastDFS
    查询相关
    外键查询
    pycharm 使用git
    比较时间
    文件导入import
    切分,字符串转列表
    时间相关
    django 自带序列化组件效果
  • 原文地址:https://www.cnblogs.com/xuanyuyt/p/6389139.html
Copyright © 2011-2022 走看看