动手学深度学习18 预测房价竞赛总结
- 李沐老师代码
- AutoGluon
- h2o
- 集成学习
- automl
- QA
视频: https://www.bilibili.com/video/BV15Q4y1o7vc/?vd_source=eb04c9a33e87ceba9c9a2e5f09752ef8
代码: https://www.bilibili.com/video/BV1rh411m7Hb/?vd_source=eb04c9a33e87ceba9c9a2e5f09752ef8
李沐老师代码
第一部分代码是kaggle预测泰坦尼克号人生还。
conda create -y --force -n ag python=3.8 pip
conda activate ag
pip install 'mxnet<2.0.0'
pip install autogluon
pip install kaggle
# 配置kaggle秘钥 下载数据集
kaggle c doenload titanic
unzip -o titanic.zipfrom autogluon.tabular import TabularDataset, TabularPredictor
# 训练
train_data = TabularDataset('train.csv')
# id, label = 'PassengerId', 'Survived'
id, label = 'ID', 'Sold Price'
# 数据预处理
large_val_cols = ['Lot', 'Total interior livabel area', 'Tax assessed value','Listed Price', 'Last Sold Price']
# 对字符串较长的列取log操作
for c in large_val_cols + [label]:train_data[c] = np.log(train_data[c]+1)
# 把pandas自动生成的id列去掉 不参与训练 label列做label
# predictor = TabularPredictor(label=label).fit(train_data.drop(columns=[id]))
# 更好的模型 multimodal选项用transformer抽取特征+多模型融合
predictor = TabularPredictor(label=label).fit(train_data.drop(columns=[id]), hyperparameters='multimodal',num_stack_levels=1, num_baf_folds=5)# 预测
import pandas as pd
test_data = TabularDataset('test.csv')
preds = predictor.predict(test_data.drop(columns=[id]))
submission = pd.DataFrame({id:test_data[id], label:preds})
# 生成提交的csv文件
submission.to_csv('submission.csv', index=False)# 1. autogluon在合理的计算开销下模型还不错
# 2. 虽然可以做自动特征抽取,但是人为数据预处理可能效果更好
# 3. 对于比较大的数据集,计算开销仍旧是瓶颈 gpu或者多台gpu分布式训练。
AutoGluon
代码: https://github.com/autogluon/autogluon
文档: https://auto.gluon.ai/stable/index.html
AutoGluon是一个开源的自动化机器学习(AutoML)工具包,旨在使机器学习变得更加易于使用和普及。它提供了高度自动化的机器学习管道,可以帮助开发者和数据科学家快速构建和部署高性能的机器学习模型,而无需深入了解每个模型的细节。
以下是AutoGluon的一些主要特点和功能:
-
自动化调参:AutoGluon能够自动搜索最佳的超参数配置,包括模型选择、特征工程、调参等,从而提高模型的性能和泛化能力。
-
多模型支持:支持多种机器学习模型,包括集成学习、神经网络、决策树等,可以根据数据集自动选择合适的模型进行训练。
-
高性能:AutoGluon针对大规模数据和高维特征进行了优化,具有较高的训练速度和效率。
-
易于使用:提供简洁的API和命令行界面,使用户可以轻松地进行模型训练、评估和部署。
-
自动化特征工程:自动处理数据预处理和特征工程,包括缺失值处理、数据标准化、特征选择等。
-
模型解释性:提供模型解释性功能,可以帮助用户理解模型的预测结果和特征重要性。
AutoGluon适用于各种机器学习任务,包括分类、回归、聚类等,可以在不同的领域和应用中使用,如金融、医疗、电子商务等。它为机器学习的开发和应用提供了更高的效率和便利性,使更多的开发者和科学家可以利用机器学习技术解决实际问题。
h2o
https://zhuanlan.zhihu.com/p/638874401
集成学习
集成学习会让模型更稳定。
automl
80%的时间去处理数据。
怎么搜集数据,搜集什么样的数据,怎么做数据清洗,搭建数据pipeline, 怎么低成本的获取存储数据。
QA
1: 避免overfit, 调参是必要的,要有一个比较好的验证集。当找到一个很好的超参数效果特别好,就在这个超参数附近调一下看看效果是否会有很大变化。实际应用中调参没那么重要。
2:kaggle比赛 公榜数据是测试数据前半部分,私榜是测试数据后半部分。
3:数据处理,难的是要预测一个任务,机器学习能不能做,要什么样的数据,历史数据是否有用,从哪里找数据,数据怎么获取,噪音数据怎么处理【90%的数据可能都是噪音】,哪些数据是对模型有用的。第一步:思考世界。
4:神经网络调参方法和需要调的参数。
5:nas 搜整个网络的架构【烧钱,还不成熟】,autogulon和pytorch结合做NAS?
Autogluon 和 PyTorch 结合起来进行 NAS(神经架构搜索)是指使用 Autogluon 框架与 PyTorch 深度学习库结合,进行神经网络架构的自动搜索和优化。这种方法旨在通过自动化技术来发现和优化深度学习模型的架构,以提高模型的性能和效率。
Autogluon 是一个自动机器学习工具包,它可以帮助开发者在各种机器学习任务中自动搜索和选择最佳的模型和超参数配置。PyTorch 则是一个流行的深度学习框架,提供了丰富的工具和功能,使得在构建、训练和部署深度学习模型时更加便捷。
因此,将 Autogluon 与 PyTorch 结合使用进行 NAS,意味着利用 Autogluon 提供的自动化搜索技术,结合 PyTorch 提供的深度学习能力,来寻找最优的神经网络结构和超参数配置,以达到更好的模型性能和效果。
6:AutoML是自动机器学习,给一个处理过,样本处理过但是特征没有抽取好的数据,能自动做特征提取训练模型,是ML的一个算法。
7:层数深预测输出的房价都是一样的,说明数值稳定性出了问题,可能把bias弄出来了。或者梯度爆炸或者梯度为0.
8:autogluon有用树模型,DeepLearning大部分模型,autogluon可以理解为一个大容器,里面塞了好多模型。
9:MLP有精细调参的价值。bert transformer也有MLP的实现。
10:xgboost训练房价预测.
11:看数据看那些数据是有用的。可以尝试把单词逐一创建特征项,看看是否有效果,没有的话不要浪费时间。
12:第一版kaggle竞赛,MLP比赛经验。
13:AutoGluon从最简单最快的模型开始,继续往下训练,一直试不同的模型。