about Kaggle

数据挖掘比赛----Kaggle实战

       数据挖掘--非常火爆的一个话题,跟大数据结合的模式也是赚足了噱头,工业界各土豪公司也是砸下重金网罗各种数据挖掘/机器学习人才。如今掌握一门挖掘技巧的实用性跟急迫性。在学习的过程中,除了相关理论的学习之外,最重要的就是如何把理论用于实践,当然做项目是最直接有效的实践方式,除此之外,参加一些数据挖掘比赛也是非常不错的经历,比赛过程中,我们不仅能加深模型/算法的学习,也能从别的参赛队员中学习他们的技巧。下面,想跟大家分享下,我最近参加的几个数据挖掘比赛(由于参加比赛非常需要精力跟时间,而本人已经参加工作,只能利用业余的时间探索数据,主要以学习他人方法为主,另外以下比赛均在www.kaggle.com上面)。

        一:Higgs Boson Machine Learning Challenge

            这个比赛(共1785支队伍)是关于高能物理粒子的预测,二分类问题,具体来说数据集中,每个样本都有一个权重,权重越大,表明该样本越重要。这个比赛火了一个工具包:XGboost,该工具的作者陈天奇同学也是KDDcup2012Track1的冠军成员,写的代码非常短小精悍,值得深度(目前我也在熟读这份代码),用这个工具调好参数,能取得Top50的好成绩。第一名的方案,是Bag了70个神经网络模型, 数据预处理先做了特征选择,剔除掉5较差特征,同时添加了10个meta-feature。具体链接请参见https://www.kaggle.com/c/higgs-boson/forums/t/10344/winning-methodology-sharing?page=2。我的方案:模型用了Stacking的方法,基本分类器用了XGboost,RGF(loss=Logloss),RGF(loss=Exploss指数loss,就是adaboost的loss函数),二级分类器用了Logistic Regression,模型最好的结果能排到25位。

        二:Display Advertising Challenge

            这是一个关于广告CTR预估的比赛,由全球知名广告公司Criteo赞助举办,先简单介绍下数据背景:4千万的训练样本,13个数值特征+26个分类特征,500万的测试样本,模型的评价指标为传统的logloss。从整体的思路来看:特征的处理+线性模型,对26个分类特征进行one-hot 编码,能扩展至千万级别的特征。第一名方案非常有意思,GBDT+FM的组合,其中的特征处理非常有技巧(GBDT训练高阶特征+hash技巧),值得学习。关于FM模型,由于我本周会跟团队有一个分享,完后再博客里贴出来跟大家一起分享。我的方案:特征预处理,缺失值直接用0取代(不影响后续的模型),分类特征直接用one-hot编码(这里做了一个特殊的处理,对于频数小于10词的取值,统一作为一个取值),最后用FM跑处理后的数据(参数调优要非常小心),最终的结果在718只队伍里面第42位。

         三:Tradeshift Text Classification

             这是文本分类问题,并且是多类别的分类,也就是一本文档有可能属于多个类别,数据集中是33个分类,共145个特征(50个bool型特征+10个分类特征+85个数值特征),比赛评价的指标仍然是logloss,当然这里是33个logloss之和。这个比赛比较有意思的是采用了二级分类的思路:随机森林训练bool/数值特征 + 线性SVM训练稀疏特征作为第一级分类,它们的输出作为随机森林的输入,这是第二级分类,第一名的方案:随机森林训练bool/数值特征 + SGD训练稀疏特征+在线的逻辑回归训练所有feature+XGboost训练所有feature 作为第一级方案,它们的输入扔到XGboost模型里面,最终输出结果。我的方案:随机森林训练bool/数值特征 + 线性SVM训练稀疏特征作为第一级分类,它们的输出作为XGboost的输入,最终的结果是375支队伍里面第19位。

        以上是我的一些心得体会,写的也比较简短,也欢迎大家讨论交流

       Ps:另外非常希望那些已经掌握理论还没开始实践的朋友,多找项目/比赛练手,另外常备几个高效的数据挖掘工具箱,并选其中2-3个熟读其源码,做到理论、实践两不误~

       下面简单介绍下GBDT/GBRT模型,以下图片是前段时间做的一个分享~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分类
### ASHRAE Kaggle Competition Details and Resources #### Overview of the Competition The ASHRAE - Great Energy Predictor III competition on Kaggle focuses on predicting energy consumption in buildings, which is a critical aspect for improving sustainability and reducing environmental impact[^1]. The challenge involves using provided datasets to develop models that can accurately predict building energy usage based on various factors such as weather conditions, building characteristics, and meter types. #### Key Components of the Dataset Participants receive several key files including `train.csv`, `test.csv`, `building_metadata.csv`, and multiple weather data files (`weather_train.csv` and `weather_test.csv`). These datasets contain information about different buildings' energy consumption patterns over time along with relevant metadata like primary use type, square footage, year built, etc.[^2]. #### Evaluation Metric Submissions are evaluated using Normalized Root Mean Squared Log Error (NRMSE). This metric measures how well predictions match actual values while normalizing by site-specific constants to ensure fair comparisons across diverse locations within the dataset. #### Winning Strategies from Top Competitors Top solutions often involve advanced feature engineering techniques combined with ensemble methods or deep learning architectures tailored specifically towards handling temporal dependencies present in this kind of sequential prediction task. For instance, one top performer utilized LSTM networks alongside extensive preprocessing steps aimed at capturing seasonal trends effectively[^2]. ```python import pandas as pd from sklearn.model_selection import train_test_split from lightgbm import LGBMRegressor # Load Data df_train = pd.read_csv('data/train.csv') meta_data = pd.read_csv('data/building_metadata.csv') # Merge Metadata into Training Set merged_df = df_train.merge(meta_data, on='building_id', how='left') # Feature Engineering & Preprocessing... X = merged_df.drop(['meter_reading'], axis=1) y = merged_df['meter_reading'] # Splitting Train/Test Sets X_train, X_val, y_train, y_val = train_test_split(X, y) # Model Training Example Using LightGBM Regressor model = LGBMRegressor() model.fit(X_train, y_train) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值