SVC线性核模型coef_系数的计算原理与求解方法咨询
coef_的计算机制解析 一、coef_的本质
线性核SVC的核心是找到一个分类超平面划分两类样本,超平面的数学表达式为:
$$\boldsymbol{w} \cdot \boldsymbol{x} + b = 0$$
其中coef_就是这个超平面的权重向量$\boldsymbol{w}$,向量里的每个元素对应输入特征的权重值,直接决定了对应特征对分类结果的影响方向和强弱。
二、coef_的具体计算逻辑
线性SVC的训练过程是求解一个带约束的凸优化问题,目标是在最小化超平面复杂度(即$\frac{1}{2}|\boldsymbol{w}|^2$)的同时,尽可能减少误分类样本(通过正则化参数$C$控制惩罚力度)。
优化问题的完整形式:
$$\min_{\boldsymbol{w}, b, \boldsymbol{\xi}} \frac{1}{2}|\boldsymbol{w}|^2 + C\sum_{i=1}^n \xi_i$$
约束条件:
$$y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0, \forall i$$
其中:
- $C$是你代码中设置的参数(值为1.0),$C$越大,对误分类样本的惩罚越重;
- $\xi_i$是松弛变量,允许少量样本“越过”分类边界,避免模型过拟合;
通过拉格朗日对偶变换求解后,最终的权重向量$\boldsymbol{w}$(即coef_)是所有支持向量的线性组合:
$$\boldsymbol{w} = \sum_{i \in S} \alpha_i y_i \boldsymbol{x}_i$$
这里:
- $S$是训练集中被选为“支持向量”的样本集合(这些样本是距离超平面最近的点,直接决定超平面位置);
- $\alpha_i$是拉格朗日乘数,取值范围为$[0, C]$,仅支持向量对应的$\alpha_i$不为0;
- $y_i$是样本的标签值(通常为+1或-1);
- $\boldsymbol{x}_i$是支持向量的特征向量。
简单来说,coef_里每个特征的权重,就是把所有支持向量中该特征的值,分别乘以对应的$\alpha_i$和$y_i$,再将这些乘积求和得到的结果。
三、结合你的代码与结果说明
你的训练代码:
# SVM dengan kernel Linear model = svm.SVC(kernel='linear', C=1.0).fit(x_train, y_train) coef = model.coef_ # Print co-efficient dari fitur for i in range(0, nFeatures): print(samples.columns[i],":", coef[0][i])
输出的系数结果:
PAY_0 : 0.22633744855967078 PAY_2 : 0.26406035665294925 PAY_3 : -0.07544581618655694 PAY_4 : -0.11316872427983539 PAY_5 : -0.22633744855967078 PAY_6 : -0.1886145404663923
从结果可直接解读:
PAY_0和PAY_2系数为正:这两个特征的值越大,样本被判定为正类的概率越高;PAY_3至PAY_6系数为负:这些特征的值越大,样本被判定为负类的概率越高;- 系数绝对值越大,对应特征对分类结果的影响越强,比如
PAY_2是对你的分类任务影响最大的特征。
内容的提问来源于stack exchange,提问作者Timotius Ivander04

