Python scikit学习中的样本权重和类权重选项之间有什么区别?

Python scikit学习中的样本权重和类权重选项之间有什么区别?,python,machine-learning,scikit-learn,classification,Python,Machine Learning,Scikit Learn,Classification,我有班级不平衡的问题,我想用对成本敏感的学习方法来解决这个问题 欠采样和过采样 为类指定权重以使用修改的损失函数 问题 Scikit learn有两个选项,称为类权重和样本权重。样本重量是否实际执行选项2)和类别重量选项1)。选项2)是否为处理等级不平衡的推荐方法 这是类似的概念,但通过样本权重,你可以迫使估计器更多地关注某些样本,通过类权重,你可以迫使估计器关注某些特定的类。样本权重=0或类权重=0基本上意味着估计器在学习过程中根本不需要考虑这些样本/类。因此,如果该类的class_weigh

我有班级不平衡的问题,我想用对成本敏感的学习方法来解决这个问题

  • 欠采样和过采样
  • 为类指定权重以使用修改的损失函数
  • 问题


    Scikit learn有两个选项,称为类权重和样本权重。样本重量是否实际执行选项2)和类别重量选项1)。选项2)是否为处理等级不平衡的推荐方法

    这是类似的概念,但通过样本权重,你可以迫使估计器更多地关注某些样本,通过类权重,你可以迫使估计器关注某些特定的类。样本权重=0或类权重=0基本上意味着估计器在学习过程中根本不需要考虑这些样本/类。因此,如果该类的class_weight=0,分类器(例如)将永远不会预测某个类。如果某个样本权重/类别权重大于其他样本/类别的样本权重/类别权重,估计器将首先尝试最小化该样本/类别的误差。您可以同时使用用户定义的示例权重和类权重

    如果您想通过简单的克隆/删除来对训练集进行欠采样/过采样-这将等于增加/减少相应的样本权重/类权重


    在更复杂的情况下,您也可以尝试人工生成样本,例如。

    sample\u weight
    class\u weight
    具有类似的功能,即让您的估计器更加关注某些样本

    实际样本重量将是
    样本重量*类别重量的重量

    这与欠采样/过采样的目的相同,但行为可能不同:假设您有一个随机选取样本的算法(如在随机林中),则是否过采样很重要

    总而言之:

    class_-weight
    sample_-weight
    都是do2),选项2)是处理类不平衡的一种方法。我不知道哪种方法是普遍推荐的,我会尝试1)、2)和1)+2)针对您的具体问题,看看哪种方法最有效。

    我认为这在很大程度上取决于问题。你能提供更多关于你的数据有多不平衡的信息吗?也许你已经尝试过了?只是想澄清一下,在这个答案中“/”的意思是“斜杠”,而不是“除法”。很好的解释。@DataMan,是的,这是真的。我同意sample\u weight/class\u weight=0看起来很奇怪。@IbraimGaniev假设我有一个数据集,有10万个样本。99%为0,1%为1。如何指定此数据的样本权重?是1:100的比例还是别的什么<代码>clf.fit(X,y,样本重量=无)[来源]和scikit文档说明:
    每个样本重量。按样本重新缩放C。更高的权重迫使分类器更加强调这些点。
    我不明白在这段代码中,作为值实际写什么:
    sameple_weight={0.01,1.90}
    还是它必须是一个向量?如果是,怎么做?关于SMOTE的一个警告:如果样本太小,或者如果特征重叠,则无法可靠地生成样本。@Idrier假设我有一个数据集,有100k个样本。99%为0,1%为1。如何指定此数据的样本权重?是1:100的比例还是别的什么<代码>clf.fit(X,y,样本重量=无)[来源]和scikit文档说明:
    每个样本重量。按样本重新缩放C。更高的权重迫使分类器更加强调这些点。
    我不明白在这段代码中,作为值实际写什么:
    sameple_weight={0.01,1.90}
    还是它必须是一个向量?如果是这样,怎么办?@Chuck我也和你一样困惑。我很想知道适用于样本权重和班级权重计算的精确公式,Idirer给出了一个很好的公式示例,但我也在寻找一个像你的问题这样的实际示例。