15 KiB
Entropy
- 条件熵
H(Y|X):= \sum_j p(x_j) H(Y|X=x_j)
- 信息增益 (information gain) 或者互信息 (mutual information):
g(Y,X):= H(Y)-H(Y|X)=\sum p(x_i, y_j) \log\frac{p(x_i, y_j)}{p(x_i)p(y_j)}
- 信息增益比 (information gain ratio):
g_R(Y,X):= \frac{g(Y,X)}{H(X)}
H(Y)\leq log(n)
H(Y|Y)=0
- 如果X与Y无关,
H(Y|X)=H(Y)
g(Y,X)=H(Y)+H(X)-H(X,Y)
H(Y|X)=H(X,Y)-H(X)
- 交叉熵 (cross entropy):
H(p,q)=\sum -p(x_i) \log q(x_i)
- 相对熵 (relative entropy) 或者 KL 散度 (Kullback-Leibler divergence, KLD):
D_{KL}(p||q):=H(p,q)-H(p)= \sum -p(x_i)\log \frac{q(x_i)}{p(x_i)}
g(X,Y)=D_{KL}(p(x,y)||p(x)p(y))
- JS 散度:
JS:=1/2 ( D_{KL}(p||m) + D_{KL}(q||m) )
, 这里m=(p+q)/2
。 p和q支撑集不相交时,JS 散度为一个常数 log2 - 最小化交叉熵=最小化KL=极大似然
Bias-Variance tradeoff
- 通常“复杂”的模型(增加参数;增加特征等)有较小的 Bias 但会带来较高的 Variance. 可通过像boosting等手段来降低 Bias
- 通常“简单”的模型(减少参数;减少特征等)有较小的 Variance 但会带来较高的 Bias. 可通过增加样本,bagging等手段来降低 Variance.
分类器性能指标
- 正确分类的比率
Acc=\frac{TP+TN}{TP+TN+FP+FN}
- 正预测中被分对的比率
Pre=\frac{TP}{TP+FP}
- 召回率 (recall) 也叫灵敏度 (sensitive) 或者 True Postive Rate(TPR), 正样本中被分对的比率,
Rec=TPR=\frac{TP}{TP+FN=P}
- 特效度 (specificity) 负样本中被分对的比率
Spe=\frac{TN}{FP+TN=N}
- False Postive Rate 负样本中被分错的比率
FPR=\frac{FP}{FP+TN=N}=1-Spe
- 正负样本不平衡的情况下,高准确率不一定代表好的分类。比如正样本只有 1 个,实际的例子就是预测地震,每次都预测不地震。
- F-Measure 又称 F-Score:
F=\frac{\alpha^2+1}{\alpha^2}\frac{1}{1/Pre+1/Rec}
- 计算 Phi coefficient , 可得 Matthews correlation coefficient (MCC)
- ROC (Receiver operating characteristic) 曲线:FPR vs TPR
- PR (precision recall) 曲线:Pre vs Rec
- TPR = FPR, 它意味着无论一个样本本身是正还是负,分类器预测其为正的概率是一样的,这等同于随机猜测
- 正样本集合中正负样本的比例大幅变化时,ROC 曲线并不会产生过大的变化; 使PR 曲线发生巨大变化;
- 比例不平衡有大量负样本时,会产生大量错误的正预测 (FP)。ROC曲线变化不明显而给出错误的乐观估计,但精确率则会因为FP变化大幅下降,使PR曲线下降明显而给出正确估计。(我认不平衡导致TP显得过少,FP显得过多)
- 考虑阙值分析的,我们使用 ROC 或者 PR;分布不平衡的,我们使用 F-Score 或者 PR;
- 这些指标只能用来衡量分类性能,不能训练分类器的参数。
聚类
-
聚合 (agglomerative) 或自下而上 (bottom-up) 聚类:1. 构造 N 个类,每个类只包含一个样本;2. 合并类间距离最小的两个类;3. 计算新类与当前各类的距离重复以上步骤,直到类的个数达到阙值。复杂度是
O(N^3m)
:\sum_{i=1}^N i^2
再乘以维度m. -
分裂聚类(自上而下):1.将所有数据点视为一个聚类。2.选择一个聚类进行分裂。3. 将所选聚类分裂为两个或多个子聚类。4.用新子聚类更新聚类集合。5. 重复:对子聚类重复步骤2-4。6.达到预定条件(如聚类数目或质量标准)后停止
-
k-means: 最小化类内方差也叫类内平方和
-
Lloyd 算法:1. 初始化令 t = 0 选择 k 个样本点作为初始聚类中心; 2. 根据上一步的中心进行聚类(E步)3. 重新计算步骤2的中心(M步)。 缺点:不平衡即不同类中样本的数量差异很大
-
Hartigan-Wong 算法:1. 随机分配所有的点到 k 个类上,计算 k 个类的中心。2. 随机选择一个点移出所属类,重新计算类中心。3. 把移出的点重新分配到其距离最近的中心点的类上,其中距离函数中乘以了加权系数
\frac{类的元素个数}{类的元素个数+1}
,使得算法更倾向于把样本分配给样本数量较少的类 -
MacQueen算法(在线更新算法,只需一次迭代):1. 选取头 k 个点作为类中心。2. 依次把下一个点分配到当前类中,更新该类的中心。直到所有的点分配完毕。
-
k-medians:把平方距离(L2)改为绝对值距离 (L1)时,中心也由平均值变成了中位数。
-
The Elbow Method:当聚类个数超过某个值时,能量减少明显变缓。
-
k‐means缺点和解决方案:
- 容易局部收敛,在大规模数据集上求解较慢:CLARA, CLARANS
- 离群点和噪声点非常敏感:k-medoids, PAM, DBSCAN
- 初始聚类中心选取敏感:1. 层次聚类选初值;2. k-mean++
- 划分聚类像球型:GMM
-
k-means++: 思想是使初始中心之间的相互距离尽可能远。1. 从样本集中随机选取一个作为中心;2. 对于每个剩余的数据点,计算它到已选择的聚类中心的“距离”; 3. 从剩余的数据点选一个作为新的中心点,根据2中的“距离”选取,距离远概率大。4. 选出k个中心后再k-means。
-
k‐medoids: 不计算中心,而是按准则函数选取类中成员 (medoids) 作为“中心”来代表这个类。
-
k-medoids一种实现方式:Partitioning Around Medoids(PAM)。通过不停对换中心来实现。1. 任意选取 k个点作为中心; 2. 将剩余点聚类到中心;3. 随机地选一非中心点替换中心点,如果损失减少,则交换; 4.重复直到总的损失不变
-
CLARA (Clustering LARge Applications): 应用于大规模数据。思想为每次随机抽取一小部分样本进行PAM。 1. 几次PAM后得到几组中心;2. 对每一组中心,将剩余点分配到距离最近的中心所代表的类中,计算绝对误差。3. 选取绝对误差最小的那组中心。
-
CLARANS: 在 CLARA 确定中心之后,类似PAM 中的方法,不停对换中心。
-
Density-based spatial clustering of applications with noise (DBSCAN ):1. 按照核心点、边界点、噪声点标记;2. 删除噪声点;3. 把距离小于ϵ的核心点两两连在一起,连通集形成一个聚类;4. 将边界点指派到关联的核心点的聚类中。
- 优点:所有形状的聚类尤其是非凸集;不需指定簇的个数;噪音不敏感,可发现异常点;初始值无影响。
- 缺点:如果密度不均匀、聚类间距差相差很大时,聚类质量较差;计算效率低。
-
高斯混合模型聚类: 假设每个点以一定概率被分配到一个类中,高斯分布可做椭圆划分。
采样
- 任意离散随机变量采样:利用均匀分布采样和Cumulative Distribution Function简称CDF
- 用 rand()% M 产生 rand()% N:rand()% M * rand()% M 产生 M*M; 然后用拒绝采样就近采样 N 的倍数
- 正态随机变量采样: Box-Muller法
- 从
U(0,1)
中抽取两个独立随机数u_1
和u_2
。 - 使用以下公式生成两个独立的标准正态随机变量
Z_1
和Z_2
: $$ Z_1 = \sqrt{-2 \ln(u_1)} \cos(2\pi u_2) \ Z_2 = \sqrt{-2 \ln(u_1)} \sin(2\pi u_2) $$
- 从
- 重要性抽样:思想是从一个容易采样的提案分布中抽取样本,然后通过权重调整来估计目标分布下函数f的期望值。q 的选取要接近 p,否则就需要大量的采样才能收敛
- 舍选法或接受-拒绝抽样法 (accept-reject sampling method) :通过均匀分布采样大于某阈值选择或舍弃某次采样。建议分布一定比目标分布有更粗的尾。接受一个建议样本的次数
N ∼ G(\frac{1}{M})
- π 称为平稳分布 (Stationary distribution)如果
π^T = π^T Q
。 - MCMC采样:下面
\alpha= \min(1, \frac{p(j)q(i|j)}{p(i)q(j|i)})
- 当t步时xt, 用概率分布 q(x|xt) 产生样本
x_{t+1}
; - 产生均匀分布 u ∼ Uniform(0, 1);
- 如果
u < α(x_t, x_{t+1})
则x_{t+1}
; 否则x_{t}
.
- 当t步时xt, 用概率分布 q(x|xt) 产生样本
- 建议分布
- Metropolis 选择:q(y|x) = q(x|y)
- 独立抽样:q(y|x) = q(y)
- 随机游走:y = x + ϵ . 参数过大则会导致拒绝率大;过小时有非常高的接受率,但产生的状态列自相关性太强导致收敛速度太慢。可解释为大自相关使MC均值的估计方差变大
- 建议分布的选取几个标准:Heavy Tails; 和目标分布一样的支撑集;如果目标分布时多峰值时,应该使用高斯混合模型。
- Gibbs:迭代地更新多变量分布中每个维度的样本(在其他维度的当前值条件下),来近似复杂多维概率分布。
PCA
A^T Cov(X)A= diag(\lambda_1,...,\lambda_m)
, A是m\times m
正交矩阵将随机向量X变换为互相无关的随机向量Y- X任何的单位向量线性组合=Y的单位向量线性组合。这个线性组合的方差就是特征根的加权平均,所以一定小于最大特征根
- 如果存在几个相关性很高的特征,比如某特征复制若干遍,则会出现一个主成分的方差异常高于其他的主成分,错误的认为只有一个主成分。一般情况下保留高相关性的特征,除非数量非常庞大显著影响到其他主成分
- 选几个主成分k一般由贡献率η来决定,η=前k个特征的和/全部的和
- 样本矩阵
X_{N×m}
,其中N为样本个数,m为特征个数。样本协方差和样本相关矩阵都是无偏估计。样本协方特征根和特征向量是 Cov(X) 的特征值和特征向量的MLE X=X\alpha_1\alpha_1^T+...+X\alpha_m\alpha_m^T=
- 与回归类似,加入新的特征,新第一主成分的方差(特征根)一定不会减少
- PCA需要标准化预处理,方差大的特征,相较于小的数据获得更高的权重,这样会导致它们不合常理的干涉第 1 主成分的变化。
- 最小平方误差理解 PCA: 前 k 个主成分
\alpha_1...\alpha_k
为 k-维超平面使得为样本点到超平面平方距离和最小。这是一个降维的过程也是编码解码的过程,可以推广到非线性降维即自编码器 - 可以考虑两个空间来思考PCA和回归问题:样本点所在的空间dim=m;随机向量空间当dim=N(样本PCA的时候)或无穷(总体PCA的时候)
- 主成分回归 (principal component regression, PCR):使用PCA降维后再做Multiple Linear Regression
- PCR可以用来消除线性规划中的多重共线性问题;小特征根会加大估计的方差,使得特征对输入变化非常敏感。
- PCR 先考虑了X的方差,然后再考虑新特征与Y之间的相关性,这与同时考虑最大化X的方差和与Y的相关性不同。PCR不是PLSR dim y = 1的特殊情形
- PCA异常值检验:
- 方差得分:考察某异常点往各个主成分上投影的(加权除以
\lambda_i
)平方和。这里\lambda_i
使得各个特征向量之间有可比性。也可以选择前r个或者在后r个特征上的得分。 - 重构误差:=前k个特征向量的重构误差的加权平均
- 方差得分:考察某异常点往各个主成分上投影的(加权除以
- 奇异值分解 (SVD):
A_{m\times n}=U_{m\times m}\Sigma_{m\times n} V_{n\times n}^T
,这里U和V正交矩阵,\Sigma=diag(1,...,1,0,...)
- 紧奇异值分解 (compact singular value decomposition)等号;截断奇异值分解 (truncated singular value decomposition)约等于
- 线性判别分析(Linear Discriminant Analysis, LDA)是有监督的降维方法。思想是将每个类的样本点投影到低维超平面上使得类内方差最小,类外方差最大即使得降维后类间的分隔尽可能的大
S_w
类内散度矩阵 (within-class scatter matrix)(也就是样本协方差矩阵m × m):类内样本协方差矩阵,再对类求和S_t
全局散度:所有样本协方差S_b
类间散度矩阵 (between-class scatter matrix)S_t-S_w=\sum |C_i| (\mu_i-\mu)(\mu_i-\mu)^T
- LDA就是最大化
max_W \frac{W^TS_bW}{W^TS_wW}
求对角线元素乘积;这里S_b
秩最多k − 1也就是说非零特征根最多k − 1个,所以最大的投影超平面为 k − 1维 - PCA 和 LDA 不同点:1有无监督;2维数不能超过类别数;3 LDA过分依赖类的中心,所以当类中心比较接近而依靠方差来分类时,PCA投影后分类效果优于LDA
- 稀疏编码:寻找一组过完备(overcomplete)的基向量(基向量个数远大于dim x)
A = [a_1, · · · , a_M]
来表示样本x=Ah
,这里h
稀疏
特征选择
- 特征选择优点:减少过拟合;减少模型复杂性;减少噪声;提高鲁棒性
过滤法 (Filter)
- t-检验:适用于二分类。独立双样本 t-检验异方差的情形。检验值越小,说明标签对特征影响越小即特征与标签相关性越低, 特征越应该被移除。
- F-检验: 从二分类推广到多分类,即是ANOVA的均值变异F-检验
χ^2
-检验:适用于多分类离散样本。Pearsonχ^2
检验。用来检验特征样本 Xm 和标签样本Y的相关性
过滤法最大的问题就是没考虑针对后续要使用的学习器去选择特征子集,减弱学习器拟合能力。
嵌入法 (Embedded) 先使用某些机器学习的算法和模型进行训练,利用这些模型对特征打分:
- 回归和 SVM 中移除系数小的特征;
- L1 正则的稀疏性,移除 0 权重的特征;
- 随机森林、GBDT、XGboost 评分,移除低分特征
包裹法 (Wrapper)
- 向前搜索(Forward Selection):1从没有任何特征的模型开始。2添加一个新的特征,这个特征是当前未被选中的特征中对模型性能提升最大的。3当没有更多的特征可以显著提高模型性能时停止,或者达到预设的特征数量上限。
- 向后搜索(Backward Elimination):1从包含所有候选特征的模型开始。2移除一个特征,这个特征是当前模型中对性能影响最小的。
损失函数的下降也不足以说明特征不重要,因为要考虑相关特征,这就有了 RFE
- 递归特征消除(Recursive Feature Elimination, RFE):1从全部特征开始,训练一个基线模型;2使用模型(如决策树、随机森林等)评估每个特征重要性;3. 根据特征重要性,选择一定数量特征进行消除;4递归,在消除了部分特征的数据集上重新训练模型,并重复2和3;5最终选择在多次迭代后保留下来的特征。优势在于可使RFE能够识别出那些在组合中对模型性能有显著影响的特征。
- 随机稀疏模型 (Randomized sparse models): 多次随机选取特征训练如L1稀疏模型,以被稀疏模型选中为非零特征的次数来排序。
- 要同时选中高相关特征的重要性除了过滤法外,也有改进RF的Boruta:通过随机打乱原始特征的值为数据集中的每个特征创建影子特征;将影子特征添加到原始数据集中,形成扩展数据集,并用其训练随机森林模型;在每次迭代中,比较每个原始特征的重要性与影子特征的最高重要性,若原始特征的重要性高于影子特征的最高值,则认为该特征是重要的(Hit),否则是不重要的(Miss);重复上述过程多次(通常100次),统计每个特征的“命中”次数和“未命中”次数;根据统计结果,将特征分为“重要”、“不重要”和“不确定”三类,重要特征被保留,不重要特征被剔除,而不确定特征则根据设定的迭代次数或阈值进一步判断