机器学习任务中的加权类

时间:2016-02-08 18:57:35

标签: r machine-learning r-caret

我正在尝试使用插入符号进行机器学习任务(二进制分类),并想知道是否有办法合并有关“不确定”类的信息,或者以不同方式对类进行加权。

作为一个例子,我剪切并粘贴了一些使用Sonar数据集的插入符主页的代码(占位符代码 - 可以是任何东西):

library(mlbench)
testdat <- get(data(Sonar))
set.seed(946)
testdat$Source<-as.factor(sample(c(LETTERS[1:6],LETTERS[1:3]),nrow(testdat),replace = T))

得到以下特性:

summary(testdat$Source)  
 A  B  C  D  E  F   
49 51 44 17 28 19   

在我确定模型后,我将继续进行典型的训练,调整和测试程序。

我在这里添加的是源的另一个因子列,或相应的“类”来自哪里。作为一个任意的例子,说这些是6个不同的人,他们使用稍微不同的方法来指定“类”,我想更加重视A的分类方法而不是B,但是比C等更重要。

实际数据是这样的,其中存在类不平衡,包括真/假,M / R或任何类,以及这些来源。从我发现的小插图和例子中,至少前者我会通过在调优期间使用像ROC这样的度量来解决,但至于如何合并后者,我不确定。

  • 按源分隔原始数据并循环显示因子 一次一个,使用当前级别来构建模型和 剩下的数据来测试它

  • 而不是分类,将其转换为混合分类/回归问题,我将源的行列用作我想要建模的。如果A被认为是最好的,则“A阳性”将得到+6,“A阴性”,得分为-6等等。然后对这些值执行回归拟合,忽略Class列。

有什么想法?我对类和权重进行的每次搜索似乎都引用了类不平衡问题,但假设分类本身是完美的(或者是建模的标准)。尝试合并这些信息甚至是不合适的,我应该只包括所有内容并忽略来源?第一个计划的一个潜在问题是,较小的源占大约几百个实例,而较大的源则超过10,000个,所以我可能也担心建立在较小的集合上的模型不会像一个一样。基于更多数据。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:1)

“因为重要性”加权和加权“因为不平衡”之间没有区别。这些设置完全相同,它们都指的是“我应该多大程度地惩罚模型以便从特定类别中分类错误”。因此,您不需要任何回归(并且不应该这样做!这是完全明确的分类问题,而您只是过度思考它),而只是提供样本权重,这就是全部。插入符号中有许多模型接受这种设置,包括glmnet,glm,cforest等。如果你想使用svm,你应该更改包(因为ksvm不支持这样的东西),例如https://cran.r-project.org/web/packages/gmum.r/gmum.r.pdf(对于样本或班级加权)或https://cran.r-project.org/web/packages/e1071/e1071.pdf(如果是班级加权)