loration with Python”的 Kernel,林晨立刻被吸引住了。
作者不仅用精美的可视化(Seaborn 库)深入分析了每个特征与幸存率的关系,还提出了许多他没想到的特征构造思路:
比如根据票价和舱位等级推断社会地位,根据客舱号前缀推断甲板位置,将年龄分段并与其他特征组合,甚至利用姓氏关联家庭成员可能一起遇难或幸存的情况……
另一个专注于模型集成的 Kernel 更是让他大开眼界。
作者没有只用一个模型,而是构建了一个“投票分类器”(VotingClassifier),融合了逻辑回归、随机森林、梯度提升、XGBoost 等多个模型的预测结果,并细致地调整了各模型的权重和超参数。
代码中还使用了更高级的交叉验证策略和评估指标(如 AUC-ROC 曲线)。
“原来差距在这里”。
林晨深吸一口气,既有挫败感,更有一种豁然开朗的兴奋。
他之前的做法,就像一个只学会了步枪射击基础动作的新兵,而顶尖选手已经在熟练运用各种特战装备,研究地形,制定协同战术。
他不再急于提交自己那可怜的 80.1% 准确率的预测结果。
而是沉下心来,像一个贪婪的海绵,吸收着这些公开代码中的精华。
他新建了一个 Notebook,开始模仿着进行更细致的数据探索可视化。
年龄分布与幸存率的关系图显示,儿童和老人存活率更高;性别与舱位等级的交叉分析揭示,头等舱的女性存活率极高;家庭规模与存活率呈现复杂的非线性关系……
基于这些洞察,他重新设计特征。
他借鉴思路,创建了“Title”(称呼)特征,将“稀有称呼”如“Lady”“Countess”等归为一类;根据客舱号首字母推断“Deck”(甲板),缺失的单独归类;结合年龄和性别创建“AgeClass”“AgeSex”等交互特征;甚至尝试对票价进行对数变换以缓解偏态分布。
模型方面,他开始尝试简单的堆叠(Stacking)。
用随机森林、GBDT 和 SVM 作为第一层模型,用逻辑回归作为第二层元模型进行融合。
调参过程更加小心,他学习了使用随机搜索(RandomizedSearchCV)在更大参数空间内高效寻优,并开始关注学习曲线来判断模型是否欠拟合或过拟合。
重新训练,验证集准确率缓缓爬升到 81.3%、81.7%……
他将这个融合模型在完整的训练集上重新训练,然后对测试集进行预测,生成提交文件。
上传,等待系统评分。
页面刷新,结果出现:
Public Score(基于测试集部分数据的公开分数)—— 0.8132。准确率约 81.32%。
他立刻去看排行榜。
密密麻麻的名单,他按分数从高到低寻找自己的名字“DawnCoder”。
下滑,再下滑……终于在两千多名的位置找到了自己。
排名:2187 / 4896。
几乎垫底的一半。
林晨看着这个数字,沉默了几秒钟。
然后,嘴角却微微弯起了一个弧度。
没有沮丧,反而有一种踏实的释然。
排名固然难看,但这一趟 Kaggle 初体验,价值远超排名本身。
他亲手处理了真实、杂乱、有缺失的数据;实践了从简单到复杂的特征工程;直观感受到了不同模型的特性与调参影响;更重要的是,他打开了视野,看到了真正的数据科学家是如何思考、如何探索、如何集成创新的。
那些公开的 Kernel 就是最好的免费教材,充满了实战智慧和代码艺术。
他关掉排行榜页面,没有继续在这个竞赛上死磕。
他的目标不是成为 Kaggle 专家,而是汲取养分,浇灌自己的“晨曦一号”系统。
“特征工程可以更精细……模型融合思路值得借鉴……尤其是针对时间序列数据,是不是可以构造更有针对性的滞后特征、滚动统计特征”?
林晨的大脑飞速运转,将刚刚学到的思路与自己正在构建的金融量化系统进行映射。
他新建了一个文档,开始记录本次 Kaggle 之行的收获与反思:
数据探索至关重要:可视化不是点缀,是发现规律、指导特征构造的灯塔。
特征即黄金:很多时候,好的特征比复杂的模型更能提升性能,需要结合领域知识(金融、航运等)进行创造性构造。
模型融合的力量:单一模型有天花板,合理集成多个差异化的模型(异质集成)能有效提升鲁棒性和准确率。
调参需系统:
>>>点击查看《AI时代:码农的涅盘重生》最新章节