【问题标题】:how to increase precision as well as recall in svm for highly imbalanced data set如何提高高度不平衡数据集的支持向量机的精度和召回率
【发布时间】:2019-12-27 08:54:48
【问题描述】:

我有形状高度不平衡的贷款数据集: (116058, 29)

如何提高准确率和召回率 目标柱 m13 计数器({1: 636, 0: 115422})

我曾经在训练集和测试集中拆分数据:

X_train,X_test,y_train,y_test = train_test_split(X,y,train_size = 0.8,random_state = 100,stratify = y)

然后用svm进行分类:

svc = SVC(class_weight = {1:0.95,0:0.05},kernel='rbf')
svc.fit(X_train,y_train)
y_pred = svc.predict(X_test)

我得到了 0.54 的精度和 0.55 的召回率

我也尝试使用不同的 C 和 gamma 值进行网格搜索,上面的代码给出了最好的结果

svc = SVC(class_weight = {1:0.95,0:0.05},kernel='rbf')
svc.fit(X_train,y_train)
y_pred = svc.predict(X_test)

有什么方法可以提高准确率和召回率?

【问题讨论】:

    标签: python-3.x machine-learning svm


    【解决方案1】:

    首先让我评论你的预测基线,如果我理解你是正确的,你有 636 类 1 和 115422 类 0。

    如果您将构建一个始终预测 0 类的预测模型,那么您的精度将是(如果 0 类是您的真实类):

    115422/(115422+636)=0,9945 
    

    和你的回忆(如果 0 级是你真正的班级): 1 如果类 1 是您的真实类,则精度为:0

    如您所见,调整它是一项艰巨的任务。一般来说,有关于这个主题的书籍,调整它会非常困难。但是您的目标应该是正确预测第 1 类!目标应该是识别算法中的每个类 1。例如,您可以尝试针对您的敏感性,以下是一些目标:https://en.wikipedia.org/wiki/Precision_and_recall

    你应该做的,确保你的训练和测试集的目标是 1 类。

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 2023-02-10
      • 2019-08-18
      • 2012-09-14
      • 2021-06-16
      • 2016-06-11
      • 2020-04-29
      • 2017-04-19
      • 2014-09-11
      相关资源
      最近更新 更多