文章目录
- 数据项目分析标准化流程
- 目录结构
- 核心结论
- 补充:常见误区
- 1. 数据加载
- 2. 数据预处理(Data Preprocessing)
- 2.1 数据清洗(Data Cleaning)
- 2.1.1 重复值处理
- 2.1.2 缺失值探索与处理
- 2.1.3 异常值探索与处理
- 2.2 数据格式标准化(可选,补充项)
- 3. 探索性数据分析(EDA)
- 3.1 描述性统计分析
- 3.2 单变量分布可视化
- 3.3 双变量关系分析
- 3.3.1 统计检验方法汇总表(有监督特征筛选专用)
- 3.3.2 检验代码实现与结果
- 3.4 多变量关系分析(可选)
- 4. 特征工程(Feature Engineering)
- 4.1 特征筛选
- 4.1.1 有监督特征筛选
- 4.1.2 无监督特征筛选
- 4.1.3 组合使用策略
- 4.2 类别型特征和数值型特征区分
- 4.3 缺失值处理(进阶)
- 核心差异:与预处理阶段的对比
- 进阶处理深度选择(效率 vs 效果)
- 进阶处理方法示例
- 代码示例(模型预测填充)
- 4.4 异常值处理(进阶)
- 核心差异:与预处理阶段的对比
- 进阶处理深度选择(效率 vs 效果)
- 进阶处理方法示例
- 代码示例(业务导向的异常值处理)
- 4.5 数据分桶
- 4.6 特征构造(可选)
- 4.7 特征转换
- 4.8 特征交互和特征编码
- 4.9 特征降维(可选)
- 5. 模型构建与评估
- 5.1 数据集划分
- 5.2 模型选择与训练
- 5.3 模型评估指标计算
- 5.3.1 分类任务评估指标
- 5.3.2 回归任务评估指标
- 5.3.3 无监督任务评估指标(补充)
- 5.4 模型调优
- 5.5 模型解释与落地(可选)
- 补充:常见的命名误区
- 总结
数据项目分析标准化流程
目录结构
项目分析流程 ├─ 数据加载 ├─ 数据预处理(Data Preprocessing) │ └─ 数据清洗(重复值、缺失值、异常值处理)、数据格式标准化 ├─ 探索性数据分析(EDA) │ ├─ 描述性统计分析 │ ├─ 单变量分布可视化 │ ├─ 双变量关系分析(统计检验为主) │ │ └─ 统计检验方法汇总表、检验代码实现与结果输出 │ └─ 多变量关系分析(可选) ├─ 特征工程(Feature Engineering) │ ├─ 特征筛选 │ │ ├─ 有监督特征筛选(基于EDA统计检验结果) │ │ └─ 无监督特征筛选(无目标变量/前置降噪) │ ├─ 特征类型区分(类别型/数值型) │ ├─ 缺失值/异常值处理(进阶) │ ├─ 数据分桶 │ ├─ 特征构造(可选) │ ├─ 特征转换/编码 │ └─ 特征降维(可选) └─ 模型构建与评估 ├─ 数据集划分 ├─ 模型选择与训练 ├─ 模型评估指标计算 ├─ 模型调优 └─ 模型解释与落地(可选)核心结论
- 从技术本质来看,统计检验优先归属到探索性数据分析(EDA)阶段;从业务目的(特征筛选)来看,它是特征工程的前置依赖步骤。
- 规范划分方式:统计检验的代码和结果放在EDA部分,有监督特征筛选的操作放在特征工程部分。
- 特征筛选分为有监督和无监督两类:有监督适用于有明确目标变量的场景,无监督适用于无目标变量的场景,或作为有监督筛选的前置降噪步骤。
- 数据预处理和特征工程阶段均涉及缺失值/异常值处理,但目标、粒度、方法完全不同:预处理是“基础清洗”,特征工程是“业务/模型导向的进阶优化”;进阶优化的深度需根据“效率-效果”目标、数据特性、模型类型灵活调整。
补充:常见误区
- 很多人将“特征筛选”直接等同于“统计检验”:统计检验是有监督特征筛选的一种基础方法,特征筛选还包含无监督方法和其他有监督方法(如基于模型的特征重要性、RFE)。
- 无监督特征筛选≠特征降维:筛选是直接删除无效特征,降维是将多个特征映射为少数新特征,二者是互补关系。
- 认为“预处理做了缺失值/异常值处理,特征工程就无需再做”:二者目标不同,预处理是“通用清洗”,特征工程是“定制化优化”,缺一不可;仅数据质量极高+树模型+快速验证场景可简化进阶处理。
1. 数据加载
# 大文件分块加载示例chunks=[]forchunkinpd.read_csv(path,chunksize=xxx):chunks.append(chunk)chunks_df=pd.concat(chunks)2. 数据预处理(Data Preprocessing)
数据预处理为独立大模块,核心目标是解决数据“可用性”问题,对全量数据做通用、基础的清洗,让数据满足后续分析的基本要求。
2.1 数据清洗(Data Cleaning)
2.1.1 重复值处理
- 代码:
data_train.duplicated().sum() - 操作:删除完全重复的行 / 保留第一条
- 核心目标:消除数据冗余,避免重复计算对后续统计分析的干扰。
2.1.2 缺失值探索与处理
- 代码:
data_train.isnull().sum()/ 缺失率计算 - 可视化:缺失率柱状图 / 热力图
- 处理方案:
- 数值型特征:均值/中位数/插值填充(通用策略,不区分特征重要性)
- 分类型特征:众数/缺失值单独编码(通用策略,不结合业务场景)
- 核心目标:填补“空值”,保证数据结构完整,避免后续EDA/建模时因空值报错。
- 局限性:仅解决“有没有值”的问题,不考虑“值是否合理”“是否适配业务/模型”。
2.1.3 异常值探索与处理
- 检测方法:箱线图(IQR法)、3σ法则、Z-score(通用统计方法,全量特征统一检测)
- 处理方案:删除极端异常值 / 盖帽法(替换为上下限) / 保留(根据业务逻辑判断是合理值)
- 核心目标:识别并处理明显违背统计规律的“极端值”,避免其对EDA阶段描述性统计的干扰。
- 局限性:仅从统计角度处理,不结合特征的业务含义、不考虑模型对异常值的敏感度。
2.2 数据格式标准化(可选,补充项)
- 数据类型转换:如将字符串格式的日期转为datetime类型、将数字编码的分类特征转为category类型
- 列名标准化:如统一小写、替换空格为下划线、删除特殊字符
- 核心目标:统一数据格式,提升后续操作的便捷性。
3. 探索性数据分析(EDA)
EDA为独立大模块,核心目标是理解数据特征,挖掘变量分布、变量间关系,为后续特征工程和建模提供依据。
3.1 描述性统计分析
- 代码:
data_train.describe()(连续变量:均值、中位数、标准差、分位数) - 代码:
data_train.describe(include='object')(分类变量:频数、唯一值数量)
3.2 单变量分布可视化
- 连续变量:直方图 + 核密度图(看分布是否正态)、箱线图
- 分类变量:条形图、饼图(看类别分布是否均衡)
3.3 双变量关系分析
3.3.1 统计检验方法汇总表(有监督特征筛选专用)
| 分类序号 | 分析场景(变量类型) | 常用检验方法 | 适用条件 | 原假设(H₀) | 核心用途 |
|---|---|---|---|---|---|
| 1 | 两个分类变量的关系(如:性别 vs 是否违约) | 卡方检验 | 列联表中大部分单元格频数 ≥ 5 | 两个分类变量相互独立,无关联 | 筛选与目标分类变量相关的分类特征 |
| 1 | 两个分类变量的关系 | Fisher精确检验 | 列联表中存在单元格频数 < 5(小样本) | 两个分类变量相互独立,无关联 | 卡方检验的补充,小样本场景下的分类特征筛选 |
| 2 | 单分类变量(两组) vs 连续变量(如:是否违约 vs 收入) | 独立样本t检验 | 连续变量正态分布、方差齐、样本独立 | 两组连续变量的均值无差异 | 筛选与目标二分类变量相关的连续特征 |
| 2 | 单分类变量(两组) vs 连续变量 | Welch’s t检验 | 连续变量正态分布、方差不齐、样本独立 | 两组连续变量的均值无差异 | t检验的修正版,方差不齐时的替代方案 |
| 2 | 单分类变量(两组) vs 连续变量 | Mann-Whitney U检验 | 连续变量非正态分布、样本独立(非参数检验) | 两组连续变量的分布无差异 | 不满足正态分布时,替代t检验的特征筛选 |
| 3 | 单分类变量(多组) vs 连续变量(如:学历等级 vs 收入) | 单因素方差分析(ANOVA) | 连续变量正态分布、方差齐、样本独立 | 多组连续变量的均值全部相等 | 筛选与目标多分类变量相关的连续特征 |
| 3 | 单分类变量(多组) vs 连续变量 | Kruskal-Wallis H检验 | 连续变量非正态分布、样本独立(非参数检验) | 多组连续变量的分布无差异 | 不满足正态分布时,替代ANOVA的特征筛选 |
| 4 | 两个连续变量的关系(如:年龄 vs 贷款金额) | Pearson相关分析 | 两个连续变量均服从正态分布 | 两个连续变量无线性相关 | 筛选与目标连续变量线性相关的连续特征 |
| 4 | 两个连续变量的关系 | Spearman秩相关分析 | 两个连续变量非正态分布(非参数检验) | 两个连续变量无秩相关 | 不满足正态分布时,替代Pearson的特征筛选 |
3.3.2 检验代码实现与结果
- 分类变量 vs 目标变量:卡方检验 / Fisher精确检验
- 连续变量 vs 目标变量:t检验 / Mann-Whitney U检验
- 输出:各变量的显著性检验结果表(p值、是否显著)
3.4 多变量关系分析(可选)
- 相关性热力图:连续变量之间的相关系数矩阵
- 分组箱线图:不同分类下连续变量的分布对比
4. 特征工程(Feature Engineering)
特征工程的核心目标是提升数据“有效性”,针对筛选后的特征,结合业务逻辑和模型特性做定制化优化,让数据更适配建模需求。
4.1 特征筛选
4.1.1 有监督特征筛选
- 适用场景:有明确目标变量的分类/回归任务(如预测是否违约、预测销售额)。
- 核心依据:
- EDA阶段的统计检验结果(基础方法);
- 基于模型的特征重要性(进阶方法,如树模型
feature_importances_、线性模型系数); - 递归特征消除(RFE)、递归特征消除交叉验证(RFECV)。
- 操作规则(统计检验法):
- 保留:p < 0.05 的显著相关特征;
- 删除:p ≥ 0.05 的无关特征。
- 代码示例(基于模型的特征重要性):
fromsklearn.ensembleimportRandomForestClassifier# 训练随机森林模型,获取特征重要性rf=RandomForestClassifier(n_estimators=100,random_state=42)rf.fit(X_train,y_train)# 特征重要性排序feature_importance=pd.DataFrame({'feature':X_train.columns,'importance':rf.feature_importances_}).sort_values(by='importance',ascending=False)# 筛选前N个重要特征(或按阈值筛选)top_features=feature_importance[feature_importance['importance']>0.01]['feature'].tolist()X_train_selected=X_train[top_features]X_test_selected=X_test[top_features]4.1.2 无监督特征筛选
- 适用场景:
- 无目标变量的任务(如聚类、异常检测);
- 有监督任务中前置降噪(在有监督筛选前,先删除无效特征,提升后续步骤效率)。
- 核心方法:
- 方差阈值法:删除方差小于阈值的特征(无区分度,如全为0的特征);
- 高相关性筛选:删除特征之间相关系数过高的冗余特征(如相关系数>0.9的两个特征,保留其中一个);
- 缺失率阈值法:删除缺失率过高的特征(如缺失率>80%的特征,无有效信息)。
- 操作规则:
- 方差阈值:通常设置为0(删除常量特征),或根据业务调整;
- 相关系数阈值:通常设置为0.8~0.9(删除高度冗余特征);
- 缺失率阈值:通常设置为0.7~0.8(删除无有效信息的特征)。
- 代码示例(组合方法):
fromsklearn.feature_selectionimportVarianceThresholdimportpandasaspdimportnumpyasnp# 1. 缺失率筛选:删除缺失率>80%的特征missing_rate=X.isnull().sum()/len(X)X_filtered=X.loc[:,missing_rate<=0.8]# 2. 方差阈值筛选:删除常量/低方差特征vt=VarianceThreshold(threshold=0)# threshold=0 表示删除方差为0的特征X_filtered=vt.fit_transform(X_filtered)# 恢复列名(VarianceThreshold返回的是numpy数组)X_filtered=pd.DataFrame(X_filtered,columns=X.columns[vt.get_support()])# 3. 高相关性筛选:删除相关系数>0.9的冗余特征corr_matrix=X_filtered.corr().abs()# 构建上三角矩阵,避免重复计算upper_triangle=corr_matrix.where(np.triu(np.ones(corr_matrix.shape),k=1).astype(bool))# 找到相关系数>0.9的特征列to_drop=[columnforcolumninupper_triangle.columnsifany(upper_triangle[column]>0.9)]X_filtered=X_filtered.drop(columns=to_drop)4.1.3 组合使用策略
- 无监督任务:仅使用无监督特征筛选;
- 有监督任务:先无监督筛选(降噪),后有监督筛选(精准筛选),既提升效率,又保证筛选的精准性。
4.2 类别型特征和数值型特征区分
- 类别型特征:需结合业务判断是否具有数值关系,是否是单纯的分类
- 数值型特征:
- 包含连续型和离散型,针对连续型数据需查看每一列是否符合正态分布
- 查看某一个数值型变量的分布,若不符合正态分布可log化后再次验证
- 若需统一标准化一批数据,需剔除已正态化的数据
- 正态化原因:部分场景下可加快模型收敛,部分模型(如GMM、KNN)要求数据正态;无需严格正态,保证数据不过度偏态即可,过度偏态可能影响模型预测结果
4.3 缺失值处理(进阶)
核心差异:与预处理阶段的对比
| 维度 | 预处理阶段(基础清洗) | 特征工程阶段(进阶优化) |
|---|---|---|
| 处理目标 | 保证数据“可用”,填补空值即可 | 保证特征“有效”,填补值需适配业务/模型 |
| 处理粒度 | 全量特征统一策略(如所有数值特征用中位数填充) | 按特征重要性/业务含义定制策略 |
| 处理方法 | 通用统计方法(均值、中位数、众数) | 业务导向/模型导向方法 |
进阶处理深度选择(效率 vs 效果)
| 目标优先级 | 适用场景 | 处理程度 | 具体操作 | 耗时 |
|---|---|---|---|---|
| 效率优先 | 快速原型验证(POC)、1天内出demo、初步验证数据建模价值 | 极简处理(仅修正核心特征明显问题) | 1. 核心特征(Top3):按业务分组填充(如按职业填收入中位数); 2. 非核心特征:沿用预处理策略 | 10-20分钟 |
| 平衡效率与效果 | 企业常规业务建模(用户流失预测、销量预测等)、需保证模型可用且有一定精度 | 中等深度(聚焦核心特征优化) | 1. 核心特征(Top5):分箱填充/简单模型填充(随机森林单特征预测); 2. 非核心特征:分组填充/沿用预处理 | 1-2小时 |
| 效果优先 | 数据竞赛冲榜、高精度业务建模(风控、医疗、金融定价)、需极致模型精度 | 深度处理(全维度最小化信息损失) | 1. 核心特征:多模型融合填充+缺失标记(新增“是否缺失”特征); 2. 非核心特征:模型填充/分组填充 | 3-6小时 |
进阶处理方法示例
- 高重要性数值特征:分箱填充(如按年龄分组,用每组的中位数填充)、模型预测填充(用其他特征训练模型预测缺失值);
- 高重要性分类特征:业务规则填充(如“婚姻状态”缺失,结合“是否有配偶贷款”字段填充);
- 模型适配优化:树模型对缺失值不敏感,可保留缺失值编码;线性模型需精准填充,避免引入偏差。
代码示例(模型预测填充)
fromsklearn.ensembleimportRandomForestRegressor# 选择高重要性特征(如income)作为待填充特征# 分离有值和无值的样本train_income=X_filtered[X_filtered['income'].notnull()]test_income=X_filtered[X_filtered['income'].isnull()]# 用其他特征预测income的缺失值X_train=train_income.drop('income',axis=1)y_train=train_income['income']X_test=test_income.drop('income',axis=1)# 训练填充模型fill_model=RandomForestRegressor(n_estimators=100,random_state=42)fill_model.fit(X_train,y_train)# 预测并填充pred_income=fill_model.predict(X_test)X_filtered.loc[X_filtered['income'].isnull(),'income']=pred_income4.4 异常值处理(进阶)
核心差异:与预处理阶段的对比
| 维度 | 预处理阶段(基础清洗) | 特征工程阶段(进阶优化) |
|---|---|---|
| 处理目标 | 消除统计极端值对EDA的干扰 | 消除异常值对模型拟合的负面影响 |
| 处理粒度 | 全量特征统一检测(如3σ法则) | 按特征业务含义/模型敏感度定制策略 |
| 处理方法 | 通用方法(删除、盖帽法) | 业务适配/模型适配方法 |
进阶处理深度选择(效率 vs 效果)
| 目标优先级 | 适用场景 | 处理程度 | 具体操作 | 耗时 |
|---|---|---|---|---|
| 效率优先 | 快速原型验证(POC)、1天内出demo、初步验证数据建模价值 | 极简处理(仅修正核心特征明显错误) | 1. 核心特征:简单业务规则修正(如年龄限0-100); 2. 非核心特征:轻度盖帽(99分位数) | 10-20分钟 |
| 平衡效率与效果 | 企业常规业务建模(用户流失预测、销量预测等)、需保证模型可用且有一定精度 | 中等深度(聚焦核心特征优化) | 1. 核心特征:业务适配处理(收入对数变换、金额缩尾); 2. 非核心特征:盖帽法(95/99分位数) | 1-2小时 |
| 效果优先 | 数据竞赛冲榜、高精度业务建模(风控、医疗、金融定价)、需极致模型精度 | 深度处理(精准识别+业务适配) | 1. 核心特征:异常检测(IQR+孤立森林)+ 业务适配处理; 2. 非核心特征:模型适配处理(线性缩尾、树模型保留) | 3-6小时 |
进阶处理方法示例
- 业务适配:“收入”字段的极端值可能是高净值用户,不删除,而是对数变换降低偏态;“年龄”字段的150岁值是错误值,需替换为合理上限(如100岁);
- 模型适配:线性模型对异常值敏感,需严格盖帽;树模型对异常值不敏感,可保留或轻度处理。
代码示例(业务导向的异常值处理)
# 收入字段:对数变换降低极端值影响(保留高收入用户信息)X_filtered['income_log']=np.log1p(X_filtered['income'])# 年龄字段:错误值替换(150岁以上替换为100岁)X_filtered['age']=X_filtered['age'].apply(lambdax:100ifx>100elsex)4.5 数据分桶
- 固定宽度分箱
- 分位数分箱
4.6 特征构造(可选)
- 示例:收入/负债比、逾期次数汇总、年龄分组、消费频率
4.7 特征转换
- 数值型特征:标准化(StandardScaler)、归一化(MinMaxScaler)
- 分类型特征:独热编码(One-Hot Encoding)、标签编码(Label Encoding)
4.8 特征交互和特征编码
- 编码方式:labelencode
- 数值转换:归一化
4.9 特征降维(可选)
- 主成分分析(PCA)、线性判别分析(LDA)
- 注意:降维是无监督特征筛选的补充,而非替代。降维后生成的新特征失去了原有的业务解释性,适用于对解释性要求不高的场景。
5. 模型构建与评估
5.1 数据集划分
- 核心逻辑:将处理后的特征数据划分为训练集、验证集(可选)、测试集,避免数据泄露
- 常用比例:训练集70%-80%,测试集20%-30%;若需验证集,可从训练集中再拆分10%-20%
- 代码示例:
fromsklearn.model_selectionimporttrain_test_split# 特征与目标变量分离X=data_train_filtered.drop('target',axis=1)y=data_train_filtered['target']# 划分训练集和测试集X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42,stratify=y# stratify保证目标变量分布一致)# 可选:划分验证集X_train,X_val,y_train,y_val=train_test_split(X_train,y_train,test_size=0.1,random_state=42,stratify=y_train)5.2 模型选择与训练
- 分类任务常用模型:逻辑回归、决策树、随机森林、XGBoost、LightGBM、神经网络等
- 回归任务常用模型:线性回归、岭回归、Lasso回归、随机森林回归、XGBoost回归等
- 无监督任务常用模型:K-Means、DBSCAN、层次聚类、孤立森林(异常检测)等
- 代码示例(以分类任务为例):
fromsklearn.ensembleimportRandomForestClassifierfromxgboostimportXGBClassifier# 基础模型训练(随机森林)rf_model=RandomForestClassifier(n_estimators=100,random_state=42)rf_model.fit(X_train,y_train)# 进阶模型训练(XGBoost)xgb_model=XGBClassifier(learning_rate=0.1,n_estimators=100,random_state=42)xgb_model.fit(X_train,y_train,eval_set=[(X_val,y_val)],early_stopping_rounds=10)5.3 模型评估指标计算
5.3.1 分类任务评估指标
- 基础指标:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1值、AUC-ROC、混淆矩阵
- 代码示例:
fromsklearn.metricsimportaccuracy_score,precision_score,recall_score,f1_score,roc_auc_score,confusion_matrix# 模型预测y_pred=xgb_model.predict(X_test)y_pred_proba=xgb_model.predict_proba(X_test)[:,1]# 计算指标accuracy=accuracy_score(y_test,y_pred)precision=precision_score(y_test,y_pred)recall=recall_score(y_test,y_pred)f1=f1_score(y_test,y_pred)auc=roc_auc_score(y_test,y_pred_proba)conf_matrix=confusion_matrix(y_test,y_pred)print(f"准确率:{accuracy:.4f}")print(f"精确率:{precision:.4f}")print(f"召回率:{recall:.4f}")print(f"F1值:{f1:.4f}")print(f"AUC值:{auc:.4f}")print("混淆矩阵:\n",conf_matrix)5.3.2 回归任务评估指标
- 基础指标:均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)、决定系数(R²)
- 代码示例:
fromsklearn.metricsimportmean_squared_error,mean_absolute_error,r2_score# 模型预测(回归)y_pred_reg=xgb_reg_model.predict(X_test)# 计算指标mse=mean_squared_error(y_test,y_pred_reg)rmse=mean_squared_error(y_test,y_pred_reg,squared=False)mae=mean_absolute_error(y_test,y_pred_reg)r2=r2_score(y_test,y_pred_reg)print(f"MSE:{mse:.4f}")print(f"RMSE:{rmse:.4f}")print(f"MAE:{mae:.4f}")print(f"R²:{r2:.4f}")5.3.3 无监督任务评估指标(补充)
- 聚类任务:轮廓系数(Silhouette Score)、Calinski-Harabasz指数、Davies-Bouldin指数
- 异常检测任务:精确率、召回率、F1值、AUC-ROC(若有标注数据)
5.4 模型调优
- 常用方法:网格搜索(GridSearchCV)、随机搜索(RandomizedSearchCV)、贝叶斯优化
- 代码示例(网格搜索):
fromsklearn.model_selectionimportGridSearchCV# 定义参数网格param_grid={'n_estimators':[50,100,200],'max_depth':[3,5,7],'learning_rate':[0.01,0.1,0.2]}# 网格搜索grid_search=GridSearchCV(estimator=XGBClassifier(random_state=42),param_grid=param_grid,cv=5,# 5折交叉验证scoring='roc_auc',# 分类任务以AUC为评分标准n_jobs=-1)grid_search.fit(X_train,y_train)print("最优参数:",grid_search.best_params_)print("最优交叉验证得分:",grid_search.best_score_)# 最优模型best_model=grid_search.best_estimator_5.5 模型解释与落地(可选)
- 模型解释:SHAP值、特征重要性、部分依赖图(PDP)等,解释模型决策逻辑
- 模型落地:模型保存(pickle/joblib)、部署为API、离线批量预测等
- 代码示例(模型保存与加载):
importjoblib# 保存模型joblib.dump(best_model,'best_xgb_model.pkl')# 加载模型loaded_model=joblib.load('best_xgb_model.pkl')# 离线预测new_data_pred=loaded_model.predict(new_data)补充:常见的命名误区
| 不规范的命名 | 规范的命名 | 归属层级 |
|---|---|---|
| 数据处理 | 数据预处理 | 独立大模块 |
| 缺失值处理 | 数据清洗 | 数据预处理的子模块 |
| 统计检验 | 探索性数据分析(EDA) | 独立大模块 |
| 特征筛选 | 特征工程 | 独立大模块 |
| 模型调参 | 模型调优 | 模型构建与评估的子模块 |
| 无监督降维 | 无监督特征筛选/特征降维 | 特征工程的子模块 |
总结
- 核心流程划分:数据加载→数据预处理→EDA→特征工程→模型构建与评估,各模块边界清晰,前序模块为后序模块提供数据/结果支撑;
- 特征筛选是特征工程的核心步骤,分为有监督和无监督两类,需根据任务类型选择合适的方法,有监督任务建议组合使用(先无监督降噪,后有监督精准筛选);
- 统计检验归属EDA,是有监督特征筛选的基础方法;无监督特征筛选适用于无目标变量的场景,或作为有监督筛选的前置步骤;
- 缺失值/异常值处理在预处理和特征工程阶段的核心差异:预处理解决“可用性”(通用清洗),特征工程解决“有效性”(定制化优化);进阶优化深度需按“效率优先/平衡/效果优先”选择,仅数据质量极高+树模型+快速验证场景可简化;
- 模型构建与评估需注重数据集划分的合理性,选择适配任务类型的评估指标,通过调优提升模型性能,可选做模型解释与落地。