距离函数#
欧氏距离#
d(x,y)=i=1∑n(xi−yi)2 曼哈顿距离#
d(x,y)=i=1∑n∣xi−yi∣ 明氏距离#
d(x,y)=(i=1∑n∣xi−yi∣p)1/p 马氏距离#
d(x,y)=(x−y)TΣ−1(x−y)
- Σ:协方差矩阵,反映数据的分布和相关性
- Σ=I 时,马氏距离退化为欧氏距离
- Cholesky分解:Σ=LLT,L−1x 的欧氏距离等价于 x 的马氏距离
海明距离#
d(x,y)=i=1∑nδ(xi,yi) 其中 δ(xi,yi) 是一个指示函数,当 xi=yi 时为 1,否则为 0。
角度相似函数#
d(x,y)=∥x∥∥y∥xTy
最近邻分类器#
k-最近邻算法#
对于一个新的输入样本,找到训练集中距离最近的k个样本,根据这k个样本的类别进行投票,决定新样本的类别。
k=1 时,称为最近邻分类器,边界复杂易受噪声影响。k较大时,边界更平滑但可能丢失细节。
Voronoi网格#
将输入空间划分为若干个区域,每个区域对应一个训练样本,区域内的所有点都被分类为该样本的类别。Voronoi网格的边界就是最近邻分类器的决策边界。
多层感知机(MLP)#
反向传播算法#
设输入层有 n 个神经元,隐藏层有 h 个神经元,输出层有 m 个神经元。
我们需要得到第i层的梯度∂W(i)∂J,其中 J 是损失,W(i) 是第i层的权重。
根据链式法则:
∂W(i)∂J=∂z(i)∂J⋅∂W(i)∂z(i) z(i) 是第i层的线性输出,z(i)=W(i)a(i−1)+b(i),其中 a(i−1) 是第i−1层的激活输出(也是第i层的输入)。
所以:
∂W(i)∂z(i)=a(i−1) 则:
∂W(i)∂J=∂z(i)∂J⋅a(i−1) ∂z(i)∂J被称作第i层的局部误差
若i是最后一层时,则∂z(i)∂J 可以直接计算;若i不是最后一层,则从最后一层开始,逐层向前计算∂z(i)∂J,直到计算到第i层。
∂z(i−1)∂J=∂z(i)∂J⋅∂a(i−1)∂z(i)⋅∂z(i−1)∂a(i−1)=(W(i))T⋅∂z(i)∂J⋅σ′(z(i−1)) TIP∂z(i−1)∂a(i−1)就是激活函数的导数
z(i)=W(i)a(i−1)+b(i),所以∂a(i−1)∂z(i)=W(i)
决策树#
一直问”是A还是B”来缩小范围,叶节点就是答案。
信息增益(ID3)#
选让分完后数据最不混乱的那个特征来分类
熵 衡量混乱程度(详见特征提取),数据集 D 的熵:
H(D)=−k∑pklog2pk pk 是第 k 类占的比例。熵越大越乱,全是同一类时熵=0。
按特征 A 的每个取值 v 把数据分成若干子集 Dv,各子集的熵加权平均就是条件熵:
H(D∣A)=v∑∣D∣∣Dv∣H(Dv)
- ∣D∣:总样本数
- ∣Dv∣:特征 A=v 的样本子集的样本数
- ∣D∣∣Dv∣:A=v 的样本占全部的比重
- H(Dv):样本子集自己的熵
信息增益 = 划分前熵 - 划分后熵,越大说明这个特征分得越好:
Gain(D,A)=H(D)−H(D∣A) 增益率(C4.5)#
ID3的缺点:过于偏好取值多的特征(比如”编号/ID”这种每个样本值都不同,增益直接拉满但不泛化)。C4.5引入固有值来惩罚取值多的特征,增益除以它进行校正:
IV(A)=−v∑∣D∣∣Dv∣log2∣D∣∣Dv∣GainRatio(D,A)=IV(A)Gain(D,A) 基尼指数(CART)#
CART用基尼值代替熵H(D),计算更简单:
Gini(D)=1−k∑pk2Gini(D∣A)=v∑∣D∣∣Dv∣Gini(Dv) 纯的类基尼=0(全是同一类),最乱时接近0.5。
核方法#
根据线性分类器的判别函数(非增广形式):
g(x)=wTx+w0 又根据感知器算法和SVM算法的权重更新规则:
w0←w0+ηyi w←w+ηyixi 可以发现最优解w和w0可以表示为训练样本的线性组合:
w=i=1∑Nαixi
SVM时大多数αi=0,只有支持向量对应的αi非零
将w代入判别函数:
g(x)=(i=1∑Nαixi)Tx+w0=i=1∑Nαi(xTxi)+w0 因此只要得到训练样本之间的内积xTxi,就可以计算判别函数的值。
为了处理非线性可分问题,可以将输入空间映射到一个高维特征空间:
ϕ:Rn→Rm 但是这个映射的计算非常昂贵。核方法的核心思想是引入一个核函数K(x,y),直接计算输入空间中的内积在特征空间中的值:
K(x,y)=ϕ(x)Tϕ(y) 常用的核函数包括:
- 线性核:K(x,y)=xTy
- 多项式核(Polynomial Kernel):K(x,y)=(xTy+c)d
- 径向基函数核(Gaussian RBF):K(x,y)=exp(−γ∥x−y∥2)
- Sigmoid核:K(x,y)=tanh(κxTy+c)
- Inverse Multiquadratic核:K(x,y)=∥x−y∥2+c21
TIPtanh(x)=ex+e−xex−e−x
当输入较大时,输出接近1;当输入较小时,输出接近-1
使用核函数后,判别函数可以表示为:
g(x)=i=1∑NαiK(x,xi)+w0 基于核方法的Logistic回归#
P(G=k∣x)P(G=K∣x)=1+∑l=1K−1exp(βl0+∑i=1NαliK(xi,x))exp(βk0+∑i=1NαkiK(xi,x))=1+∑l=1K−1exp(βl0+∑i=1NαliK(xi,x))1