由于之前做过吴恩达到机器学习笔记,所以这个记的很简洁
1. Lec 01 (KNN)
1.1. KNN k近邻算法
对于未知样本,计算其最近的k个已知样本的labels,返回占比最大的label。模型中无训练参数。
超参数(super parameter)k的选择:
- small k:overfit过拟合,对异常数据敏感,在分类清楚的数据集上表现很好
- large k:underfit欠拟合,没法捕捉重要regularities,决策边界十分平滑,在边界附近的未知样本分类就不是很准
- balancing k: k < n k<\sqrt{n} k<n
Dataset:
Training set | validation set | test set
可以通过validation set表现优劣选择k
test set 仅用于在最后评估模型
2. Lec 02 (Regression, Optimization)
2.1. Regression 回归
目的:预测如股票发展
种类:监督学习
监督学习的大致步骤:
- 挑选模型来描述变量间关系
- 定义损失函数 loss function
- 选择regularizer正则化
- 使用优化最小化代价函数Cost Function,直接计算或梯度下降
Model
y
=
f
(
x
)
=
∑
j
w
j
x
j
+
b
y=f(x)=\sum_{j}w_{j}x_{j}+b
y=f(x)=∑jwjxj+b
对于多维数据,使用矩阵计算
y
=
w
T
x
+
b
y=w^{T}x+b
y=wTx+b
t为真实标签
y为预测
w是参数
x是样本数据
b是偏差bias
Loss function
代表模型在样本上表现有多糟糕
Squared error loss function:
L
(
y
,
t
)
=
1
2
(
y
−
t
)
2
L(y,t)=\frac{1}{2}(y-t)^{2}
L(y,t)=21(y−t)2
Cost function
对于所有训练集而言的Loss function
J
(
w
,
b
)
=
1
2
N
∑
i
=
1
N
(
y
i
−
t
i
)
2
J(w,b)=\frac{1}{2N}\sum_{i=1}^{N}(y^{i}-t^{i})^{2}
J(w,b)=2N1∑i=1N(yi−ti)2
通常使用np.dot(w,x)+b
计算y
Vectorization
向量化可以加速计算,使代码易于阅读
Solving the Minimization Problem
梯度下降,使Cost function最小。
通常来说需要找到使Cost function梯度为0的点
Direct function:一步计算,直接得出最优
如线性回归问题,所有数据点到最优线的垂线都垂直于最优的线
X
T
(
y
∗
−
t
)
=
0
X^T(y^*-t)=0
XT(y∗−t)=0,可以直接求出最拟合的线
w
∗
=
(
X
T
X
)
−
1
X
T
t
w^{*}=(X^{T}X)^{-1}X^{T}t
w∗=(XTX)−1XTt
或着由链式推导,求出梯度为0的点
Feature Mapping
R
D
→
R
d
R^D \rightarrow R^d
RD→Rd
如果输入和输出间的关系不是线性的,可以使用投影将非线性的特征转换为线性的
Polynomial Feature Mapping
也可以通过多项式的方式拟合
φ
(
x
)
=
[
1
,
x
,
x
2
,
.
.
.
,
x
M
]
T
\varphi(x)=[1,x,x^2,...,x^M]^T
φ(x)=[1,x,x2,...,xM]T
y
=
w
0
+
w
1
x
+
w
2
x
2
.
.
.
y=w_0+w_1x+w_2x^2...
y=w0+w1x+w2x2...
Underfit and Overfit
欠拟合(左)和过拟合(右)
Regularization正则化
Regularizer: a function that quantifies how much we prefer one hypothesis vs. another
一个样本有许多的参数,为这么多的参数各自设定一个w会使模型复杂化,容易过拟合,通过正则化减少参与计算的参数数量,或限制w的大小
L
2
p
e
n
a
l
t
i
y
:
R
(
w
)
=
1
2
∣
∣
w
∣
∣
2
2
=
1
2
∑
j
w
j
2
L^2\ penaltiy:R(w)=\frac{1}{2}||w||^{2}_{2}=\frac{1}{2}\sum_jw_j^2
L2 penaltiy:R(w)=21∣∣w∣∣22=21∑jwj2
J
r
e
g
(
w
)
=
J
(
w
)
+
λ
R
(
w
)
J_{reg}(w)=J(w)+\lambda R(w)
Jreg(w)=J(w)+λR(w)
λ
\lambda
λ为超参
部分参数非常大导致某个偏导贼大
Gradient Descent 梯度下降
w j ← w j − α ϑ J ϑ w j w_j \leftarrow w_j-\alpha \frac{ \vartheta J}{\vartheta w_j} wj←wj−αϑwjϑJ
线性回归:
ϑ
J
ϑ
w
j
=
1
N
∑
i
=
1
N
(
y
i
−
t
i
)
x
i
\frac{ \vartheta J}{\vartheta w_j}=\frac{1}{N}\sum_{i=1}^{N}(y^{i}-t^{i})x^{i}
ϑwjϑJ=N1∑i=1N(yi−ti)xi
对于高维空间,梯度下降更可行有效
带有正则的回归:
w
j
←
w
j
−
α
ϑ
J
+
λ
R
ϑ
w
j
w_j \leftarrow w_j-\alpha \frac{ \vartheta J+\lambda R}{\vartheta w_j}
wj←wj−αϑwjϑJ+λR
=
(
1
−
α
λ
)
w
−
α
ϑ
J
ϑ
w
=(1-\alpha \lambda)w-\alpha \frac{\vartheta J}{\vartheta w}
=(1−αλ)w−αϑwϑJ
learning rate学习率:
Stochastic Gradient Descent(SGD):
不同于每次都训练整个batch,SGD根据一个单一样本进行训练
θ
←
θ
−
α
ϑ
L
(
i
)
ϑ
θ
\theta \leftarrow \theta - \alpha \frac{\vartheta L^{(i)}}{\vartheta \theta}
θ←θ−αϑθϑL(i)
Mini-batch:
每次选择一部分训练集训练
3. Lec03
Classification分类问题
Binary classification二分类
Multiclass classification多分类
t=1 called positive examples, t=0 called negative examples.
3.1. Linear Classifiers线性分类
z
=
w
T
x
+
b
z=w^Tx+b
z=wTx+b
y
=
{
1
i
f
z
≥
r
0
i
f
z
<
r
y= \begin{cases} 1\quad if\ z\ge r \\ 0 \quad if\ z \lt r \end{cases}
y={1if z≥r0if z<r
Simplified model:
将r与参数中的常数项相消,添加feature
x
0
=
1
x_0=1
x0=1,同时添加参数
w
0
w_0
w0训练
z
=
w
T
x
z=w^Tx
z=wTx
y
=
{
1
i
f
z
≥
0
0
i
f
z
<
0
y= \begin{cases} 1 \quad if\ z \ge 0 \\ 0 \quad if\ z \lt 0 \end{cases}
y={1if z≥00if z<0
Data Space与Weight Space
Data Space:将x看作自变量,Decision boundary决策边界
Weight Space:将w看做自变量
对于正样本,w的分布需使其分类为正
对于负样本,w到分布需使其分类为负
重合的分布即是Feasible region,如果存在则问题是feasible的
3.2. Logistic Regression
如果直接使用线性平方差作为Cost function
z
=
w
T
x
z=w^Tx
z=wTx
L
S
E
(
z
,
t
)
=
1
2
(
z
−
t
)
2
L_{SE(z,t)}=\frac{1}{2}(z-t)^2
LSE(z,t)=21(z−t)2
会发现x越大,肯定性越高,Cost却也越大
接下来使用sigmoid函数作为激活函数:
z
=
w
T
x
z=w^Tx
z=wTx
y
=
s
i
g
m
o
i
d
(
z
)
=
1
1
+
e
−
z
y=sigmoid(z)=\frac{1}{1+e^{-z}}
y=sigmoid(z)=1+e−z1
L
S
E
(
z
,
t
)
=
1
2
(
y
−
t
)
2
L_{SE(z,t)}=\frac{1}{2}(y-t)^2
LSE(z,t)=21(y−t)2
会发现极端值的z会导致链式求导算出来的梯度非常小,导致很难学习,(比如明明是正样本,算出来的z确接近负无穷,这样根本没有梯度)
接下来引入交叉熵Cross-entropy loss, 如果样本与预测的不对,则会
z
=
w
T
x
z=w^Tx
z=wTx
y
=
1
1
+
e
−
z
y=\frac{1}{1+e^{-z}}
y=1+e−z1
L
S
E
(
z
,
t
)
=
{
−
l
o
g
y
i
f
t
=
1
−
l
o
g
(
1
−
y
)
i
f
t
=
0
=
−
t
l
o
g
y
−
(
1
−
t
)
l
o
g
(
1
−
y
)
L_{SE(z,t)}=\begin{cases} -logy \quad if\ t=1 \\ -log(1-y) \quad if\ t=0 \end{cases} =-tlogy-(1-t)log(1-y)
LSE(z,t)={−logyif t=1−log(1−y)if t=0=−tlogy−(1−t)log(1−y)
ϑ
L
C
E
ϑ
w
j
=
(
y
−
t
)
x
j
\frac{\vartheta L_{CE}}{\vartheta w_j}=(y-t)x_j
ϑwjϑLCE=(y−t)xj
3.3. Multiclass Classification
用处如数字识别
label通常是one-hot vectors: (0,0,1,0…,0)
添加
x
0
=
1
x_0=1
x0=1将b省略
W的size为
K
×
(
D
+
1
)
K \times (D+1)
K×(D+1)
K为种类,D为feature维度
可以直接用linear prediction取最大的将其设为预测值
y
i
=
{
1
i
=
a
r
g
m
a
x
k
z
k
0
o
t
h
e
r
w
i
s
e
y_i=\begin{cases} 1 \quad i=argmax_kz_k \\ 0 \quad otherwise \end{cases}
yi={1i=argmaxkzk0otherwise
Softmax Regression
z=Wx
y
k
=
s
o
f
t
m
a
x
(
z
1
,
…
,
z
K
)
k
=
e
z
k
∑
k
′
e
z
k
′
y_k=softmax(z_1, \dots ,z_K)_k=\frac{e^{z_k}}{\sum_{k'}e^{z_{k'}}}
yk=softmax(z1,…,zK)k=∑k′ezk′ezk类似占比
然后交叉熵作为损失函数,log操作是element-wise的
L
C
E
(
y
,
t
)
=
−
∑
k
=
1
K
t
k
l
o
g
y
k
=
−
t
T
(
l
o
g
y
)
L_{CE}(y,t)=-\sum_{k=1}^{K}t_klogy_k=-t^T(log y)
LCE(y,t)=−∑k=1Ktklogyk=−tT(logy)
梯度下降:
w
k
←
w
k
−
α
1
N
∑
i
=
1
N
(
y
k
(
i
)
−
t
k
(
i
)
)
x
(
i
)
w_k \leftarrow w_k-\alpha \frac{1}{N} \sum_{i=1}^{N}(y_k^{(i)}-t_k^{(i)})x^{(i)}
wk←wk−αN1∑i=1N(yk(i)−tk(i))x(i)
线性回归没法分类非线性问题,如下
此时,采用Feature maps,扩展features从而提高维度,增大样本间差异
Lec 04
对于多分类,继续优化损失函数
4.1. Support Vector Machine
支持向量机,一个有外边距的超平面作为决策边界
The distance of a point x’ to the hyperplane is
w
T
x
′
+
b
∣
∣
w
∣
∣
2
\frac{w^Tx'+b}{||w||_2}
∣∣w∣∣2wTx′+b
geometric margin constraint,把C margin设为
1
∣
∣
w
∣
∣
2
\frac{1}{||w||_2}
∣∣w∣∣21
分母相消简化后:
t
(
i
)
(
w
T
x
(
i
)
+
b
)
≥
1
t^{(i)}(w^Tx^{(i)}+b) \ge 1
t(i)(wTx(i)+b)≥1 (algebraic margin constraint)
最大化边界
如果边界太小会不准,所以最大化C,最小化
∣
∣
w
∣
∣
2
2
||w||_2^2
∣∣w∣∣22
且会影响到这个决策边界的只有在边界附近的数据点,这些点被称为support vectors
如图。对于训练好的完美非soft SVM,落在margin边界线上的样本点被称为支持向量,它们满足 y ( w T + b ) = 1 y(w^T+b)=1 y(wT+b)=1,对于不是支持向量的点, y ( w T x + b ) > 1 y(w^Tx+b)>1 y(wTx+b)>1
允许部分点进入边界 Softmax SVM
这些点越过正确边界的距离被称为 ξ i \xi_i ξi,需要惩罚 ∑ i ξ i \sum_i\xi_i ∑iξi
t ( i ) ( w T x ( i ) + b ) ≥ 1 − ξ i t^{(i)}(w^Tx^{(i)}+b) \ge1-\xi_i t(i)(wTx(i)+b)≥1−ξi
soft-margin SVM target:
m
i
n
1
2
∣
∣
w
∣
∣
2
2
+
γ
∑
i
=
1
N
ξ
i
min\frac{1}{2}||w||_2^2+\gamma \sum_{i=1}^{N}\xi_i
min21∣∣w∣∣22+γ∑i=1Nξi
其中,超参数
γ
\gamma
γ平衡边界大小和越界惩罚
毕竟很难做到完全不进入边界,softmax作用就是允许一些点进入margin,但仍然会算入loss。max的作用是对于边界之外正确分类的,不计入loss,否则正确分类的越多loss会变小。
最终slack penalty, slack variables:
∑
i
=
1
N
ξ
i
=
∑
i
=
1
N
m
a
x
{
0
,
1
−
t
(
i
)
(
w
T
x
(
i
)
+
b
)
}
\sum_{i=1}^{N}\xi_i=\sum_{i=1}^{N}max\{0,1-t^{(i)}(w^Tx^{(i)}+b)\}
∑i=1Nξi=∑i=1Nmax{0,1−t(i)(wTx(i)+b)}
这个max{0,1-ty}叫做hinge loss
最终目标:
m
i
n
∑
i
=
1
N
ξ
i
=
∑
i
=
1
N
m
a
x
{
0
,
1
−
t
(
i
)
y
(
i
)
}
+
1
2
γ
∣
∣
w
∣
∣
2
2
min\sum_{i=1}^{N}\xi_i=\sum_{i=1}^{N}max\{0,1-t^{(i)}y^{(i)}\}+\frac{1}{2\gamma}||w||_2^2
min∑i=1Nξi=∑i=1Nmax{0,1−t(i)y(i)}+2γ1∣∣w∣∣22
Hence, the soft-margin SVM(软间隔SVM) can be seen as a linear classifier with hinge loss and an L2 regularizer
Multiclass SVM loss:
对于第j个样本,求该样本之于标签之外的其他分类的hinge loss,比如猫狗鸟三个分类,对于猫的样本,我们求狗和鸟的hinge loss,然后求sum。
L
i
=
∑
j
≠
y
i
m
a
x
(
0
,
s
j
−
s
y
i
+
1
)
L_i=\sum_{j\neq y_i}max(0,s_j-s_{y_i}+1)
Li=∑j=yimax(0,sj−syi+1)
4.2. SVM Loss and Softmax Loss
Multiclass SVM loss:
L
i
=
∑
j
≠
y
i
m
a
x
(
0
,
s
j
−
s
y
i
+
1
)
L_i=\sum_{j\neq y_i}max(0,s_j-s_{y_i}+1)
Li=∑j=yimax(0,sj−syi+1)
Multiclass Softmax loss:
计算正确的那个分类在所有分类中的占比
L
i
=
−
l
o
g
(
e
s
y
j
∑
j
e
s
j
)
L_i=-log(\frac{e^{s_{yj}}}{\sum_je^{s_j}})
Li=−log(∑jesjesyj)
Lec 05 Neural Network
激活函数activation function
全连接神经网络
梯度下降Gradient Descent:
梯度下降链式求导
sigmoid:
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x) = \frac{1}{1+e^{-x}}
σ(x)=1+e−x1
d
σ
(
x
)
d
x
=
e
−
x
(
1
+
e
−
x
)
2
=
1
+
e
−
x
−
1
1
+
e
−
x
1
1
+
e
−
x
=
(
1
−
σ
(
x
)
)
σ
(
x
)
\frac{d\sigma(x)}{dx}=\frac{e^{-x}}{(1+e^{-x})^2}=\frac{1+e^{-x}-1}{1+e^{-x}}\frac{1}{1+e^{-x}}=(1-\sigma(x))\sigma(x)
dxdσ(x)=(1+e−x)2e−x=1+e−x1+e−x−11+e−x1=(1−σ(x))σ(x)
5.1. 链式求导例子
f ( x , W ) = ∣ ∣ w ⋅ x ∣ ∣ 2 = f ( q ) = q 2 = ∑ i = 1 n ( W ⋅ x ) i 2 f(x,W)=||w \cdot x||^2=f(q)=q^2=\sum_{i=1}^{n}(W \cdot x)^2_i f(x,W)=∣∣w⋅x∣∣2=f(q)=q2=∑i=1n(W⋅x)i2
Lec 06 Convolutional Neural Network
卷积神经网络
图像和5x5x3的卷积核Filter(过滤器)
每一个卷积核都可以生成一个feature map
如果使用六个卷积核,则下一层有六个通道
Stride=2时,卷积核每次移动2格
N图像,F卷积核,在没有pad的情况下
O
u
t
p
u
t
s
i
z
e
=
(
N
−
F
)
/
S
+
1
i
f
(
N
−
F
)
%
S
=
0
Output size=(N-F)/S +1 \quad if\ (N-F)\%S=0
Outputsize=(N−F)/S+1if (N−F)%S=0
zero pad,扩充边界,边界填0
边界大小=
(
F
−
1
)
/
2
(F-1)/2
(F−1)/2
在有Pad情况下
O
u
t
p
u
t
s
i
z
e
=
(
N
−
F
+
2
∗
P
)
/
S
+
1
i
f
(
N
−
F
+
2
∗
P
)
%
S
=
0
Output size=(N-F+2*P)/S+1 \quad if\ (N-F+2*P)\%S=0
Outputsize=(N−F+2∗P)/S+1if (N−F+2∗P)%S=0
参数数量注意每个卷积核还有个bias
1x1x64的卷积核
6.1. 卷积层CONV
6.2. 池化层POOL
在层之间插入池化层,对数据降采样
目的:避免过拟合,减小计算量
最大池,每2x2的区域取之中的最大值,无parameter
6.3 全连接层(Fully Connected Layer)
就是原始的神经网络,把多个通道的数据输出为一个值
对于N x N x 10的最后一个池化层输出,一个全连接神经元相当于一个大小为N x N x 10的卷积核对其卷积
ResNet残差网络
Lec 07 Decision Tree
根据树形结构分解features
Features通常都是离散的
构建决策树的大致方法
- 从空决策树开始,根据整个训练集选择一个feature,使信息增量最大
- 然后找到使损失最小的分割判定,将数据根据分割分到不同的组
- 对于每个组:
- 如果没有数据点,则返回父节点的另外一类
- 否则如果所有数据点都属于同一类,返回该类
- 否则执行步骤1
当所有叶子节点空或仅包含同类数据,结束构造
量化损失,使用熵entropy评估,高熵意味着分类效率差,低熵意味着结果更确定:
p为该类占比
−
p
l
o
g
2
(
p
)
−
(
1
−
p
)
l
o
g
2
(
1
−
p
)
-plog_2(p)-(1-p)log_2(1-p)
−plog2(p)−(1−p)log2(1−p)
More generally,
H
(
Y
)
=
−
∑
y
∈
Y
p
(
y
)
l
o
g
2
p
(
y
)
H(Y)=-\sum_{y\in Y}p(y)log_2p(y)
H(Y)=−∑y∈Yp(y)log2p(y)
单位bits
熵的计算例子:
给定下雨,则求熵时只看下雨那行
计算条件熵,如果某种条件已知后的熵
已知的条件后的熵乘该条件独立概率作为权重相加
Tips:
7.1. Information Gain
信息增量,“给定了一个条件,它给了我多大信心去判断某事”
度量了一个feature被划分后能够提供多少信息
I
G
(
Y
∣
X
)
=
H
(
Y
)
−
H
(
Y
∣
X
)
IG(Y|X)=H(Y)-H(Y|X)
IG(Y∣X)=H(Y)−H(Y∣X)
informative: 信息相关
If X is completely uninformative about Y: IG(Y|X)=0
If X is completely informative about Y: IG(Y|X)=H(Y)
上面提到决策树有关“分割哪些feature”和“如何分割”
最终目标是能算出最高信息增量的分割
7.2. 评估
决策树应当:
- 不能小:应当处理细节
- 不能大:计算效率,避免过拟合
- “”Occam’s Razor": 找到最简单的假说来契合观察
相比于KNN,决策树:
- 更容易处理离散变量与缺失数据,以及小范围的数据
- 测试时很快
- 更易于解释
相比于决策树,KNN:
- 超参数更少
- 可以包含更广泛的feature间距离(如形状)
相比于决策树,神经网络:
- 能够处理复杂的features
7.3. Bias-Variance Decomposition
偏差(Bias)-方差(Variance) 窘境
证明y=E[t|x]为最优估计
bias偏差:预测值与靶心的距离
variance方差:预测值之间的离散程度
Lec08
7.1. bagging
现在有多个待训练模型,将训练集重新采样出来的子集 p s a m p l e p_{sample} psample作为模型的训练集,然后对它们的预测取 y = 1 m ∑ i = 1 m y i y=\frac{1}{m}\sum_{i=1}^{m}y_i y=m1∑i=1myi
对于expected loss的影响:
- Bias: unchanged, 期望没变
E [ y ] = E [ 1 m ∑ i = 1 m y i ] = E [ y i ] E[y]=E[\frac{1}{m}\sum_{i=1}^{m}y_i]=E[y_i] E[y]=E[m1∑i=1myi]=E[yi] - Variance:reduced,因为对结果取了平均值,所以不那么离散了
V a r [ y ] = V a r [ 1 m ∑ i = 1 m y i ] = 1 m 2 ∑ i = 1 m V a r [ y i ] = 1 m V a r [ y i ] Var[y]=Var[\frac{1}{m}\sum_{i=1}^{m}y_i]=\frac{1}{m^2}\sum_{i=1}^{m}Var[y_i]=\frac{1}{m}Var[y_i] Var[y]=Var[m1∑i=1myi]=m21∑i=1mVar[yi]=m1Var[yi] - Bayes error: unchanged, 没法控制这个
为何不像以前一样用这一整个训练集去训练一个模型:
用pD表示psample的proxy,也被称为bootstrap aggregation,或bagging
相当于训练集D是[1,2,3,4,5], 数量n=5
bagging出来的m=4个子集,每个数量n=3,子集里元素是放回式地选取的[1,3,3],[2,3,4],[3,3,5],[1,4,5]
这四个训练集训练出来的模型预测的四个结果yi,我们取它们的平均值
∑
i
=
1
m
y
i
m
\sum_{i=1}^{m}\frac{y_i}{m}
∑i=1mmyi作为最终的预测结果
hypotheses space假设空间:
一个从输入空间到输出空间的映射的集合
对于y=wx, 学习w= 1 或 -1 的一个简单模型而言,采用bagging后的映射空间不同于一般的映射空间
加入分类器后:
问题:如果数据集不是独立的,没法得到1/m的缩减
采用随机森林(Random forests):
bagged decision tree,当选择决策树的每个节点的时候,从d维features里选择一个随机子集,然后只考虑从这些feature里分割。
随机森林可能是最好的黑箱(black box)机器学习方法, 不需要调整。
Bagging Summary
不能减少bias(平方代价)
分类器之间仍然有联系
天然的混淆(每个分类器权值相同,如果被baged的模型各异,则加权得到的分类结果更好)
7.2. boosting
维护一个全体classifiers集合(ensemble),按顺序训练分类器,每次着重训练集合上轮预测错误的样本,权重与上一次的预测值相关,使用了加权训练集(weighted training set)
代价函数里添加个w(n)
∑
n
=
1
N
w
(
n
)
⨿
[
h
(
x
(
n
)
)
≠
t
(
n
)
]
\sum_{n=1}^{N}w^{(n)} \amalg[h(x^{(n)})\ne t^{(n)}]
∑n=1Nw(n)⨿[h(x(n))=t(n)]
通常权重w大于0且总和=1
其中, ⨿ ( T r u e ) = 1 \amalg(True)=1 ⨿(True)=1
AdaBoost 算法:
- 每次迭代,重新分配权重给这些训练样本,分类器集合分类错误的样本的权重要大一些
- 训练一个基于新权重的分类器(base classifiers,bases)
- 把这个新的分类器设置一个权重添加到classifiers集合里
- 重复以上
Base classifier:
- 需要尽可能减少权重错误
- 尽可能快速(一些weak learner/classifier),因为集群非常大
通常,weak分类器的bias贼大,欠拟合。但是集群能够集中于改正前面错误的结果,减少bias
Decision Stump
一种weak 分类器,只有一个分割的决策树
之前说的决策树使用信息增量来决定如何分割,这个用的是GINI Impurity,单纯地选取横向切割或竖向切割减小error
一个完整的例子
sign指每个子区域以投票制决出label
那些weighted error更低的base classifier在最终分类器里得到更高的权重
更详细的step-by-step example见 链接
Additive Models可加模型
将以上一般化
a
r
g
m
i
n
x
1
+
(
x
−
1
)
2
=
1
argmin_{x}1+(x-1)^2=1
argminx1+(x−1)2=1
argmin:使后面函数最小时的x值
Boosting Summary
通过结合多个弱分类器来减少bias
每个base分类器都以减少之前的整体error为目标训练
不太容易过拟合,但是还是会有可能过拟合
Lec09 Probabilistic Models
probabilistic interpretation概率解释
maximum likelihood estimation最大拟然估计
9.1. 最大拟然估计
以掷硬币为例子,如果扔某一枚硬币100次,结果55次正面(记为1)45次背面(记为0),总共结果为
[
x
1
,
.
.
.
,
x
N
]
[x_1,...,x_N]
[x1,...,xN],那么我们可以假设现在存在某种变量
θ
∈
[
0
,
1
]
\theta \in [0,1]
θ∈[0,1]与硬币结果相关:
p
(
x
=
1
∣
θ
)
=
θ
a
n
d
p
(
x
=
0
∣
θ
)
=
1
−
θ
p(x=1|\theta)=\theta\ and\ p(x=0|\theta)=1-\theta
p(x=1∣θ)=θ and p(x=0∣θ)=1−θ
or we say
p
(
x
∣
θ
)
=
θ
x
(
1
−
θ
)
1
−
x
p(x|\theta)=\theta^x(1-\theta)^{1-x}
p(x∣θ)=θx(1−θ)1−x
结果的联合概率(joint probability)为
p
(
x
1
,
.
.
.
,
x
N
∣
θ
)
=
∏
i
=
1
N
θ
x
i
(
1
−
θ
)
1
−
x
i
p(x_1,...,x_N|\theta)= \prod_{i=1}^{N}\theta^{x_i}(1-\theta)^{1-x_i}
p(x1,...,xN∣θ)=∏i=1Nθxi(1−θ)1−xi,这个连积(density for continuous)叫做likelihood function
L
(
θ
)
L(\theta)
L(θ)。有时也用log-likelihoods:
l
(
θ
)
=
∑
i
=
1
N
x
i
l
o
g
θ
+
(
1
−
x
i
)
l
o
g
(
1
−
θ
)
l(\theta)=\sum_{i=1}^{N}x_ilog\theta+(1-x_i)log(1-\theta)
l(θ)=∑i=1Nxilogθ+(1−xi)log(1−θ)
如果求一个最优的theta?好的theta会对观测到的数据做出高可能估计,这也叫做maximum likelihood criterion: θ ^ M L = m a x θ ∈ [ 0 , 1 ] l ( θ ) \hat\theta_{ML}=max_{\theta \in [0,1]}l(\theta) θ^ML=maxθ∈[0,1]l(θ)
求解梯度为0的点就可以算出这个最优
θ
\theta
θ
maximum likelihood estimation:
- 对于数据集,定义一个模型来assign这个数据集的概率密度
- 然后使拟然值最大,也就是使log-likelihood最小
在这个框架中之前讨论的模型都没用,如果考虑分类问题,使用拟然估计有两种方法:
区别与理解
- Discriminative approach判别法
主要是根据输入x和输出y,估计决策边界或如何决策,只管心模型的最终分类结果。- 直接建模p(t|x)
- 学习输入到最终结果
- “我现在知道了输入x,我该怎么区分他们是哪种class?”
- k近邻,感知级,决策树,支持向量机
- Generative approach生成法
根据输入x和输出y,尝试知道x是如何到y的过程,这样给出任何的x,都能走这个过程从而得知对应的输出y- 建模p(x|t)
- 通过贝叶斯规则从联合概率P(x,y) derive(派生)p(t|x)
- 存在distributional assumption over inputs
- “我知道了各种class,这些class是怎么从x变过来的?”
- 朴素贝叶斯和隐马尔科夫模型
9.2. 贝叶斯分类器Bayes Classifier
以区分垃圾spam邮件为例子(yes c=1,no c=0)
对数据预处理,根据一个大小D的词库计算每个词是否出现在该邮件内,并记为一个向量{“a”:2,“card”:1,“winter”:0,“winner”:1…}作为feature x=[x1,x2,…,xd]T
p
(
c
∣
x
)
=
p
(
x
,
c
)
p
(
x
)
=
p
(
x
∣
c
)
p
(
c
)
p
(
x
)
p(c|x)=\frac{p(x,c)}{p(x)}=\frac{p(x|c)p(c)}{p(x)}
p(c∣x)=p(x)p(x,c)=p(x)p(x∣c)p(c)
p
o
s
t
e
r
i
o
r
后验概率
=
C
l
a
s
s
l
i
k
e
l
i
h
o
o
d
×
p
r
i
o
r
E
v
i
d
e
n
c
e
posterior后验概率=\frac{Class\ likelihood \times prior}{Evidence}
posterior后验概率=EvidenceClass likelihood×prior
p(x)可视为常量,因此不需要计算它。只需要得知p(x|c)p©即可,如果我们定义联合分布p(c,x1,x2,…xd),我们就能够确定以上两个值的积。
问题是在D+1个二元变量上建立联合分布函数需要2D+1-1个条目entries,意味着它应该需要大量的数据。我们想要impose structure使得:
- it can be compactly represented
- learning and inference are both tractable
Naive assumption: 朴素贝叶斯(Naive Bayes)
假设单词feature xi与class条件性独立(conditionally independent)。意味着:
- 各个x互相独立,在条件分布p(x|c)下
- 注意:不代表他们是独立变量
- 从数学上可以如下拆解: p ( c , x 1 , . . . , x D ) = p ( c ) p ( x 1 ∣ c ) . . . p ( x D ∣ c ) p(c,x_1,...,x_D)=p(c)p(x_1|c)...p(x_D|c) p(c,x1,...,xD)=p(c)p(x1∣c)...p(xD∣c)
因此,只需要2D+1个条目就可以构建模型:
log-likelihood中的每一个部分都取决于参数的子集,因此可以独立优化它们(偏导。
- 对加号左边的部分
∑
i
=
1
N
l
o
g
p
(
c
(
i
)
)
\sum_{i=1}^{N}logp(c^{(i)})
∑i=1Nlogp(c(i)):
如果 p ( c ( i ) = 1 ) = π p(c^{(i)}=1)=\pi p(c(i)=1)=π,那么 p ( c ( i ) ) = π c ( i ) ( 1 − π ) 1 − c ( i ) p(c^{(i)})=\pi^{c^{(i)}}(1-\pi)^{1-c^{(i)}} p(c(i))=πc(i)(1−π)1−c(i)
Log-likelihood: ∑ i = 1 N l o g p ( c ( i ) ) = ∑ i = 1 N c ( i ) l o g π + ∑ i = 1 N ( 1 − c ( i ) ) l o g ( 1 − π ) \sum_{i=1}^{N}logp(c^{(i)})=\sum_{i=1}^{N}c^{(i)}log\pi+\sum_{i=1}^{N}(1-c^{(i)})log(1-\pi) ∑i=1Nlogp(c(i))=∑i=1Nc(i)logπ+∑i=1N(1−c(i))log(1−π)
求梯度为0的点: π = s u m ( c ( i ) = 1 ) N = 垃圾邮件数量 总邮件样本 \pi=\frac{sum(c^{(i)}=1)}{N}=\frac{垃圾邮件数量}{总邮件样本} π=Nsum(c(i)=1)=总邮件样本垃圾邮件数量 - 对加号右边的部分
l
o
g
p
(
x
j
(
i
)
∣
c
(
i
)
)
logp(x_j^{(i)}|c^{(i)})
logp(xj(i)∣c(i)):
如果 θ j c = p ( x j ( i ) = 1 ∣ c ) \theta_{jc}=p(x_j^{(i)}=1|c) θjc=p(xj(i)=1∣c). 注意到 p ( x j ( i ) ∣ c ) = θ j c x j ( i ) ( 1 − θ j c ) 1 − x j ( i ) p(x_j^{(i)}|c)=\theta_{jc}^{x_j^{(i)}}(1-\theta_{jc})^{1-x_j^{(i)}} p(xj(i)∣c)=θjcxj(i)(1−θjc)1−xj(i)
Log-likelihood:
梯度为0的点: θ ^ j c = s u m ( x j ( i ) = 1 & c ( i ) = c ) ∑ i s u m ( c ( i ) = c ) = 单词 j 在数据集中出现次数 邮件总数量 \hat \theta_{jc}=\frac{sum(x_j^{(i)}=1\ \&\ c^{(i)}=c)}{\sum_i sum(c^{(i)}=c)}=\frac{单词j在数据集中出现次数}{邮件总数量} θ^jc=∑isum(c(i)=c)sum(xj(i)=1 & c(i)=c)=邮件总数量单词j在数据集中出现次数
通过表现模型里的inference(推断)来预测邮件的种类,贝叶斯规则:
p
(
c
∣
x
)
=
p
(
c
)
p
(
x
∣
c
)
∑
c
′
p
(
c
′
)
p
(
x
∣
c
′
)
=
p
(
c
)
∏
j
=
1
D
p
(
x
j
∣
c
)
∑
c
′
p
(
c
′
)
∏
j
=
1
D
p
(
x
j
∣
c
′
)
p(c|x)=\frac{p(c)p(x|c)}{\sum_{c'}p(c')p(x|c')}=\frac{p(c)\prod_{j=1}^{D}p(x_j|c)}{\sum_{c'}p(c')\prod_{j=1}^{D}p(x_j|c')}
p(c∣x)=∑c′p(c′)p(x∣c′)p(c)p(x∣c)=∑c′p(c′)∏j=1Dp(xj∣c′)p(c)∏j=1Dp(xj∣c)
分母是个定值:
p
(
c
∣
x
)
∝
p
(
c
)
∏
j
=
1
D
p
(
x
j
∣
c
)
p(c|x) \propto p(c)\prod_{j=1}^{D}p(x_j|c)
p(c∣x)∝p(c)∏j=1Dp(xj∣c)
对于输入x,分别计算c=0和c=1的
p
(
c
)
∏
j
=
1
D
p
(
x
j
∣
c
)
p(c)\prod_{j=1}^{D}p(x_j|c)
p(c)∏j=1Dp(xj∣c),取最大者
c
=
a
r
g
m
a
x
c
(
p
(
c
)
∏
j
=
1
D
p
(
x
j
∣
c
)
)
c=argmax_{c}( p(c)\prod_{j=1}^{D}p(x_j|c))
c=argmaxc(p(c)∏j=1Dp(xj∣c))
Evaluate评估朴素贝叶斯Naive Bayes:
- Training time:使用最大拟然估计来估测参数,只需要对数据集扫描一次并count。
- Test time:应用Bayes‘ Rule,由于模型结构,非常简便
- 缺点:
- less accurate in pracitce compared to discriminative models due to its “naive” independece assumption
- 如果数据太少,会过拟合,根据观察到的数据来预测未来的数据,这个问题被称作data sparsity数据稀疏
贝叶斯参数估计(Bayesian Parameter Estimation):
- 在最大拟然中,observations(x)被视作随机变量,而parameter(theta)不是的。 θ → x \theta \rightarrow x θ→x
- 贝叶斯方法将parameter也视作随机变量: β → θ → x \beta \rightarrow \theta \rightarrow x β→θ→x。beta是parameter的先验概率集合。也就是先验概率决定了某个随机变量,然后决定最终的x观测值
- 为了定义贝叶斯模型,我们需要知道两个distributions:
- 先验概率prior distribution p ( θ ) p(\theta) p(θ)
- 最大拟然值 p ( D ∣ θ ) p(D|\theta) p(D∣θ)
什么是先验概率,后验概率:
- 先验概率是在事件发生前得出的概率,既对以往发生过的同一件事情进行的概括和估计。事件发生前的预判概率。可以是基于历史数据的统计,可以由背景常识得出,也可以是人的主观观点给出。一般都是单独事件概率, 如P(x),P(y)。
- 后验概率是事件发生后求的反向条件概率;或者说,基于先验概率求得的反向条件概率。概率形式与条件概率相同。 p ( θ ∣ D ) = p ( θ ) p ( D ∣ θ ) ∫ p ( θ ′ ) p ( D ∣ θ ′ ) d θ ′ p(\theta|D)=\frac{p(\theta)p(D|\theta)}{\int p(\theta')p(D|\theta ')d\theta '} p(θ∣D)=∫p(θ′)p(D∣θ′)dθ′p(θ)p(D∣θ),通常不求分母(denominator),太难求了
9.3. 回到硬币问题
对于硬币问题,我们已经知道了拟然(likelihood),H表示正面,T表示反面:
L
(
θ
)
=
p
(
D
∣
θ
)
=
θ
N
H
(
1
−
θ
)
N
T
L(\theta)=p(D|\theta)=\theta^{N_H}(1-\theta)^{N_T}
L(θ)=p(D∣θ)=θNH(1−θ)NT
接下来我们需要算
p
(
θ
)
p(\theta)
p(θ)先验概率,可以选择一个uninformative prior作为先验概率。实验告诉我们0.5要比0.99靠谱,使用beta distribution可以帮助我们确定先验:
可以忽略normalization constant(归一化常数):
p
(
θ
;
a
,
b
)
∝
θ
a
−
1
(
1
−
θ
)
b
−
1
p(\theta;a,b)\propto \theta^{a-1}(1-\theta)^{b-1}
p(θ;a,b)∝θa−1(1−θ)b−1
不同的a和b的取值:
观察到:
- 期望E[ θ \theta θ]=a/(a+b)
- 当a和b很大时,分布变得高耸
- 当a=1,b=1时,变成uniform distribution
计算后验概率,可以看成参数为:NH+a, NT+b的beta distribution:
θ
\theta
θ的后验期望:
E
[
θ
∣
D
]
=
N
H
+
a
N
H
+
N
T
+
a
+
b
E[\theta|D]=\frac{N_{H}+a}{N_H+N_T+a+b}
E[θ∣D]=NH+NT+a+bNH+a
a和b在先验中可以看成pseudo-counts伪计数:因为先验和拟然有一样的函数形式
maximum A-Posteriori Estimation
Lec10 k-Means and EM Algorithm
10.1. K-means
有时同一簇(cluster)内的数据之间都是互相相似的,不同簇之间的数据是不相似的。这种有多个modes的模型被称为multimodal。不依靠label把数据点分进cluster叫做聚类clustering,属于非监督学习。
x
(
n
)
x^{(n)}
x(n)第n个数据点
{
m
k
}
k
=
1
K
\{m_k\}_{k=1}^{K}
{mk}k=1K:聚类中心(Cluster center)
{
r
(
n
)
}
n
=
1
N
\{r^{(n)}\}_{n=1}^{N}
{r(n)}n=1N:表示第n个数据点属于哪个类中心,假如一共五个中心,该点属于第二类,则值为[0,1,0,0,0]T(Responsibilities)
k-means的目标是找出聚类中心,并减少各点到中心的距离之和
实现过程,使用迭代思想,交替最小化alternating minimization:
-
先随机选取聚类中心
-
Assignment:根据聚类中心,划分每个数据点到最近的类
-
Reffiting:根据每个类的数据点算他们的均值,重新设置该类聚类中心
-
重复上述流程直到收敛
应用到图像处理上,可以让图像的颜色简化,分类到K个颜色;或得到图像的边缘分界块
10.1.1. 评估聚类
几个问题:
- 为什么k-means收敛?在每轮迭代中,总代价(数据点到该类中心的距离)被减少了。观察到assign和refit都会减少总代价。由于对于同个k,每次只会缩减到局部最小,k的取值,影响到了是否达到全局最小
- 使用其他的距离度量?一个数据点可能对一个类有0.7置信度,对另外一个类有0.3置信度。称作soft assignments。这样refit也会根据权重来,如下,这里rk有所变化,相应的导致refit也有变化。如何设置beta以及聚类如何处理不平衡的权重:We’ll reformulate clustering using a generative model。
probabilistic formulation of clustering使用概率描述聚类:
10.1.2. 最大拟然估计与soft聚类
Gaussian,normal distribution高斯分布,正态分布
假设D个输入,N个样本,
μ
和
∑
\mu\ 和\sum
μ 和∑定义了multivariate Gaussian多元高斯分布,称为
N
(
μ
,
∑
)
o
r
N
(
x
;
μ
,
∑
)
N(\mu,\sum)\ or\ N(x;\mu,\sum)
N(μ,∑) or N(x;μ,∑)
对于数据D,我们生成generative model:
p
(
z
=
k
)
=
π
k
p
(
x
∣
z
=
k
)
=
N
(
x
∣
μ
k
,
I
)
p(z=k)=\pi_k \\ p(x|z=k)=N(x|\mu_k,I)
p(z=k)=πkp(x∣z=k)=N(x∣μk,I)
如何选择
π
k
,
μ
k
k
=
1
K
{\pi_k,\mu_k}_{k=1}^K
πk,μkk=1K:根据最大拟然,选择能最大化观测值的参数。因此,需要用给定的数据集D,选择参数让下式最大
a
r
g
m
a
x
(
∑
n
=
1
N
l
o
g
p
(
x
(
n
)
)
)
argmax(\sum_{n=1}^Nlogp(x^{(n)}))
argmax(∑n=1Nlogp(x(n)))
得出p(x)
p
(
x
)
=
∑
k
=
1
K
p
(
z
=
k
,
x
)
=
∑
k
=
1
K
p
(
z
=
k
)
p
(
x
∣
z
=
k
)
=
∑
k
=
1
K
π
k
N
(
x
∣
μ
k
,
I
)
p(x)=\sum_{k=1}^Kp(z=k,x)=\sum_{k=1}^Kp(z=k)p(x|z=k)=\sum_{k=1}^K\pi_kN(x|\mu_k,I)
p(x)=∑k=1Kp(z=k,x)=∑k=1Kp(z=k)p(x∣z=k)=∑k=1KπkN(x∣μk,I)
这个分布是高斯混合模型Gaussian Mixture Model(GMM)的例子,
π
k
\pi_k
πk是mixing coefficients混合系数。
通常每个聚类有不同的系数,这节lec假设
∑
k
=
I
\sum_k=I
∑k=I,减少复杂性
最大拟然目标:
如何优化
π
k
,
μ
k
{\pi_k,\mu_k}
πk,μk,观察到如果我们知道每个x(n)的z(n)标签,最大拟然问题可以被推导为
进而为了最大化左式,得到相应的参数
右式中的z(n)未知,但可以通过贝叶斯计算
p
(
z
(
n
)
∣
x
(
n
)
)
p(z^{(n)}|x^{(n)})
p(z(n)∣x(n)),也就是
I
I
[
z
(
n
)
=
k
]
II[z^{(n)}=k]
II[z(n)=k]的期望
p
(
z
(
n
)
=
k
∣
x
(
n
)
)
p(z^{(n)}=k|x^{(n)})
p(z(n)=k∣x(n))
如何fit混合高斯:EM
10.2. EM algorithm
Expectation-Maximization algorithm,主要有两步:
- E-step:计算现在模型的先验概率 r k ( n ) = p ( z ( n ) = k ∣ x ( n ) ) r_k^{(n)}=p(z^{(n)}=k|x^{(n)}) rk(n)=p(z(n)=k∣x(n))
- M-step:使用上一个公式去更新参数,假设 r k ( n ) r_k^{(n)} rk(n)固定不变。只改变每个高斯的参数,来最大化他现在所属的数据点属于他的概率
EM公式化步骤:
复习generate model:
EM和k-means的关系:
EM就是k-means的概率化表达,k-means“这个点属于某个类”,且类与点的assign是通过距离确定。EM“这个点有多大可能属于某个类‘,类和点的assign是通过高斯混合模型确定。