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

作为说明,我从插入符号主页中剪切了一些代码,并与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个不同的人,他们使用略有不同的方法来指定“类别”,并且我想比B更加重视A的分类方法,但比C少。

实际数据是这样的,在真/假,M / R或任何类别之间以及在这些来源之间都存在类别失衡。从我发现的小插曲和例子中,至少我会通过在调整过程中使用ROC这样的指标来解决前者,但是对于如何合并后者,我不确定。


按来源分离原始数据并循环遍历该因子
使用当前级别来一次建立一个模型并一次
其余数据进行测试
而不是分类,而是将其变成混合分类/回归问题,在此问题中,我将源的等级用作要建模的对象。如果A被认为是最好的,则“ A”为阳性,得分为+6,“ A”为阴性,得分为-6,依此类推。然后对这些值执行回归拟合,而忽略“类”列。


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

最佳答案

加权“因为重要性”和加权“因为不平衡”之间没有区别。这些设置是完全相同的,它们都指“为了对来自特定类的样本进行误分类而应该对模型进行的惩罚程度”。因此,您不需要任何回归(也不应该这样做!这是一个非常明确的分类问题,您只是想得太多了),而只需提供样本权重即可。插入符号中有许多模型接受这种设置,包括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(如果是类权重)

关于r - 机器学习任务中的加权类(class),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35277162/

10-12 17:47