分类目录归档:MachineLearning

特征工程_图

前置知识:图论基础

代码实践:图特征工程_Python实现

节点中心性度量

度中心性 (Degrree Centrality):

  • 用节点的度来描述节点的重要性,即邻接节点数越多的节点越重要
  • 在不同网络间比较时,需要除以网络总节点数进行标准化

特征向量中心性 ( Eigenvector Centrality): $$ c_v=\frac{1}{\lambda}\sum_{u\in N(v)}c_u $$

  • 节点的重要性取决于邻接节点的重要性之和
  • 其本质对应一个图邻接矩阵的特征向量求解问题

介数中心性

Read more

特征选择

1 常见特征选择方法

特征评价指标:信息准则类指标

常用特征选择方法:

  • 基于正则惩罚的特征选择(比如Lasso 回归
  • 删除方差特别低的特征(sklearn.feature_selection.VarianceThreshold
  • 删除高相关性的特征(比如计算皮尔逊相关系数矩阵)
  • 单变量特征选择(互信息、方差分析、卡方检验)
  • 基于评价方法的贪婪特征选择(前向/后向搜索)
  • 基于特征重要性的选择(集成树模型、SHAP分析)

2 Relief 特征选择法

Relief(relative features)是一种处理二分类问题的常用特征选

Read more

调参与训练

1 传统机器学习

1.1 XGBoost

最常用的10个超参数(原生API,兼容Scikit-learn的API,常见取值范围):

  • num_boost_round:训练期间所需要的基学习器数量,默认100;在应对较大数据集时,一般控制在5000~10000左右(影响训练时间的重要因素);一个常用技巧是先设定一个较高的数值,然后结合early-stopping来获得一个较优的模

Read more

模型评价

1 分类模型评价指标

1.1 混淆

Read more

数据偏斜

1 数据偏斜概述

又称为数据不平衡(imbalanced)问题,指分类任务中不同类别之间的样本数差异过大的情况。数据偏斜常见于医疗诊断、文本分类、金融欺诈、异常检测等领域,一般认为样本比例大于4:1时,便存在样本不平衡的问题,一些极端的场景下,会存在1000:1的样本比例,甚至一个类型只有一个样本的情况

数据偏斜问题的影响:干扰建模过程,错

Read more

AutoML项目

本文罗列了一些热门的自动机器学习项目

1 AutoGluon

  • AutoGluon 更倾向于使用多模型的 ensemble,利用多层 stacking + k-fold bagging 来实现更好更稳定的模型效果。当然基本的超参优化也是具备的。

  • 自带了一系列的特征工程自动化组件,例如各种缺失值的预处理,日期特征,类别特征,文本特征处理等。但这部分功能相对基础

  • 针对部署时进行优化,比如训练子模型替代多模型;引入模型蒸馏

  • 代码整

Read more

自动调参

1 网格搜索

网格搜索(Grid Search)会遍历给定参数空间内的所有参数组合,并选择最优的一组,相对于暴力枚举法,有点浪费时间

代码实现参考

2 随机搜索

随机选择(Randomized Search)参数空间内的参数组合,可能有的参数组合不会被选到,效率比网格搜索高

代码实现参考

3 贝叶斯优化

贝叶斯优化(Bayesian Optimization)是一种通用的黑盒优化

Read more

损失函数

1 损失函数的理解与区分

如何理解并区分误差(error)/损失(loss)/成本(cost)/目标(objective)函数?

  • 误差函数描述的是预测值与真实值的偏差:$y_{pred}-y_{true}$
  • 损失函数是对预测误差的负面影响的量化,比如平方误差损失认为3个单位的误差会导致9个单位的负面影响;损失函数通常是针对单个样本的描述
  • 损失函数是成本函数的一部分,成本函数通常是针对训练集的描述,既包含所有样本的损失,也包含针对模型复杂度的惩罚(正则项)
  • 成本函数是

Read more

特征工程

特征工程常用

常用特征处理:

  • 常见时间日期类特征:年/月/时、第几周/周次、是否周末、节假日、时差等
  • 日期类聚合特征:客户最活跃的月份、某类产品上周累计销售、特定客户的周末消费额等
  • 常用统计类特征:最值、均值、唯一值、偏度、峰度、KStat、分位数等

更多时序类衍生特征可参考tsfresh概述

其他特征处理技巧:

  • 多项式特征(preprocessing.PolynomialFeatures
  • 分箱(数值型变量 转 类别型变量,pandas.cut
  • 对数化(修正存在高方差的数值型变量,numpy.log

缺失填充也可以是特征工

Read more