機械学習
Kaggle

[Survey] Kaggle - Instacart 9位解法まとめ

More than 1 year has passed since last update.

Kaggle - Instacart Market Basket Analysis1の1位解法2の調査記事です.

Title: 9th place Approach
Name: KazAnova
Kaggle Discussion: https://www.kaggle.com/c/instacart-market-basket-analysis/discussion/38100

特徴量

下記の300以上の特徴量を利用

  • sh1ng feature3
  • arboretum feature4
  • 現時点の連続購入記録(streak, リーク情報)
  • 異なる期間(直近15日,30日など)でのitems/aisle/depsごとの購入回数
  • 時間的な特徴量(例: 最後に買った時刻)
  • 様々なカテゴリ特徴量(例: departments, products, aislesなど)
  • 新商品を買うユーザーの傾向(例: 各注文ごとの新商品の購入確率)

備考

  • F1最大化5(LBで0.005改善)

利用カーネル

  • LightGBMでの予測6
  • XGBoostでの予測7

LightGBMで利用したパラメータ

LightgbmClassifier 
boosting:dart 
num_leaves:22 
num_iterations:3000
max_drop:5
drop_rate:0.01
categorical_feature:0,1,2
learning_rate:0.12
threads:12
max_depth:7
feature_fraction:0.7
min_data_in_leaf:10
bagging_fraction:0.85
lambda_l1:1
lambda_l2:0.01
bagging_freq:1
seed:1
verbose:false

categorical_feature:0,1,2はそれぞれproduct,aisle,departementの意.

モデル

StackNet8でモデルをStacking(ただしあんまり改善されなかった)

  • LightGBM
  • H2O
  • KerasのNN

改善につながらなかった項目

  • product/aisle/departmentごとのモデル
  • 強調フィルタリング
  • 商品の説明文の意味解析

最終のMetaモデル

models = Sequential()
models.add(Dense(output_dim=1024, input_dim=input_d, init='lecun_uniform')) 
models.add(Activation('relu')) 
models.add(BatchNormalization())    
models.add(Dropout(0.5))  
models.add(Dense(512, activation='relu',init='lecun_uniform'))
models.add(Activation('relu')) 
models.add(BatchNormalization())    
models.add(Dropout(0.4))  
models.add(Dense(2, init='lecun_uniform'))
models.add(Activation('softmax'))    
opt = optimizers.Adam(lr=0.01)
models.compile(loss='binary_crossentropy', optimizer=opt)

References