Dont_overfit_ii

2019/4/9开始kaggle的Don't Overfit! II竞赛,竞赛含250条训练数据,需要据此预测19.8k条数据的目标值。特征300个,目标值为0-1变量,训练样本含正样本160条,负样本90条。

kaggle的Don't Overfit! II竞赛。

显然,此竞赛的特点是小样本和不平衡样本。

关于小样本的解决参考4;关于不平衡数据参考2。

注意:不平衡数据不会造成过拟合,不平衡数据倾向于归入大分类的误分类,AUCROC是度量这种误分类的度量函数。??????

关于不平衡:

按参考2,解决不平衡学习问题的五种方法包括: 1. Up-sample the minority class对少数分类升采样 2. Down-sample the majority class对多数分类降采样 3. Change your performance metric改变度量函数 4. Penalize algorithms (cost-sensitive training)惩罚算法(即代价敏感训练) 5. Use tree-based algorithms采用基于树的算法

COSTCLA、costsensitive包可实现方法4。

按TOM FAWCETT,分类问题不能简单地预测标签。因为但: 1. 预测标签浪费很多信息,概率才是更重要的。 2. 虽然很多分类学习器都有预测概率这个功能,但很可能其简单以0.5作为阈值划分分类标签的依据。由于算法、数据不平衡和训练测试数据集标签比例不均衡等原因,此模型所谓的”概率“是不准确的,所以不可以简单以0.5作概率阈值。 3. 在概率不准情况下需要选择合适的概率阈值作为划分标签的依据。 4.也可以校准,在sklearn中有sklearn.calibration.CalibratedClassifierCV。TOM FAWCETT先生的意思我并没有叙述准确,详见其博客(参考4、5)。

那么将train分成tra、val,选取学习器比如逻辑回归,高参由tra进行cv获取,运用全部tra并cv获取的高参训练模型。查看模型对tra和val的aucroc,比较tra和val的aucroc,若接近说明没有过拟合,可用这个模型对test进行预测。class_weight需使weigh乘以分类样本数得到的乘积平衡,在sklearn可选‘balanced’。其他包应根据分类样本数自己设定。

第一步选择逻辑回归,重复上行过程,这个结果作为基础,其他学习器的结果需好于此学习器。

参考: