机器学习知识点梳理(回归模型、分类模型、聚类模型、评估方法)-思维导图

机器学习知识点梳理(回归模型、分类模型、聚类模型、评估方法)-思维导图


• 回归模型:线性回归、决策树、SVM(可以,效果差)

• 分类模型:逻辑回归、决策树、SVM、朴素贝叶斯(只能分类)

• 聚类模型:kmeans(基于原型)、DBSCAN(基于密度)、凝聚层次(基于层次)

• 评估方法:

◦ 回归问题:R2(综合指标)、均方误差(损失函数)

◦ 分类问题:查准率(评估误检)、召回率(评估漏检)、F1(综合评估前两者)

◦ 聚类问题:轮廓系数


复制代码
═══════════════════════════════════════════════════════════════════
【一】回归问题 Regression
═══════════════════════════════════════════════════════════════════

回归 (Regression)
│
├─ 1. 线性回归 (Linear Regression)
│   ├─ 简单线性回归: y = wx + b
│   │   └─ API: lm.LinearRegression()
│   ├─ 多项式回归: y = w₀ + w₁x + w₂x² + ... + wₙxⁿ
│   │   └─ API: pl.make_pipeline(sp.PolynomialFeatures(n), lm.LinearRegression())
│   ├─ 岭回归 (Ridge): E = MSE + λ||w||₂²
│   │   └─ API: lm.Ridge(alpha=200, max_iter=1000)
│   └─ Lasso回归: E = MSE + λ||w||₁
│       └─ API: lm.Lasso(alpha=0.5, max_iter=1000)
│
├─ 2. 决策树回归 (Decision Tree Regressor)
│   ├─ 特点: 非线性,可解释性强
│   └─ API: st.DecisionTreeRegressor(max_depth=4)
│
├─ 3. SVM回归 (Support Vector Regression)
│   ├─ 特点: 效果较差,不推荐
│   └─ API: svm.SVR(kernel='rbf', C=1.0)
│
├─ 评估指标 📊
│   ├─ R² 决定系数 (主要): sm.r2_score(y_true, y_pred)
│   │   └─ 范围: [0, 1],越接近1越好
│   └─ 均方误差 MSE (辅助): sm.mean_squared_error(y_true, y_pred)
│       └─ 越小越好
│
└─ 核心概念
    ├─ 损失函数: E = (1/2)Σ(y - y')²
    ├─ 梯度下降: w = w - η * ∂E/∂w
    ├─ 学习率 η: 控制参数更新步长
    ├─ 过拟合: 训练集准确但测试集差 → 正则化、减少特征
    └─ 欠拟合: 训练测试都差 → 增加特征、提高复杂度


═══════════════════════════════════════════════════════════════════
【二】分类问题 Classification
═══════════════════════════════════════════════════════════════════

分类 (Classification)
│
├─ 1. 逻辑回归 (Logistic Regression)
│   ├─ 特点: 二分类和多分类
│   ├─ Sigmoid函数: σ(z) = 1/(1+e⁻ᶻ)
│   └─ API: lm.LogisticRegression(solver='liblinear', C=1.0)
│
├─ 2. 决策树分类 (Decision Tree Classifier)
│   ├─ 划分标准: 
│   │   ├─ 信息熵 (entropy)
│   │   └─ 基尼系数 (gini)
│   └─ API: st.DecisionTreeClassifier(max_depth=4, criterion='entropy')
│
├─ 3. 支持向量机 (SVM)
│   ├─ 核函数:
│   │   ├─ 线性核 (linear): kernel='linear'
│   │   ├─ 多项式核 (poly): kernel='poly', degree=3
│   │   └─ 径向基核 (rbf): kernel='rbf', gamma='auto' ⭐推荐
│   ├─ 参数:
│   │   ├─ C: 惩罚参数,控制误分类容忍度
│   │   └─ gamma: 核系数,影响决策边界复杂度
│   └─ API: svm.SVC(kernel='rbf', C=1.0, gamma='auto')
│
├─ 4. 朴素贝叶斯 (Naive Bayes) ⚠️ 只能分类
│   ├─ 基于贝叶斯定理
│   ├─ 假设特征独立
│   └─ API: nb.GaussianNB()
│
├─ 评估指标 📊
│   ├─ 混淆矩阵 (Confusion Matrix)
│   │   └─ sm.confusion_matrix(y_true, y_pred)
│   │       ┌──────┬──────┐
│   │       │  TN  │  FP  │
│   │       ├──────┼──────┤
│   │       │  FN  │  TP  │
│   │       └──────┴──────┘
│   │
│   ├─ 查准率 Precision (评估误检) ⭐
│   │   ├─ 公式: TP / (TP + FP)
│   │   └─ API: sm.precision_score(y_true, y_pred, average='macro')
│   │
│   ├─ 召回率 Recall (评估漏检) ⭐
│   │   ├─ 公式: TP / (TP + FN)
│   │   └─ API: sm.recall_score(y_true, y_pred, average='macro')
│   │
│   └─ F1得分 (综合评估) ⭐⭐⭐
│       ├─ 公式: 2 * P * R / (P + R)
│       └─ API: sm.f1_score(y_true, y_pred, average='macro')
│
└─ 数据集划分
    └─ ms.train_test_split(X, y, test_size=0.25, random_state=7)


═══════════════════════════════════════════════════════════════════
【三】聚类问题 Clustering
═══════════════════════════════════════════════════════════════════

聚类 (Clustering) - 无监督学习
│
├─ 1. K-Means (基于原型聚类) ⭐最常用
│   ├─ 特点:
│   │   ├─ ✅ 简单高效,收敛快
│   │   ├─ ❌ 需要事先指定K值
│   │   ├─ ❌ 对初始中心敏感
│   │   └─ ❌ 对噪声敏感
│   ├─ 适用场景: 数据有明显中心,已知聚类数
│   ├─ API: sc.KMeans(n_clusters=4)
│   ├─ 获取结果:
│   │   ├─ 聚类标签: model.labels_
│   │   └─ 聚类中心: model.cluster_centers_
│   └─ 核心思想:
│       ├─ Step1: 随机选择K个中心
│       ├─ Step2: 计算每个样本到各中心的距离
│       ├─ Step3: 将样本分配到最近的中心
│       ├─ Step4: 重新计算各簇的几何中心
│       └─ Step5: 重复2-4直到收敛
│
├─ 2. DBSCAN (基于密度聚类)
│   ├─ 参数:
│   │   ├─ eps: 邻域半径
│   │   └─ min_samples: 核心点最小样本数
│   ├─ 样本分类:
│   │   ├─ 核心点 (Core): 邻域内样本数 >= min_samples
│   │   ├─ 边界点 (Border): 邻域不足但能归入某簇
│   │   └─ 噪声点 (Noise): 无法归入任何簇,标签为-1
│   ├─ 特点:
│   │   ├─ ✅ 不需要指定K值
│   │   ├─ ✅ 能处理噪声和异常点
│   │   ├─ ✅ 能识别任意形状的簇
│   │   └─ ❌ 对参数敏感
│   ├─ 适用场景: 数据稠密无明显中心,噪声多,未知K
│   ├─ API: sc.DBSCAN(eps=0.8, min_samples=5)
│   └─ 获取结果:
│       ├─ 聚类标签: model.labels_
│       └─ 核心样本索引: model.core_sample_indices_
│
├─ 3. 凝聚层次聚类 (Agglomerative)
│   ├─ 特点:
│   │   ├─ ✅ 无需初始中心
│   │   ├─ ✅ 对中心不明显的数据效果好
│   │   ├─ ❌ 需要指定聚类数
│   │   └─ ❌ 无法进行预测
│   ├─ 距离计算方式 (linkage):
│   │   ├─ ward: 方差最小化(默认)
│   │   ├─ average: 平均距离
│   │   └─ complete: 最大距离
│   ├─ 适用场景: 中心特征不明显
│   └─ API: sc.AgglomerativeClustering(n_clusters=4, linkage='ward')
│
├─ 评估指标 📊
│   └─ 轮廓系数 (Silhouette Score) ⭐⭐⭐
│       ├─ 公式: S(i) = (b(i) - a(i)) / max(b(i), a(i))
│       │   ├─ a(i): 样本i到同簇其他点的平均距离
│       │   └─ b(i): 样本i到最近其他簇所有点的平均距离
│       ├─ 范围: [-1, 1]
│       │   ├─ 接近 1: 聚类效果好(内密外疏)
│       │   ├─ 接近 0: 聚类有重叠
│       │   └─ 接近 -1: 聚类效果差
│       └─ API: sm.silhouette_score(X, labels, metric='euclidean')
│
└─ 距离度量
    ├─ 欧式距离: d = √Σ(xi - yi)²
    ├─ 曼哈顿距离: d = Σ|xi - yi|
    └─ 闵可夫斯基距离: d = (Σ|xi - yi|ᵖ)^(1/p)


═══════════════════════════════════════════════════════════════════
【四】数据预处理 Data Preprocessing
═══════════════════════════════════════════════════════════════════

数据预处理
│
├─ 1. 标准化 (均值移除)
│   ├─ 目标: 均值=0, 标准差=1
│   ├─ 作用: 消除量纲影响
│   └─ API: sp.scale(data) 或 sp.StandardScaler()
│
├─ 2. 范围缩放
│   ├─ 目标: 缩放到指定范围 [0, 1]
│   └─ API: sp.MinMaxScaler(feature_range=(0, 1))
│
├─ 3. 归一化
│   ├─ L1归一化: 除以绝对值之和
│   ├─ L2归一化: 除以平方和的平方根
│   └─ API: sp.normalize(data, norm='l1' or 'l2')
│
├─ 4. 二值化
│   ├─ 根据阈值转换为0/1
│   └─ API: sp.Binarizer(threshold=60)
│
├─ 5. 独热编码 (可逆)
│   ├─ 将分类特征转为二进制向量
│   ├─ API: sp.OneHotEncoder(sparse=False, dtype='int32')
│   └─ 解码: encoder.inverse_transform(encoded_data)
│
└─ 6. 标签编码
    ├─ 将字符串标签转为数字
    ├─ API: sp.LabelEncoder()
    └─ 解码: encoder.inverse_transform(encoded_data)


═══════════════════════════════════════════════════════════════════
【五】模型评估与优化
═══════════════════════════════════════════════════════════════════

模型评估与优化
│
├─ 1. 数据集划分
│   ├─ 训练集 vs 测试集
│   │   ├─ 常用比例: 9:1, 8:2, 7:3
│   │   └─ API: ms.train_test_split(X, y, test_size=0.25, random_state=7)
│   │
│   └─ 交叉验证 (Cross Validation) ⭐推荐
│       ├─ K折交叉验证: 将数据分为K份,轮流做测试集
│       ├─ 优点: 充分利用小数据集
│       └─ API: ms.cross_val_score(model, X, y, cv=5, scoring='f1_weighted')
│
├─ 2. 超参数优化
│   ├─ 网格搜索 (Grid Search) ⭐⭐⭐
│   │   ├─ 原理: 穷举所有参数组合
│   │   ├─ API: ms.GridSearchCV(model, params, cv=5)
│   │   ├─ 获取最优参数: model.best_params_
│   │   └─ 获取最优得分: model.best_score_
│   │
│   └─ 随机搜索 (Random Search)
│       └─ 原理: 在参数空间随机采样
│
├─ 3. 验证曲线 (Validation Curve)
│   ├─ 作用: 评估不同超参数值对模型的影响
│   └─ API: ms.validation_curve(model, X, y, 'param_name', param_range, cv=5)
│
├─ 4. 学习曲线 (Learning Curve)
│   ├─ 作用: 评估不同训练集大小对模型的影响
│   └─ API: ms.learning_curve(model, X, y, train_sizes=np.linspace(0.1, 1, 10), cv=5)
│
└─ 5. 常见问题诊断
    ├─ 过拟合 (Overfitting)
    │   ├─ 表现: 训练集准确率高,测试集准确率低
    │   ├─ 原因: 模型过于复杂,学习了噪声
    │   └─ 解决:
    │       ├─ 正则化 (L1/L2)
    │       ├─ 减少特征
    │       ├─ 降低模型复杂度
    │       └─ 增加训练数据
    │
    └─ 欠拟合 (Underfitting)
        ├─ 表现: 训练集和测试集准确率都低
        ├─ 原因: 模型过于简单
        └─ 解决:
            ├─ 增加特征
            ├─ 提高模型复杂度
            └─ 增加训练数据


═══════════════════════════════════════════════════════════════════
【六】完整机器学习流程
═══════════════════════════════════════════════════════════════════

机器学习项目完整流程
│
├─ Step 1: 数据收集 📂
│   ├─ 手工采集
│   ├─ 设备自动采集
│   ├─ 爬虫获取
│   └─ 公开数据集
│
├─ Step 2: 数据清洗 🧹
│   ├─ 去除无效数据
│   ├─ 处理缺失值
│   ├─ 去除重复数据
│   └─ 数据格式统一
│
├─ Step 3: 数据预处理 🔧
│   ├─ 标准化/归一化
│   ├─ 特征编码
│   ├─ 特征选择
│   └─ 数据集划分
│
├─ Step 4: 选择模型 🎯
│   ├─ 根据问题类型选择
│   │   ├─ 回归 → LinearRegression, Ridge, Lasso
│   │   ├─ 分类 → SVM, DecisionTree, NaiveBayes
│   │   └─ 聚类 → KMeans, DBSCAN
│   └─ 考虑数据特点
│
├─ Step 5: 训练模型 🏋️
│   ├─ model.fit(train_x, train_y)
│   ├─ 调整超参数
│   └─ 防止过拟合/欠拟合
│
├─ Step 6: 模型评估 📊
│   ├─ 使用测试集评估
│   ├─ 交叉验证
│   └─ 根据评估指标判断
│       ├─ 回归: R², MSE
│       ├─ 分类: F1, Precision, Recall
│       └─ 聚类: Silhouette Score
│
├─ Step 7: 模型优化 ⚡
│   ├─ 网格搜索最优参数
│   ├─ 特征工程
│   └─ 模型融合
│
├─ Step 8: 模型保存 💾
│   └─ pickle.dump(model, file)
│
└─ Step 9: 模型部署与维护 🚀
    ├─ 加载模型: pickle.load(file)
    ├─ 实时预测
    └─ 定期更新模型


═══════════════════════════════════════════════════════════════════
【七】快速查询手册
═══════════════════════════════════════════════════════════════════

┌────────────────────────────────────────────────────────────────┐
│  问题类型选择指南                                               │
├────────────────────────────────────────────────────────────────┤
│ 预测连续值?        → 回归问题                                 │
│ 预测离散类别?      → 分类问题                                 │
│ 数据无标签分组?    → 聚类问题                                 │
└────────────────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────────┐
│  模型选择建议                                                   │
├────────────────────────────────────────────────────────────────┤
│ 数据呈线性关系?           → LinearRegression                  │
│ 数据呈非线性关系?         → PolynomialFeatures + LR           │
│ 需要可解释性?             → DecisionTree                      │
│ 小数据集分类?             → SVM                               │
│ 文本分类?                 → NaiveBayes                        │
│ 已知聚类数且有中心?       → KMeans                            │
│ 噪声多形状不规则?         → DBSCAN                            │
│ 中心不明显?               → AgglomerativeClustering           │
└────────────────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────────┐
│  评估指标速查                                                   │
├────────────────────────────────────────────────────────────────┤
│ 回归问题:                                                      │
│   R² 决定系数              [0,1] 越接近1越好                   │
│   均方误差 MSE             越小越好                            │
│                                                                 │
│ 分类问题:                                                      │
│   查准率 Precision         重视准确性(如推荐系统)            │
│   召回率 Recall            重视完整性(如逃犯检测)            │
│   F1得分                   综合评估 ⭐推荐                      │
│                                                                 │
│ 聚类问题:                                                      │
│   轮廓系数                 [-1,1] 越接近1越好                  │
└────────────────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────────┐
│  常用代码模板                                                   │
├────────────────────────────────────────────────────────────────┤
│ # 导入常用库                                                    │
│ import numpy as np                                              │
│ import sklearn.linear_model as lm                              │
│ import sklearn.metrics as sm                                   │
│ import sklearn.model_selection as ms                           │
│                                                                 │
│ # 划分数据集                                                    │
│ train_x, test_x, train_y, test_y = ms.train_test_split(        │
│     X, y, test_size=0.25, random_state=7)                      │
│                                                                 │
│ # 训练模型                                                      │
│ model = lm.LinearRegression()                                  │
│ model.fit(train_x, train_y)                                    │
│                                                                 │
│ # 预测评估                                                      │
│ pred_y = model.predict(test_x)                                 │
│ score = sm.r2_score(test_y, pred_y)                            │
└────────────────────────────────────────────────────────────────┘


═══════════════════════════════════════════════════════════════════
【八】重要概念速记卡
═══════════════════════════════════════════════════════════════════

📌 机器学习三要素:
   ├─ 模型 (Model): 数学函数 y = f(x)
   ├─ 策略 (Strategy): 损失函数最小化
   └─ 算法 (Algorithm): 梯度下降等优化算法

📌 有监督 vs 无监督:
   ├─ 有监督: 数据有标签 (回归、分类)
   └─ 无监督: 数据无标签 (聚类、降维)

📌 偏差-方差权衡:
   ├─ 高偏差 = 欠拟合 → 模型太简单
   └─ 高方差 = 过拟合 → 模型太复杂

📌 L1 vs L2 正则化:
   ├─ L1: ||w||₁ = Σ|w| → 特征选择,产生稀疏解
   └─ L2: ||w||₂ = √(Σw²) → 防止过拟合,权重衰减

📌 核函数作用:
   └─ 将低维线性不可分数据映射到高维线性可分

📌 聚类数量选择:
   ├─ 肘部法则 (Elbow Method)
   ├─ 轮廓系数法
   └─ 业务需求
相关推荐
Maxwell_li12 小时前
机器学习知识点梳理(回归模型、分类模型、聚类模型、评估方法)
机器学习·分类·回归·学习方法·聚类·改行学it
咚咚王者2 小时前
人工智能之核心基础 机器学习 第三章 线性回归与逻辑回归
人工智能·机器学习·线性回归
540_5403 小时前
ADVANCE Day31
人工智能·python·机器学习
深度学习实战训练营3 小时前
结合 Swin Transformer 与 LSTM 的残差自回归模型,用于高精度光学波前时序预测与相位重建
回归·lstm·transformer
Das13 小时前
【机器学习】02_线性模型
人工智能·机器学习
yongui478343 小时前
基于BP_Adaboost的分类器和RBF神经网络回归的实现方法
人工智能·神经网络·回归
adjust25864 小时前
day 46
人工智能·机器学习·numpy
兜兜转转了多少年4 小时前
《Python 应用机器学习:代码实战指南》笔记2 从0理解机器学习 —— 核心概念全解析
笔记·python·机器学习
生信碱移5 小时前
神经网络单细胞预后分析:这个方法直接把 TCGA 预后模型那一套迁移到单细胞与空转数据上了!竟然还能做模拟敲除与预后靶点筛选?!
人工智能·深度学习·神经网络·算法·机器学习·数据挖掘·数据分析