zoukankan      html  css  js  c++  java
  • 机器学习导论(一) 基本概念

    上海交通大学张志华老师的公开课《机器学习导论》,课程链接:
    http://ocw.sjtu.edu.cn/G2S/OCW/cn/CourseDetails.htm?Id=397
    ok,直奔主题,做好笔记。

    (一) 基本概念 

     
    data mining 和 machine learning本质是一码事儿,ml更贴近数学。(在我眼里ml更底层,data mining、computer vision、nlp 都是用到了它)
     
    machine learning定义(Mike Jodan)
    A field that bridge computations and statistics, with ties to information theory, signal processing, algorithms, control theory and optimization theory.
     
    ML可以用这样一个公式表示: 
    ML=Matrix + Statistics + Optimization + Algorithm 
     

    1.definition

     
    data $X=[x_1 ,...,x_n]^T_{(n imes p)}$是一个$n imes p$的矩阵,它包含n个 sample。
    sample $x_i=(x_{1i},...,x_{pi})$是一个p维向量,包含p个特征(features)。
    对于每个sample,可以给予一个 label $y_i$。
    例如,人是sample,身高体重是feature,性别是label。往往,我们要预测sample的label,也即
    input sample-> output label
     
    分类问题:label的取值为有限个,如果label有两个(一般为0/1或者-1/+1),则是二分类问题,否则是多分类问题。
    回归问题:label的取值是无限的,例如$yin mathbb{R}$.
     
    监督学习:先给定一些sample( training samples)以及它们的label,然后预测新给的sample。分类、回归都属于监督学习。
     
     

    2.linear model

    [ y=x^T a]
    线性模型即通过feature的线性组合来预测label,换言之,认为每个feature都有权重,对feature加权求和来预测y。
     
    要确定weight $a$, 最直接的就是通过统计中的最小二乘来估计,即最小化
    egin{align*}     L=&frac{1}{2}sum_{i=1}^n(y_i-x_i^Ta)^2 \     =&frac{1}{2}|y-Xa|_2^2     end{align*}
    通过求导来求,
    [frac{partial L}{partial a}=X^T(y-Xa)=0]
    如果$X^TX$可逆,我们可以解得
    [   a=(X^TX)^{-1}X^Ty    .   ]
    当$n>p$时$,X^TX$一般都是可逆的。但有时feature很多,sample没那么多,这时不可逆,就没有唯一解了(underdetermined)。
     
    这时可以给$L$(即loss function)加一个penalty $lambda p(a)$,其中$lambda>0$。常常我们令$p(a)=a^Ta$,这个问题就变成了ridge regression(脊回归):
    [ L(a)+lambda p(a)= frac{1}{2}|y-Xa|_2^2+frac{1}{2}lambda a^Ta    ]
    求导得:
    [frac{partial L}{partial a}=X^T(y-Xa)-lambda a=0]
    这时由于$X^TX+lambda I_p$是正定矩阵必然可逆,我们有
    [   a=(X^TX+lambda I_p)^{-1}X^Ty    .   ]
     
    那么$lambda $这个数的值我们该怎么给呢?为此,我们需要把数据划分为三类:Training data(训练数据),Validation data(验证数据) and Test data(测试数据)。训练数据是用来学$a$的,测试数据是用来调$lambda$,测试数据就是要预测的数据(或者验证最终结果的)。
     
    此外,$p(a)=|a|_1=sum_{i=1}^p|a_i|$也比较常见,这时变为Lasso问题,即
    [  frac{1}{2}|y-Xa|_2^2+frac{1}{2}lambda |a|_1 ]
    用1范数作为penalty有这样一个特点,它会令$a$的一些项为0,这样就能起到自动选feature的功能。
     

    二范数与一范数:

    ${a||a|_2^2leq 1}$球形,连续可导;

    ${a||a|_1leq 1}$菱形,连续但不可导;->稀疏性

     elastic net: $lambda_2 |a|_2^2 +lambda_1|a|_1$

     

    3.极大似然估计(MLE)-Logistic

     
    注意到,在刚才的讨论中,利用线性模型我们得到的$y$是连续的,那么怎么用于分类问题呢?例如二分类问题$yin{0,1}$,一种最简单的方法是给定一个$alpha$,如果$y<alpha$,则$y=0$,否则$y=1(0<alpha<1)$。
     
    为了有更严谨的数学依据,可以假设y服从一个伯努利分布,${y_i} i.i.d. ~Ber(alpha)$,由伯努利分布,Loss function为:
    [ L= prod_{i=1}^n p(y_i)= prod_{i=1}^n alpha^{y_i}(1-alpha)^{(1-y_i)} ]
    我们需要考虑怎么把$L$和数据$X$联系起来,以及怎么定$alpha$。
    egin{align*} f=&-ln L \=&-sum_{i=1}^n [y_ilnalpha+(1-y_i)ln(1-alpha)] end{align*} 
    令$$alpha=frac{1}{1+exp(-x^Ta)},$$
    $f$就变成了关于$a$的函数,这个问题也就变成了一个优化问题。
    此外,一样可以加penalty(惩罚项)或者说是regularization(正则化)。
     
     

    4.无监督和半监督

     
    之前说到p很大的情况,除了加正则项外还可以降维,也就是通过某种变换,由$xin{mathbb{R}^p}$到$zinmathbb{R}^q(p<min{p,q})$化为新的特征表示。降维可分为两种方法:
    第一种是通过线性变换,即$ z=Bx,Binmathbb{R}^{q imes p} $, 如PCA。
    第二种是非线性的$z=f(x)$。
     
    非监督学习:只考虑sample。
    除了降维,另一种典型的非监督是聚类问题,只有samples没有label,它通过feature把samples分为几类。 没有测试数据、训练数据之分。
     
     半监督学习:少量的sample有label,大量的sample没有label。-> transfer learning
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    jquery基本用法
    js里BOM和DOM操作
    js基础语法
    java将json格式的字符串转化为对象数组
    Java生成Excel并导入数据
    mybatis的xml中使用foreach循环拼接(sql中的 in 语法)
    FreeMarker在List中取任意一条数据的某一个值
    freemarker中的常用语法
    Java将日期转化为大写格式(阿拉伯大写数字)
    项目中出现The import javax.servlet cannot be resolved 的解决方法
  • 原文地址:https://www.cnblogs.com/aezero/p/4142590.html
Copyright © 2011-2022 走看看