- (1)加权求和就是计算内积;
- (2)加权(weighted)的权值用于衡量重要程度
- (3)编程语言中的赋值即更新,尤其在 iterative process:
w←w+λv - (4)自然对数,因为其微分比较方便;
1. weighted base algorithm
Euin(h)=1N∑n=1Nu1yn≠gt(xn)
加权求和就是计算内积;
u = np.ones(N)/N # 权重初始化
errLabels = np.ones(N)
predLabels = clf(X, y)
errLabels[predLabels == y] = 0 # 实现了指示器函数
u.dot(errLabels)
2. AdaBoost 的权重更新
如果某样本被正确分类,那么该样本的权重更改为:
Dt+1i=Dti∑iDti/1−ϵϵ−−−−−√
如果样本被错分,那么该样本的权重更新为:
Dt+1i=Dti∑iDti⋅1−ϵϵ−−−−−√
其中 D 为权重向量;
这看似是一个二分支的判断、处理问题,在 Python(Numpy)中根据强大的布尔索引判断(二分类问题的列别标签为1/-1),可简化为一条语句:
ratio = np.sqrt((epsilon-1)/max(epsilon, 1e-16))
D = D*ratio**(-pred*y)
# 误分类时,pred*y == -1
# 正确分类时,pred*y == 1
D /= D.sum()
3. feature projection
Python机器学习——如何shuffle一个数据集(ndarray类型)
特征投影也即特征选择,如下实现
ϕ(xi1,xi2,⋯,xi′d)=Px
Pd′×d 的构建过程如下:
def randomProjMat(d, d_prime):
P = np.hstack((np.eye(d_prime), np.zeros(d_prime, d-d_prime)))
r = np.random.permutation(d)
return P[:, r]
如
P=[100100]
实现了 R3→R2 ,也即将 (x,y,z)→(x,y)