天池實戰賽o2o優惠券使用預測-實戰學習

賽題的比賽背景:

隨着移動設備的完善和普及,移動互聯網+各行各業進入了高速發展階段,這其中以O2O(Online to Offline)消費最爲吸引眼球。據不完全統計,O2O行業估值上億的創業公司至少有10家,也不乏百億巨頭的身影。O2O行業天然關聯數億消費者,各類APP每天記錄了超過百億條用戶行爲和位置記錄,因而成爲大數據科研和商業化運營的最佳結合點之一。 以優惠券盤活老用戶或吸引新客戶進店消費是O2O的一種重要營銷方式然而隨機投放的優惠券對多數用戶造成無意義的干擾。對商家而言,濫發的優惠券可能降低品牌聲譽,同時難以估算營銷成本。 個性化投放是提高優惠券覈銷率的重要技術,它可以讓具有一定偏好的消費者得到真正的實惠,同時賦予商家更強的營銷能力。本次大賽爲參賽選手提供了O2O場景相關的豐富數據,希望參賽選手通過分析建模,精準預測用戶是否會在規定時間內使用相應優惠券

數據:

    本賽題提供用戶在2016年1月1日至2016年6月30日之間真實線上線下消費行爲,預測用戶在2016年7月領取優惠券後15天以內的使用情況。 
注意: 爲了保護用戶和商家的隱私,所有數據均作匿名處理,同時採用了有偏採樣和必要過濾。

 

評價方式

    本賽題目標是預測投放的優惠券是否覈銷。針對此任務及一些相關背景知識,使用優惠券覈銷預測的平均AUC(ROC曲線下面積)作爲評價標準。 即對每個優惠券coupon_id單獨計算覈銷預測的AUC值,再對所有優惠券的AUC值求平均作爲最終的評價標準

提交結果:

 

 一、SGD 分類

 

def check_model_SGD(data, predictors):
    
    classifier = lambda: SGDClassifier(
        loss='log',  # loss function: logistic regression
        penalty='elasticnet', # L1 & L2
        fit_intercept=True,  # 是否存在截距,默認存在
        max_iter=100, 
        shuffle=True,  # Whether or not the training data should be shuffled after each epoch
        n_jobs=1, # The number of processors to use
        class_weight=None) # Weights associated with classes. If not given, all classes are supposed to have weight one.
 
    # 管道機制使得參數集在新數據集(比如測試集)上的重複使用,管道機制實現了對全部步驟的流式化封裝和管理。
    # 可參考:https://blog.csdn.net/lanchunhui/article/details/50521648
    model = Pipeline(steps=[
        ('ss', StandardScaler()), # transformer# 去均值和方差歸一化
        ('en', classifier())  # estimator
    ])
 
    parameters = {
        'en__alpha': [ 0.001, 0.01, 0.1],
        'en__l1_ratio': [ 0.001, 0.01, 0.1]
    }
 
    # StratifiedKFold用法類似Kfold,但是他是分層採樣,確保訓練集,測試集中各類別樣本的比例與原始數據集中相同。
    folder = StratifiedKFold(n_splits=3, shuffle=True)
    
    # Exhaustive search over specified parameter values for an estimator.
    #參考:https://blog.csdn.net/qq_39521554/article/details/86227582
    grid_search = GridSearchCV(
        model, 
        parameters, 
        cv=folder, 
        n_jobs=-1,  # -1 means using all processors
        verbose=1)
    grid_search = grid_search.fit(data[predictors], 
                                  data['label'])
    
    return grid_search

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章