unrolling mult-classes to two-classes

本文介绍了一种将多分类问题转化为二分类问题的方法,并详细解释了如何通过增加类别维度来实现这一转换。此外,还讨论了这种方法在Boosting算法中的应用及其实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多分类问题转换成二分类问题的一个途径,来自opencv sample on boost


N分类问题中,样本总数为T,每个样本维度为M, 一行一个样本,则

样本数组sample = Mat(T,M)

类别数组cls = Mat(T,1) ,

以下的代码进行unrolling


new_sample = Mat(T*N,M+1)

new_cls = Mat(T*N,1)

for (int t = 0; t < T; t++)
{ 

     for (int n = 0; n < N; n++)
    {
        new_sample(t * N + n,0:M) = sample(t,0:M); //前M维直接从原始样本复制
        new_sample(t * N + n, M + 1) = n; //最后一个新增维度是当前类别数目
        new_cls(t * N + n,0) = cls(t,0) == n; //0 or 1
    }
    

}

对于boost,训练时需要指定新增的一个维度是CV_VAR_CATEGORICAL



预测阶段,对于每一个样本,要尝试N次,每次用一个类别扩充该样本特征,然后用训练出来的分类器预测这个扩充后的样本是0 or 1,达到分类的目的


但是在char ocr测试中,这种方法的recalling比bpnet低了接近30%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值