第3名解决方案
Playground Series 第3季第13集 第3名解决方案
我要向Kaggle的组织者表示感谢,感谢他们举办了Playground Series。作为一名初学者,参加这些比赛虽然充满挑战,但能学到宝贵的技能。
我还要特别感谢 @Matt OP、@Tanoi、@Elric 和 @broccoli beef 分享他们的专业知识,以下是他们的笔记链接:
他们的见解非常宝贵,对我帮助很大。
以下方法对我有效:
- 首先,我希望建立一个可靠的验证方法。根据上一次Playground比赛的经验,我决定使用RepeatedStratifiedKFold。我根据平均验证分数、标准差和标准误差来选择k和n的值。发现10次重复的10折交叉验证似乎是评估验证分数的合适选择。
- 对于基线方法,我使用了SVC,其验证分数为0.367 ± 0.025。
- 我使用了Tanoi提供的特征,发现加入'kidney-failure'后,交叉验证分数达到0.370 ± 0.025。
- 我还根据特征名称对特征进行分组,并将包含pain、loss或inflammation等词汇的特征值相加。例如,加入包含pain词汇的求和特征后,交叉验证分数提升至0.375 ± 0.026。
- 我还引入了多项式特征,并选择使交叉验证分数最高的特征对:'back_pain'和'yellow_skin',得分为0.3937。随后,我进一步测试了加入额外的多项式特征对('itchiness'与'bullseye_rash',以及'diarrhea'与'hypoglycemia'),验证分数进一步提升至0.3989。
- 特征选择:我预先筛选了一些在初始特征集上表现良好的算法,并检查了哪种VarianceThreshold截断率对它们最为合适。我测试了XGBClassifier、SVC、BernoulliNB、NuSVC和LGBMClassifier。所有算法在阈值为0.1时均取得了最高的交叉验证分数。这些算法最终被用于最终的集成模型(未加权)。
- 我的最终提交在公开榜上的得分为0.37089,在私有榜上的得分为0.52302。
以下方法未奏效或可能有效:
- 由于原始特征数量庞大,我认为聚类技术可能对此任务有益。我尝试了多种方法,包括MeanShift、Birch、BisectingKMeans和KMeans。其中MeanShift的交叉验证分数最佳,为0.357 ± 0.039,因此未能带来提升。
- 我还尝试了降维技术,如PCA,但未投入过多时间。未来值得进一步探索。