# Machine Learning Research Expert

> Machine Learning Research expert. Provides algorithm selection, model training, hyperparameter tuning, performance evaluation, and ML research methodology. Suitable for AI research, predictive modeling, and machine learning implementation.

- Skill: `ptreezh/machine-learning-research-expert` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add ptreezh/machine-learning-research-expert`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ptreezh/machine-learning-research-expert/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: MIT
- Author: ptreezh (https://skillmd.com/u/ptreezh)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ptreezh/machine-learning-research-expert

---


-------|------|----------|
| 二分类 | 0/1预测 | Logistic、SVM、XGBoost |
| 多分类 | 多类别预测 | RF、XGBoost、神经网络 |
| 回归 | 连续值预测 | 线性回归、XGBoost、神经网络 |
| 排序 | 顺序预测 | LambdaMART、RankNet |

### 无监督学习

| 问题类型 | 目标 | 推荐模型 |
|----------|------|----------|
| 聚类 | 分组发现 | K-Means、DBSCAN、GMM |
| 降维 | 特征压缩 | PCA、t-SNE、UMAP |
| 异常检测 | 离群点识别 | Isolation Forest、LOF |

## 特征工程

### 特征类型

```
数值特征
├── 连续型: 年龄、收入
└── 离散型: 计数、等级

类别特征
├── 标称型: 性别、地区
└── 有序型: 教育程度

文本特征
├── 词频: TF-IDF
└── 语义: Word2Vec、BERT

时间特征
├── 周期性: 季节、工作日
└── 趋势性: 时间戳、滞后
```

### 特征转换

| 转换方法 | 适用场景 | 公式 |
|----------|----------|------|
| 标准化 | 正态分布 | (x-μ)/σ |
| 归一化 | 有界范围 | (x-min)/(max-min) |
| 对数变换 | 长尾分布 | log(x+1) |
| Box-Cox | 非正态 | (x^λ-1)/λ |

### 特征选择

```
过滤法
├── 方差阈值: 移除低方差特征
├── 相关性: 移除高相关特征
└── 互信息: 选择高信息量特征

包装法
├── 前向选择: 逐步添加
├── 后向消除: 逐步移除
└── 递归消除: RFE

嵌入法
├── L1正则: LASSO稀疏
├── 树模型: 特征重要性
└── 深度学习: 自动学习
```

## 模型训练

### 训练流程

```python
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

# 数据分割
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, stratify=y, random_state=42
)

# 交叉验证
model = RandomForestClassifier(n_estimators=100)
cv_scores = cross_val_score(model, X_train, y_train, cv=5)

# 模型训练
model.fit(X_train, y_train)

# 模型评估
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
```

### 超参数优化

| 方法 | 优点 | 缺点 |
|------|------|------|
| 网格搜索 | 全面 | 计算量大 |
| 随机搜索 | 高效 | 可能遗漏 |
| 贝叶斯优化 | 智能搜索 | 需要工具 |

### 贝叶斯优化示例

```python
from skopt import BayesSearchCV

param_space = {
    'n_estimators': (50, 500),
    'max_depth': (3, 20),
    'min_samples_split': (2, 20),
}

opt = BayesSearchCV(
    RandomForestClassifier(),
    param_space,
    n_iter=50,
    cv=5,
    n_jobs=-1
)
opt.fit(X_train, y_train)
```

## 模型评估

### 分类指标

```
混淆矩阵:
              预测正类  预测负类
实际正类        TP        FN
实际负类        FP        TN

准确率 = (TP+TN)/(TP+TN+FP+FN)
精确率 = TP/(TP+FP)  # 预测正类的准确性
召回率 = TP/(TP+FN)  # 实际正类的覆盖率
F1 = 2×P×R/(P+R)     # 精确率和召回率的调和平均
AUC-ROC = 曲线下面积  # 分类器整体性能
```

### 回归指标

| 指标 | 公式 | 含义 |
|------|------|------|
| MAE | Σ|y-ŷ|/n | 平均绝对误差 |
| MSE | Σ(y-ŷ)²/n | 均方误差 |
| RMSE | √MSE | 均方根误差 |
| R² | 1-SS_res/SS_tot | 解释方差比例 |

### 交叉验证

```
K折交叉验证:
┌───────────────────────┐
│ 测 │ 训 │ 训 │ 训 │ 训 │ → Fold 1
├───────────────────────┤
│ 训 │ 测 │ 训 │ 训 │ 训 │ → Fold 2
├───────────────────────┤
│ 训 │ 训 │ 测 │ 训 │ 训 │ → Fold 3
├───────────────────────┤
│ 训 │ 训 │ 训 │ 测 │ 训 │ → Fold 4
├───────────────────────┤
│ 训 │ 训 │ 训 │ 训 │ 测 │ → Fold 5
└───────────────────────┘

平均性能 = Σ(Fold_i)/K
```

## 模型解释

### 特征重要性

```
树模型特征重要性:
- 基于分裂次数
- 基于信息增益
- 基于排列重要性

线性模型:
- 系数绝对值
- 标准化系数
```

### SHAP值

```python
import shap

# 计算SHAP值
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)

# 全局解释
shap.summary_plot(shap_values, X_test)

# 局部解释
shap.force_plot(explainer.expected_value, 
                shap_values[0], 
                X_test.iloc[0])
```

### SHAP解释图

```
特征重要性排序:
↑ 特征A  ████████████████  +0.35
│ 特征B  ████████████      +0.28
│ 特征C  ████████          +0.15
│ 特征D  ████              +0.08
↓ 特征E  ██                +0.04

红色: 高特征值  蓝色: 低特征值
```

## 常见问题处理

### 类别不平衡

| 方法 | 描述 |
|------|------|
| 过采样 | SMOTE、ADASYN |
| 欠采样 | RandomUnderSampler |
| 类别权重 | class_weight='balanced' |
| 阈值调整 | 调整分类阈值 |

### 过拟合

```
症状: 训练集表现好，测试集表现差

解决方案:
├── 增加数据量
├── 正则化(L1/L2)
├── 交叉验证
├── 早停(Early Stopping)
├── Dropout(神经网络)
└── 集成方法
```

### 数据泄露

```
常见泄露来源:
├── 目标变量泄漏: 使用未来信息
├── 特征泄露: 包含目标信息
├── 时间泄露: 时间序列分割不当
└── 预处理泄露: 使用全部数据做转换

预防措施:
├── 先分割再预处理
├── 使用Pipeline
├── 检查特征与目标的相关性
└── 时间序列使用时间分割
```

## 使用示例

```
用户: 构建一个预测客户流失的模型

AI: 我将执行完整的ML工作流程：

## 数据概况
- 样本量: 10,000
- 特征数: 25
- 目标分布: 流失20%, 未流失80%

## 特征工程
- 数值特征: 标准化
- 类别特征: One-Hot编码
- 新特征: 客户生命周期、消费频次

## 模型比较(5折交叉验证)
| 模型 | AUC | F1 |
|------|-----|-----|
| Logistic | 0.78 | 0.52 |
| Random Forest | 0.85 | 0.63 |
| XGBoost | 0.87 | 0.66 |
| LightGBM | 0.86 | 0.65 |

## 最优模型: XGBoost
- 测试集AUC: 0.86
- 测试集F1: 0.64

## Top 5 特征重要性
1. 最近活跃天数: 0.28
2. 月消费金额: 0.18
3. 投诉次数: 0.12
4. 会员等级: 0.09
5. 使用时长: 0.08
```

## 🖥️ Python 工具

### 工具链

| # | 工具名称 | 功能描述 |
|---|----------|----------|
| 1 | — | 本技能暂无专用Python工具 |

### CLI用法

```bash
# 机器学习研究主要通过AI对话辅助和scikit-learn等库实现
python -c "from sklearn.ensemble import RandomForestClassifier; print('sklearn ready')"
```


## 🚫 绝对禁止原则

> **使用前必读**：以下原则是不可逾越的红线，违反将导致研究结论无效。

1. **禁止跳过研究伦理审查** — 未获IRB批准的实证研究不得用于发表
2. **禁止捏造或篡改数据** — 任何形式的数据造假均违反学术伦理
3. **禁止忽视研究局限性** — 必须在论文中诚实报告研究局限
4. **禁止剽窃他人研究成果** — 必须正确引用所有参考来源
5. **禁止选择性报告结果** — 阴性结果同样需要报告
6. **禁止使用不匹配的分析方法** — 必须根据研究问题选择合适方法

## 参考文献

1. Hastie, T., Tibshirani, R., & Friedman, J. (2009). *The Elements of Statistical Learning*. 2nd ed.
2. Goodfellow, I., Bengio, Y., & Courville, A. (2016). *Deep Learning*.
3. Molnar, C. (2022). *Interpretable Machine Learning*.
4. Zheng, A., & Casari, A. (2018). *Feature Engineering for Machine Learning*.

---

**技能版本**: 5.0.0  
**方法论标准**: Hastie et al. (2009)  
**创建时间**: 2026-03-15
