机器学习笔记

特征工程

归一化

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 基尼指数

类型

  1. 分类决策树
  2. 回归决策树

回归树
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个学习器

前向分步算法

  1. 初始化$f_0(x)=0$
  2. 第t步时,得到第t个模型$f_t(x)=f_{t-1}(x)+T(x;\gamma_t)$
  3. 第t步的目标函数是$(\gamma_t)=argmin\sum_{i=1}^N{L(y_i, f_{t-1}(x_i)+T(x_i;\gamma_t))}$
  4. 最终模型就是等于最后一步得到的模型$f(x)=f_M(x)=\sum_{t=1}^M{T(x;\gamma_t)}$

$T(x;\gamma_t)$是基学习器,$\gamma_t$是基学习器参数。
每一步得到的模型是累加的结果,每一步求解的是$T(x;\gamma_t)$。

GBDT的目标函数

xgboost

https://blog.csdn.net/qdbszsj/article/details/79615712