分类(classification)

这篇博客介绍了机器学习中的关键概念,包括损失函数,如0-1损失,用于衡量分类错误;贝叶斯分类器作为最优分类器,其在0-1损失下的分类误差最小;以及决策边界的概念,它定义了不同类别间的划分。此外,还提及了逻辑回归在分类问题中的应用,通过sigmoid函数限制预测值,并用极大似然估计来学习模型参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

损失函数

在分类中,使用一个 C × C C\times C C×C 的损失矩阵 L L L来表达损失函数,其中, C C C 指类别数。损失矩阵中的每个元素 L k l = L ( k , l ) L_{kl}=L(k,l) Lkl=L(k,l) 指将实际类别属于 k k k,但是将其分类到 l l l 的损失。常用的损失函数为 0 − 1 0-1 01 损失函,其中 L k l = { 1 , k ≠ l 0 , k = l \displaystyle L_{kl}=\left\{ \begin{aligned} 1, && k\neq l \\ 0, && k=l \end{aligned} \right. Lkl={1,0,k=lk=l

其中,一个单位损失发生在错误分类的情况下,即 L ( Y , G ( X ) ) = I ( Y ≠ G ( X ) ) = { 1 , Y ≠ G ( X ) 0 , Y = G ( X ) \displaystyle L(Y,G(X))=I(Y\neq G(X))=\left\{ \begin{aligned} 1, && Y\neq G(X) \\ 0, && Y= G(X) \end{aligned} \right. L(Y,G(X))=I(Y=G(X))={1,0,Y=G(X)Y=G(X)

而分类器 G G G 的预测损失/错误率是 E r r ( G ) = E [ L ( Y , G ( X ) ) ] = A v e r a g e { L ( y ( i ) , G ( x ( i ) ) ) , ∀ ( y ( i ) , x ( i ) ) } Err(G)=\mathrm E[L(Y,G(X))]=Average\{L(y^{(i)},G(\mathbf x^{(i)})),\forall (y^{(i)},\mathbf x^{(i)})\} Err(G)=E[L(Y,G(X))]=Average{L(y(i),G(x(i)))(y(i),x(i))}。最终目标是找到一个使得预测错误率最小的分类器。

贝叶斯分类器(Bayes classifier)

当给定 X = x X=\mathbf x X=x 时, Y = c Y=c Y=c 的条件概率为 p c ( x ) = P ( Y = c ∣ X = x ) \displaystyle p_c(\mathbf x)=P(Y=c|X=\mathbf x) pc(x)=P(Y=cX=x),其中 c = 1 , ⋯   , C c=1,\cdots,C c=1,,C

将样本 x \mathbf x x 分类到 c c c 的条件是: p c ( x ) ≥ p j ( x ) , ∀ j = 1 , ⋯   , C p_c(\mathbf x)\ge p_j(\mathbf x), \forall j=1,\cdots,C pc(x)pj(x),j=1,,C

贝叶斯分类器是 0-1损失下的最优分类器,相较于其他分类器有着最小的分类误差。

决策边界

考虑类别 k k k j j j,集合 { x : p k ( x ) = p j ( x ) } \{\mathbf x:p_k(\mathbf x)=p_j(\mathbf x)\} {x:pk(x)=pj(x)} 则为类别 k k k j j j 之间的 决策边界(decision boundary)
在这里插入图片描述
给定训练集 { ( y ( i ) , x ( i ) ) , i = 1 , ⋯   , n } \{(y^{(i)},\mathbf x^{(i)}),i=1,\cdots,n\} {(y(i),x(i)),i=1,,n},分类器 G G G经验误差(empirical error) e r r ‾ ( G ) = 1 n ∑ i I ( y ( i ) ≠ G ( x ( i ) ) ) \displaystyle \overline{err}(G)=\frac{1}{n}\sum_iI(y^{(i)}\neq G(\mathbf x^{(i)})) err(G)=n1iI(y(i)=G(x(i)))

逻辑回归(Logistic Regression)

在解决分类问题时,可以忽略 y ( i ) y^{(i)} y(i) 是离散值的事实,然后采用线性回归算法来预测当给定 x \mathbf x x 时 y 的值。但是,这样直接构造的方法效果很差。因此,对 0-1分类来说,需要将预测值 h θ ( x ) h_\theta(x) hθ(x) 限制到 [ 0 , 1 ] [0,1] [0,1] 之间,使得预测值有意义。

目标函数及sigmoid函数

h θ ( z ) = 1 1 + e − z = e z 1 + e z \displaystyle h_\theta(z)=\frac{1}{1+e^{-z}}=\frac{e^z}{1+e^z} hθ(z)=1+ez1=1+ezez
在这里插入图片描述

模型参数学习

将预测值 h θ ( x ) h_\theta(x) hθ(x) 限制到 [ 0 , 1 ] [0,1] [0,1] 之间,因此,以概率视角来看问题,使用 MLE(极大似然估计,maximum likelihood estimator) 来求解。
在这里插入图片描述

θ j : = θ j + α ⋅ ∑ i = 1 n ( y ( i ) − h θ ( x ( i ) ) ) ⋅ x j ( i ) \displaystyle \theta_j:=\theta_j+\alpha\cdot\sum^n_{i=1}(y^{(i)}-h_\theta(x^{(i)}))\cdot x^{(i)}_j θj:=θj+αi=1n(y(i)hθ(x(i)))xj(i)

### 使用 `classification_report` 进行二分类评估 对于二分类问题,`sklearn.metrics.classification_report` 提供了一种简洁的方式来生成模型性能的详细报告。该函数接受真实标签和预测标签作为输入参数,并返回一系列重要的分类指标。 #### 函数签名 ```python from sklearn.metrics import classification_report classification_report( y_true, # 真实的目标值序列 y_pred, # 预测的目标值序列 labels=None, # 类别的索引列表,默认为None表示自动推断 target_names=None, # 类别名称字符串列表,默认为None sample_weight=None,# 样本权重数组,默认为None digits=2 # 输出浮点数精度位数,默认两位小数 ) ``` #### 各项指标说明 - **精确率(Precision)**:衡量的是检索出来的样本中有多少是正确的。计算方式为真正例除以所有被预测成正类的数量[^1]。 - **召回率(Recall)**:指的是实际为正类中被正确识别的比例。其定义为真正例占总实际正类数量的比例[^2]。 - **F1分数(F1-score)**:这是精确率和召回率的调和平均数,提供了两者之间平衡的一个度量标准[^3]。 - **支持(Support)**:指每个类别中的实例总数,在不平衡数据集中尤为重要[^4]。 #### 实际应用案例 下面是一个简单的例子来展示如何使用这个功能: ```python from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report # 创建模拟数据集 X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=42) # 划分训练集测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42) # 训练逻辑回归模型 clf = LogisticRegression(random_state=42).fit(X_train, y_train) # 获取预测结果并打印分类报告 predictions = clf.predict(X_test) print(classification_report(y_test, predictions)) ``` 此代码片段展示了完整的流程——从创建数据到最终输出详细的分类性能报告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值