二分类与多分类

一、任务定义与核心区别

维度 二分类 多分类(K类,K≥3)
输出空间 两个互斥类别(正/负类) K个互斥类别(如猫/狗/鸟)
输出层设计 1个神经元 + Sigmoid(概率) K个神经元 + Softmax(概率分布)
损失函数 二元交叉熵(Binary Cross-Entropy) 多元交叉熵(Categorical Cross-Entropy)
典型场景 垃圾邮件检测、疾病诊断 手写数字识别、新闻主题分类

二、模型选择与调整

1. 二分类常用模型
  • 线性模型:逻辑回归(Logistic Regression) + 正则化(L1/L2)。

  • 树模型:随机森林(Random Forest)、梯度提升树(XGBoost)------ 直接输出概率。

  • 深度学习:

    • 单输出神经元 + Sigmoid。

    • 特征提取器(如CNN/BERT) + 全连接层。

2. 多分类常用模型
  • 原生多分类模型:

    • 决策树、随机森林、XGBoost(直接支持多类)。

    • 深度学习:K维输出 + Softmax。

三、评估指标对比

1. 二分类指标
  • 基础指标:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1-Score。

  • 阈值相关:

    • ROC曲线(Receiver Operating Characteristic)
2. 多分类指标
  • 加权平均(Weighted):按类别样本数加权计算。

四、损失函数与输出层实现

1. 二分类实现
python 复制代码
model = nn.Sequential(
    nn.Linear(input_dim, 1),  # 单神经元输出
    nn.Sigmoid()              # 映射到[0,1]
)
loss_fn = nn.BCELoss()        # 二元交叉熵

2. 多分类实现

python 复制代码
model = nn.Sequential(
    nn.Linear(input_dim, K),  # K个神经元
    nn.Softmax(dim=1)         # 输出概率分布
)
loss_fn = nn.CrossEntropyLoss()  # 注:PyTorch的CrossEntropyLoss已含Softmax

注意:

  • 标签格式:二分类用 float(如0.0/1.0),多分类用 long 型类别索引(如0,1,2...)

五、类别不平衡问题处理

1. 重采样(Resampling)
  • 过采样:对小类复制或生成合成样本(如SMOTE)。

  • 欠采样:对大类随机删除样本(可能丢失信息)。

2. 损失函数加权
  • 二分类 :BCEWithLogitsLoss(pos_weight=torch.tensor([10.0]))(提高正类权重)。

  • 多分类 :CrossEntropyLoss(weight=torch.tensor([1.0, 5.0, 3.0]))(按类别权重)。

3. 阈值调整(仅二分类)
  • 默认阈值0.5可能不最优,可通过ROC曲线选择最佳阈值。
相关推荐
汤姆宝库2 小时前
世界模型深拆:视频生成、潜在模拟与物理直觉
人工智能
weixin_468466855 小时前
从“看懂”到“做到”:视觉-语言-动作模型如何让机器人真正执行指令
人工智能·ai·机器人·大语言模型·前沿科技
朋友圈自动点赞工具5 小时前
科学AI插件化:从蛋白质结构到古籍修复
人工智能
龙粤GEO6 小时前
实体Entity在GEO中代表什么含义
人工智能
听风吹等浪起7 小时前
第26章:ViT+InceptionDW+FocalLoss改进|CT骨折影像二分类完整Pytorch实现(含PyQt5推理GUI)
pytorch·qt·分类
剑雨巍巍7 小时前
AI Agent面试之基础概念
人工智能
微帧Visionular7 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
武子康7 小时前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
云智慧AIOps社区7 小时前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人
EnCi Zheng7 小时前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用