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最大化^3
利用カーネル
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の意.
モデル
StackNet7でモデルを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
-
Kaggle, Instacart Market Basket Analysis ↩
-
KazAnova, 9th place Approach ↩
-
sh1ng, Baseline 0.4029970 ↩
-
paulantoine, light GBM benchmark 0.3692 ↩
-
🐳鲲(China), LB 0.3805009, Python Edition ↩