Python Scikit学习中被动-攻击性在线学习者的班级不平衡处理

Python Scikit学习中被动-攻击性在线学习者的班级不平衡处理,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我目前正在研究一个大规模的多类图像分类问题。我目前正在使用一种在线学习策略,利用scikit学习中的被动攻击算法实现。 (因为与SGD实现相比,它的收敛速度更快)。我通过构建N个(类数)OVA分类器,遵循一对所有(OVA)方法 为了处理大量的培训数据,我基本上将数据集分成分层的小批量,并在几个迭代中通过在线学习者(每个OVA)运行它们,直到验证批的性能稳定下来。(模型初始化和超参数选择在第一批完成) 我的测量主要是地图或平均精度。 (每个OVA模型的sklearn.metrics.average

我目前正在研究一个大规模的多类图像分类问题。我目前正在使用一种在线学习策略,利用scikit学习中的被动攻击算法实现。 (因为与SGD实现相比,它的收敛速度更快)。我通过构建N个(类数)OVA分类器,遵循一对所有(OVA)方法

为了处理大量的培训数据,我基本上将数据集分成分层的小批量,并在几个迭代中通过在线学习者(每个OVA)运行它们,直到验证批的性能稳定下来。(模型初始化和超参数选择在第一批完成) 我的测量主要是地图或平均精度。 (每个OVA模型的sklearn.metrics.average_precision_得分的平均值)

有了这个框架,每当我有新标签可用时,我就可以创建一个新的批,并通过部分拟合操作运行它们,从而进一步提高模型性能

我关心的是,这种方法是否能够处理小批量中可能出现的类不平衡,或者将来添加更多的小批量。我怀疑,由于阶级不平衡,该模型会对多数阶级产生偏见,导致少数阶级的回忆率较低

一个快速修复方法是在学习过程中使用class_weight='auto',但这仅支持“SGD”实现,而不支持被动-主动实现?如果两者都使用相同的底层sgd实现,那么任何原因都是如此

我能想到的另一个选择是制作均衡的小批量产品,从而确保模型不会偏向大多数类别

如果能对体系结构有一些看法,那就太好了,因为它可能存在一些缺点。 -地图是正确的尺度吗? -如何在不平衡的班级场景中处理在线学习。 -任何其他线性算法,而不是被动攻击和SGD,可能更适合这个问题


多亏了

被动-攻击式分类器不像您习惯的大多数算法那样“收敛”。事实上,如果你读了这篇文章,PA的目的是进行更新,以完全纠正损失,同时使权重向量的范数变化最小。请注意,PA中的正则化参数使其无法在每个示例的基础上进行完全校正

这样,PA专门用于在线培训,而不是批量培训,因此,在小批量上运行PA,直到其稳定为止,可能不会帮助(也可能会损害)您的泛化精度

地图是正确的尺度吗

完全取决于您的数据和需求

任何其他线性算法,而不是被动攻击和SGD,可能更适合这个问题

完全取决于您的数据和需求

一个快速修复方法是在学习过程中使用class_weight='auto',但这仅支持“SGD”实现,而不支持被动-主动实现?如果两者都使用相同的底层sgd实现,那么任何原因都是如此

是的,见我对PA的描述。PA的学习方法不允许这种添加。虽然您可以通过在每个类的基础上修改正则化来实现它,但我认为这没有任何意义。如果您需要了解更多信息,请参阅原始文件

你可以搜索“阶级不平衡”来找到更多的方法来解决这个问题,但这完全取决于你的数据


如果您愿意使用Java,可以直接使用名为SPA的PA的多类实现。对于你的问题,它可能更准确,也可能不更准确

被动-主动分类器不像您使用的大多数算法那样“收敛”。事实上,如果你读了这篇文章,PA的目的是进行更新,以完全纠正损失,同时使权重向量的范数变化最小。请注意,PA中的正则化参数使其无法在每个示例的基础上进行完全校正

这样,PA专门用于在线培训,而不是批量培训,因此,在小批量上运行PA,直到其稳定为止,可能不会帮助(也可能会损害)您的泛化精度

地图是正确的尺度吗

完全取决于您的数据和需求

任何其他线性算法,而不是被动攻击和SGD,可能更适合这个问题

完全取决于您的数据和需求

一个快速修复方法是在学习过程中使用class_weight='auto',但这仅支持“SGD”实现,而不支持被动-主动实现?如果两者都使用相同的底层sgd实现,那么任何原因都是如此

是的,见我对PA的描述。PA的学习方法不允许这种添加。虽然您可以通过在每个类的基础上修改正则化来实现它,但我认为这没有任何意义。如果您需要了解更多信息,请参阅原始文件

你可以搜索“阶级不平衡”来找到更多的方法来解决这个问题,但这完全取决于你的数据

如果您愿意使用Java,可以直接使用名为SPA的PA的多类实现。对于你的问题,它可能更准确,也可能不更准确