特征工程
归一化
1 最大最小值归一化
$$
x = \frac{x-min}{max-min}
$$
最大值往往会是一个奇异点,实际工程中会取99分位值作为最大值。
2 z标准化
$$
x=\frac{x-\mu}{\sigma}
$$
评估指标
分类指标
准确率和召回率
$$
P=\frac{TP}{TP+FP}
$$
$$
R=\frac{TP}{TP+FN}
$$
F1
$$
\frac{2}{F_1}=\frac{1}{P}+\frac{1}{R}
$$
AUC
AUC(Area under the Curve of ROC)是ROC曲线下方的面积,是判断二分类预测模型优劣的标准。
ROC纵坐标是真正率TPR,横坐标是假正率FPR
$$
TPR=\frac{TP}{TP+FN}
$$
$$
FPR=\frac{FP}{FP+TN}
$$
logloss
回归指标
MAE
平均绝对误差
$$
MAE=\frac{1}{m}\sum_{i=1}^m{|(y_i-\hat{y_i})|}
$$
RMSE
均方根误差
$$
RMSE=\sqrt{\frac{1}{m}\sum_{i=1}^m{(y_i-\hat{y_i})^2}}
$$
排序指标
MAP
NDCG
搜索评价指标
CG
cumulative gain,累计增益,它是一个搜素结果相关性分数的总和。
$$
CG_p=\sum_{i=1}^p{rel_i}
$$
前p个位置的CG分数,rel是相关性,
DCG
Discounted的CG,折损累计增益,目的就是为了让排名越靠前的结果越能影响最后的结果。
$$
DCG_p=\sum_{i=1}^p{\frac{rel_i}{\log_2 (i+1)}}
$$
还有一种比较常用的公式
$$
DCG_p=\sum_{i=1}^p{\frac{2^{rel_i}-1}{\log_2 (i+1)}}
$$
NDCG
Normalized的DCG,归一化折损累计增益。由于搜索结果随着检索词的不同,返回的数量是不一致的,而DCG是一个累加的值,没法针对两个不同的搜索结果进行比较,因此需要归一化处理。
$$
NDCG_p=\frac{DCG_p}{IDCG_p}
$$
$$
IDCG_p=\sum_{i=1}^{|REL|}{\frac{2^{rel_i}-1}{\log_2 (i+1)}}
$$
|REL|表示,结果按照相关性从大到小的顺序排序,取前p个结果组成的集合。
NDCG@6表示统计TOP6的增益。
向量的模
$$
||X||=\sqrt{x_1^2+x_2^2+…+x_n^2}
$$
softmax函数
Softmax函数,或称归一化指数函数,是逻辑函数的一种推广。它能将一个含任意实数的K维向量“压缩”到另一个K维实向量中,使得每一个元素的范围都在(0, 1)之间,并且所有元素的和为1。
$$
S_i=\frac{e^{V_i}}{\sum_i^C{e^{V_i}}}
$$
Vi 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为 C。Si 表示的是当前元素的指数与所有元素指数和的比值。
残差
真实值和预测值的差
$$
y_i-F(x_i)
$$
决策树
生成算法 | 划分标准 |
---|---|
ID3 | 信息增益 |
C4.5 | 信息增益率 |
CART | 基尼指数 |
类型
- 分类决策树
- 回归决策树
回归树
https://blog.csdn.net/weixin_40604987/article/details/79296427
boosting集成学习算法
原始的boosting算法开始时,为每一个样本赋上一个权重值。在每一步训练中得到的模型,会使得数据点的估计有对有错,在每一步结束后,增加分错的点的权重,减少分对的点的权重,这样使得某些点如果老是被分错,那么就会被“严重关注”,也就被赋上一个很高的权重。然后等进行了N次迭代(由用户指定),将会得到N个简单的分类器(basic learner),然后我们将它们组合起来(比如说可以对它们进行加权、或者让它们进行投票等),得到一个最终的模型。
GBDT
https://www.zybuluo.com/Dounm/note/1031900
https://blog.csdn.net/Gavin__Zhou/article/details/71156715
GBDT是Gradient Boosting和boosting tree的结合,基学习器是树,CART树,loss函数不定。
训练时采用前向分步算法。
Gradient Boosting
Gradient Boosting是boosting提升算法的一种。
GBDT是Gradient Boosting算法的一种实现。
它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向。损失函数是评价模型性能(一般为拟合程度+正则项),认为损失函数越小,性能越好。而让损失函数持续下降,就能使得模型不断改性提升性能,其最好的方法就是使损失函数沿着梯度方向下降(讲道理梯度方向上下降最快)。
boosting tree
以分类决策树或回归决策树为基学习器的boosting算法被称为提升树(Boosting Tree)
加法模型(一种理解)
最终结果是M个基学习器结果求和得到。
$$
\hat{y_i} = \sum_{k=1}^M{f_k(x_i)}
$$
$f_k(x_i)$是第k个学习器
前向分步算法
- 初始化$f_0(x)=0$
- 第t步时,得到第t个模型$f_t(x)=f_{t-1}(x)+T(x;\gamma_t)$
- 第t步的目标函数是$(\gamma_t)=argmin\sum_{i=1}^N{L(y_i, f_{t-1}(x_i)+T(x_i;\gamma_t))}$
- 最终模型就是等于最后一步得到的模型$f(x)=f_M(x)=\sum_{t=1}^M{T(x;\gamma_t)}$
$T(x;\gamma_t)$是基学习器,$\gamma_t$是基学习器参数。
每一步得到的模型是累加的结果,每一步求解的是$T(x;\gamma_t)$。