上海交通大学张志华老师的公开课《机器学习导论》,课程链接:
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