18-预测房价竞赛总结
18-预测房价竞赛总结
本节目录
1.方法总结
下面提供了排行榜前几使用的方法介绍链接
-
第二和第七:autogluon
-
第三:h2o
-
第四:随机森林
https://www.kaggle.com/jackzh/the-4th-place-approach-random-forest
2.分析
-
已知的排名靠前的4个成绩均使用了集成学习
-
目前不知道是否有使用书中的mlp取得好成绩
通过调参数,是能够取得很好的结果的
对于mlp来说,特征预处理和超参数的调节是取得好成绩的基础
-
数据的难点
-
数值较大
梯度相对较大,容易发生梯度爆炸
一个解决方案是可以对数据取对数,再进行标准化
-
有文本特征(地址,介绍)
这些文字可能含有较多的噪声,对模型产生影响
解决办法日后会讲解,比如第二名用的transformer
-
训练数据是前6个月,公榜是后3个月,私榜是再往后3个月
利用历史的数据进行训练,在实践中自然会有不同的影响(可能过拟合)
因此公榜与私榜的排名有一定差异
这个问题称为Covariate Shift,没有特别好的解决方案 ,可以让模型尽可能稳定,不去仔细调参
-
3.关于automl
3.1 课程内容
这一部分李沐老师要表达的主要是我们应该深入去了解本后的原理,不要因为有"自动化"深度学习而产生一种依赖心理或者变得没有深究深度学习的动力,学习deep learning仍然是有意义的
-
数据科学家80%时间在处理数据,20%调模型
处理数据是automl不能做的,automl的作用主要在调模型这块,数据科学家仍然能大展身手
-
Automl现在能处理一些基础的情况
目前节省10%时间,未来节省20%时间
-
为什么还要学习深度学习
正如买菜只需要用到四则运算甚至不用,我们仍然需要学习三角函数去进行更深入的科学研究等其他事情。当人人都会用Automl的时候,我们仍然需要懂得一些底层的原理,毕竟Automl也是有局限性的,需要我们不断改进,或者想出其他算法。另一方面,我们也要肯定Automl带来的便利。
3.2 补充内容
AutoGluon
与大部分automl框架是基于超参数搜索技术的不同,Autogluon会利用多个机器学习包来训练模型
-
房价预测竞赛中模型的改动
1.对于数据中数值比较大且数据变化大的数值取log,CPU上训练2个小时,最终排第七
2.房子描述里包含大量文本,使用mutimodal选项来用transformer提取特征,并做多模型融合,用GPU才跑得动,排名第二
-
AutoGluon背后的技术
1.stacking
2.k-则交叉bagging
3.多层stacking
-
总结
1.autogluon在合理的计算开销下得到还不错的模型
2.虽然autogluon可以做自动特征抽取,但是当加入一些人工数据处理也是不错的方法
3.对于比较大的数据集计算开销仍然是瓶颈,需要使用GPU甚至多台机器做分布式训练,这仍是AutoML未来的研究方向
4.具体讲解可参考:https://www.bilibili.com/video/BV1F84y1F7Ps/?spm_id_from=333.788.recommend_more_video.1
4.总结
这节课本身就是一次对预测房价竞赛的总结,主要介绍了排名的分布情况以及一些队伍使用的方法。
5.预测房价竞赛总结 Q&A
Q1: 统计学专业本科生未来从事人工智能如何规划
注重动手能力的培养
Q2: 避免overfit是调参好还是不调参好?老师有何经验分享?
调参是需要的,首先最好有一个比较好的验证集;当你找到一个在验证集效果比较好的超参数值的时候,最好在这一值上调或下调一点看看是否敏感,如果比较敏感说明这点可能只是在这点凑巧效果好罢了,泛化性就不好;当然在实践中调参并没有像在竞赛中那么重要
Q3: 老师说的80%时间处理数据是指的找数据、清理数据这些?数据搭建pipeline不就好了, ?为什么改进模型等等不占主要时间?
处理数据并不是搭建pipeline就好了,你需要决定从哪里获取数据、怎样获取数据、如何处理噪音(清理数据)……这些都是很费时间的
Q4: AutoML与ML有严格的特征区别吗
AutoML可以看作是ML中的一类算法
Q5: 用mlp做竞赛时发现层数深的时候预测出来的房价全是一样的,层数浅一点还不会出现这个问题,为什么?
应该是梯度爆炸,或者梯度消失,也就是数值稳定性出现问题
Q6:MLP有值得精细调参的价值吗?
有。