<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          廈門(mén)這個(gè)建模大賽開(kāi)始,獎(jiǎng)金共34萬(wàn)!

          共 9121字,需瀏覽 19分鐘

           ·

          2022-01-14 02:05


          1.大賽背景


          隨著科技發(fā)展,銀行陸續(xù)打造了線(xiàn)上線(xiàn)下、豐富多樣的客戶(hù)觸點(diǎn),來(lái)滿(mǎn)足客戶(hù)日常業(yè)務(wù)辦理、渠道交易等需求。面對(duì)著大量的客戶(hù),銀行需要更全面、準(zhǔn)確地洞察客戶(hù)理財(cái)需求。在實(shí)際理財(cái)產(chǎn)品業(yè)務(wù)開(kāi)展過(guò)程中,需要挖掘不同理財(cái)產(chǎn)品對(duì)客群的吸引力,從而找到目標(biāo)客群,進(jìn)行針對(duì)性營(yíng)銷(xiāo)。


          本次競(jìng)賽提供實(shí)際業(yè)務(wù)場(chǎng)景中的客戶(hù)行為、資產(chǎn)信息、產(chǎn)品交易信息等為建模對(duì)象,一方面希望能借此展現(xiàn)各參賽選手的數(shù)據(jù)挖掘?qū)崙?zhàn)能力,另一方面需要選手在復(fù)賽中結(jié)合建模的結(jié)果提出相應(yīng)的營(yíng)銷(xiāo)解決方案,充分體現(xiàn)數(shù)據(jù)分析的價(jià)值。


          2.賽題描述


          (1) 賽題任務(wù)

          此次競(jìng)賽題目主要是針對(duì)客戶(hù)購(gòu)買(mǎi)各類(lèi)理財(cái)產(chǎn)品存單概率進(jìn)行預(yù)測(cè),并將預(yù)測(cè)結(jié)果作為營(yíng)銷(xiāo)方案的依據(jù)。


          (2) 數(shù)據(jù)使用規(guī)則

          本賽題不能使用任何外部數(shù)據(jù)。本次提供的數(shù)據(jù)經(jīng)過(guò)脫敏,部分連續(xù)型數(shù)據(jù)(如利率、價(jià)格、金融等)經(jīng)過(guò)一定的線(xiàn)性變換,但不影響建模使用和模型預(yù)測(cè)結(jié)果。


          (3) A/B榜規(guī)則

          本次初賽采用AB榜形式。初賽時(shí)間總共一個(gè)半月,前一個(gè)月排行榜顯示A榜成績(jī)(有公私榜,公私榜比例是6:4)后半個(gè)月切換成B榜單(有公私榜),排行榜顯示B榜成績(jī),以參賽者提交的最高分為準(zhǔn),最后初賽成績(jī)=A榜成績(jī)0.3+B榜成績(jī)0.7。


          3.評(píng)估指標(biāo)


          1、初賽采用A/B榜賽制,最終初賽成績(jī)=0.3A榜測(cè)試集F2值+0.7B榜測(cè)試集F2值,其中:


          recall = TP/(TP+FN),召回率


          precision = TP/(TP+FP),精準(zhǔn)率


          F2 = 5recallprecision/(4*precision+recall),F(xiàn)2值


          TP是真樣例,F(xiàn)P是假陽(yáng)例,F(xiàn)N是假陰例,通過(guò)以上公式得到該類(lèi)F2值。


          4.數(shù)據(jù)描述


          本次比賽的任務(wù)核心是通過(guò)用戶(hù)7,8,9月的歷史消費(fèi)記錄來(lái)預(yù)測(cè)其在10月是否會(huì)有購(gòu)買(mǎi)行為,賽題給的數(shù)據(jù)表非常之多,這里不詳細(xì)進(jìn)行展開(kāi),具體可以查看賽題主辦方所給的數(shù)據(jù)描述。


          5.Baseline思路


          本賽題是一個(gè)非常典型的結(jié)構(gòu)化數(shù)據(jù)的比賽,這里我們依然采取傳統(tǒng)的特征工程+lgb(也可以是xgb,cat)的方案。由于本賽題有較強(qiáng)的時(shí)序性,所以這里我們?cè)诰€(xiàn)下進(jìn)行驗(yàn)證的時(shí)候使用7,8月的數(shù)據(jù)進(jìn)行訓(xùn)練在第9月的數(shù)據(jù)上進(jìn)行驗(yàn)證,而在線(xiàn)上進(jìn)行提交的時(shí)候,則使用7,8,9月三個(gè)月的數(shù)據(jù)進(jìn)行訓(xùn)練.這里需要注意的是,這次賽題的線(xiàn)上評(píng)分標(biāo)準(zhǔn)為F2的得分,在進(jìn)行F2得分計(jì)算的時(shí)候需要我們提交的預(yù)測(cè)結(jié)果是0和1的整數(shù)值,但是我們的模型預(yù)測(cè)的結(jié)果是一個(gè)概率值,這里就涉及到一個(gè)閾值的選取,這里建議大家在線(xiàn)下驗(yàn)證的時(shí)候手動(dòng)搜索一下這個(gè)閾值,其代碼如下所示:

          def search_best_thre(y_true,y_pre):    best_f2 = 0    best_th = 0    for i in range(100):        th = 0.03+i/1000        y_pre_copy = y_pre.copy()        y_pre_copy[y_pre_copy >= th] = 1        y_pre_copy[y_pre_copy < th] = 0                temp_f2 = f2_score(y_true,y_pre_copy)                if temp_f2>best_f2:            best_f2 = temp_f2            best_th = th                        print(f'thre: {best_th} f2 score: {best_f2}')    return best_th

          其中,這里的f2_score就是我們自己手動(dòng)實(shí)現(xiàn)的計(jì)算F2分?jǐn)?shù)的評(píng)估函數(shù)


          6.特征工程


          6.1 用戶(hù)信息表


          這里對(duì)用戶(hù)信息表進(jìn)行簡(jiǎn)單的與主表進(jìn)行合并,以此來(lái)獲取用戶(hù)信息,其代碼如下:

          # 客戶(hù)信息表d = pd.read_csv(data_root2 + 'd.csv')df = df.merge(d, on='core_cust_id', how='left')del dgc.collect()


          6.2 用戶(hù)風(fēng)險(xiǎn)表


          這里的用戶(hù)風(fēng)險(xiǎn)由于是每個(gè)一段實(shí)際就會(huì)對(duì)用戶(hù)的風(fēng)險(xiǎn)進(jìn)行一次評(píng)級(jí),所以這里每一個(gè)用戶(hù)都有可能會(huì)對(duì)應(yīng)多個(gè)風(fēng)險(xiǎn)等級(jí),這里我們只選取最近的對(duì)用戶(hù)風(fēng)險(xiǎn)進(jìn)行評(píng)級(jí)的得分,具體做法是我們以u(píng)ser和評(píng)估日期為主鍵進(jìn)行排序,然后按user為主鍵進(jìn)行去重,并且在去重的時(shí)候僅保留最后一條數(shù)據(jù),這樣我們便保留了用戶(hù)最近一次風(fēng)險(xiǎn)評(píng)估的記錄,其代碼如下:

          # 客戶(hù)風(fēng)險(xiǎn)表e = pd.read_csv(data_root2+'e.csv')e = e.sort_values(['core_cust_id','e2'])e = e.drop_duplicates(subset=['core_cust_id'],keep='last')df = df.merge(e[['core_cust_id','e1']],on='core_cust_id',how='left')del egc.collect()


          6.3 用戶(hù)資產(chǎn)信息表


          用戶(hù)的資產(chǎn)信息也會(huì)在不同時(shí)間點(diǎn)有不同的變化,這里我們統(tǒng)計(jì)計(jì)算每個(gè)月用戶(hù)的各種資產(chǎn)的平均值作為用戶(hù)的特征,其代碼實(shí)現(xiàn)如下:

          # 資產(chǎn)信息表f = pd.read_csv(data_root2 + 'f.csv')f.fillna(0, inplace=True)map_dict = dict(zip(sorted(f['f22'].unique()), sorted(df['a3'].unique())))f['f22'] = f['f22'].map(map_dict)for c in ['f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',          'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16',          'f17', 'f18', 'f19','f20', 'f21']:    f[c] = f[c].apply(lambda x: str(x).replace(',','')).astype('float')      f_stat = f.groupby(['core_cust_id','f22']).agg(                                             f2_mean=('f2', 'mean'),                                              f3_mean=('f3', 'mean'),                                              f4_mean=('f4', 'mean'),                                              f5_mean=('f5', 'mean'),                                             f6_mean=('f6', 'mean'),                                             f7_mean=('f7', 'mean'),                                             f8_mean=('f8', 'mean'),                                             f9_mean=('f9', 'mean'),                                             f10_mean=('f10', 'mean'),                                             f11_mean=('f11', 'mean'),                                             f12_mean=('f12', 'mean'),                                             f13_mean=('f13', 'mean'),                                             f14_mean=('f14', 'mean'),                                             f15_mean=('f15', 'mean'),                                             f16_mean=('f16', 'mean'),                                             f17_mean=('f17', 'mean'),                                             f18_mean=('f18', 'mean'),                                             f19_mean=('f19', 'mean'),                                             f20_mean=('f20', 'mean'),                                             f21_mean=('f21', 'mean'),                                             ).reset_index()df = df.merge(f_stat, left_on=['core_cust_id','a3'], right_on=['core_cust_id','f22'], how='left')del f, f_statgc.collect()


          6.4 賬戶(hù)交易流水表

          用戶(hù)的交易流水同樣也十分重要,這里的賬戶(hù)交易流水信息包含了借方的信息和貸方的信息,我們對(duì)這兩部分分別統(tǒng)計(jì),風(fēng)別統(tǒng)計(jì)借方與貸放每個(gè)月涉及金額的統(tǒng)計(jì)值,并且將其作為歷史信息拼接到原有的數(shù)據(jù)表中,他的意思就是比如我預(yù)測(cè)10月份改用戶(hù)會(huì)不會(huì)購(gòu)買(mǎi)東西,那么我就將其9月份的賬戶(hù)交易信息作為其歷史特征,對(duì)于預(yù)測(cè)9月份用戶(hù)會(huì)不會(huì)購(gòu)買(mǎi)東西,就將其8月的賬戶(hù)交易信息作為歷史特征,其代碼實(shí)現(xiàn)如下:

          # S 表:賬戶(hù)交易流水表,其中 s3 和 s6 是客戶(hù)編號(hào),可以和其他表中的 core_cust_id進(jìn)行關(guān)聯(lián)。s = pd.read_csv(data_root2+'s.csv')s['month'] = s['s7'].apply(lambda x: x.split('-')[1]).astype('int32')s['s4'] = s['s4'].apply(lambda x: str(x).replace(',','')).astype('float')tmp_s3 = s.groupby(['s3','month']).agg(                             s3_s4_sum=('s4', 'sum'),                             s3_s4_mean=('s4', 'mean'),                             s3_s4_count=('s4','count')                             ).reset_index()tmp_s6 = s.groupby(['s6','month']).agg(                             s6_s4_sum=('s4', 'sum'),                              s6_s4_mean=('s4', 'mean'),                             s6_s4_count=('s4','count')                             ).reset_index()tmp_s3['month']  = tmp_s3['month']+1tmp_s6['month']  = tmp_s6['month']+1tmp_s3 = tmp_s3.rename(columns={'s3':'core_cust_id'})tmp_s6 = tmp_s6.rename(columns={'s6':'core_cust_id'})df = df.merge(tmp_s3,on=['core_cust_id','month'],how='left')df = df.merge(tmp_s6,on=['core_cust_id','month'],how='left')


          6.5 app 點(diǎn)擊行為表

          這張表記錄了user和產(chǎn)品之間的交互記錄,這里簡(jiǎn)單的對(duì)user和產(chǎn)品交互情況進(jìn)行統(tǒng)計(jì),其代碼如下:

          #app 點(diǎn)擊行為表r = pd.read_csv(data_root2+'r.csv')r = cross_enc(r,'core_cust_id','prod_code')r = r.sort_values(['core_cust_id','r5']).reset_index(drop=True)r = r.drop_duplicates(subset=['core_cust_id'],keep='last')df = df.merge(r[['core_cust_id','prod_code','core_cust_id_count','prod_code_count','core_cust_id_prod_code_count','cross_core_cust_id_prod_code_count_div_core_cust_id_count','cross_core_cust_id_prod_code_count_div_prod_code_count']],on=['core_cust_id','prod_code'],how='left')

          6.6 目標(biāo)編碼


          這里對(duì)user和產(chǎn)品id進(jìn)行了五折目標(biāo)編碼,其代碼如下:

          ## 五折目標(biāo)編碼from sklearn.model_selection import StratifiedKFoldlabel = 'y'skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=2020)enc_list = ['core_cust_id','prod_code']for f in tqdm(enc_list):    train_df[f + '_target_enc'] = 0    test_df[f + '_target_enc'] = 0    for i, (trn_idx, val_idx) in enumerate(skf.split(train_df, train_df[label])):        trn_x = train_df[[f, label]].iloc[trn_idx].reset_index(drop=True)        val_x = train_df[[f]].iloc[val_idx].reset_index(drop=True)        enc_df = trn_x.groupby(f, as_index=False)[label].agg({f + '_target_enc': 'mean'})        val_x = val_x.merge(enc_df, on=f, how='left')        test_x = test_df[[f]].merge(enc_df, on=f, how='left')        val_x[f + '_target_enc'] = val_x[f + '_target_enc'].fillna(train_df[label].mean())        test_x[f + '_target_enc'] = test_x[f + '_target_enc'].fillna(train_df[label].mean())        train_df.loc[val_idx, f + '_target_enc'] = val_x[f + '_target_enc'].values        test_df[f + '_target_enc'] += test_x[f + '_target_enc'].values / skf.n_splits


          7.Baseline結(jié)果


          在構(gòu)造完特征之后,使用lgb對(duì)所得的數(shù)據(jù)進(jìn)行訓(xùn)練,其線(xiàn)下的閾值搜索結(jié)果如下:


          thre: 0.03 f2 score: 0.3942484810161383thre: 0.031 f2 score: 0.39657528516049867thre: 0.032 f2 score: 0.39895684622669514thre: 0.033 f2 score: 0.40054636211507927thre: 0.034 f2 score: 0.4026079162691184thre: 0.034999999999999996 f2 score: 0.4044912629302788thre: 0.036 f2 score: 0.40612958944151645thre: 0.037 f2 score: 0.40753496138593204thre: 0.038 f2 score: 0.40927755967690993thre: 0.039 f2 score: 0.410503800118327thre: 0.04 f2 score: 0.4126804328858547thre: 0.040999999999999995 f2 score: 0.41439493397173527thre: 0.041999999999999996 f2 score: 0.414933881594318thre: 0.043 f2 score: 0.4164246353831421thre: 0.044 f2 score: 0.417484643151162thre: 0.045 f2 score: 0.4190938253084154thre: 0.046 f2 score: 0.4201667149431947thre: 0.047 f2 score: 0.4213196324089531thre: 0.048 f2 score: 0.4225329108548656thre: 0.049 f2 score: 0.42326606470288314thre: 0.05 f2 score: 0.4239773348575973thre: 0.051000000000000004 f2 score: 0.4246038365304421thre: 0.052 f2 score: 0.42623418944115027thre: 0.054 f2 score: 0.4272477986135949thre: 0.055 f2 score: 0.4281746644036414thre: 0.057999999999999996 f2 score: 0.428551417415209thre: 0.059 f2 score: 0.4293245411428671thre: 0.06 f2 score: 0.4303395127494851thre: 0.061 f2 score: 0.43075245365321696thre: 0.062 f2 score: 0.43146751165763464thre: 0.063 f2 score: 0.43217145548751756thre: 0.064 f2 score: 0.4324398249452955thre: 0.065 f2 score: 0.433346787509632thre: 0.066 f2 score: 0.4336518242520382


          在線(xiàn)上進(jìn)行測(cè)評(píng)的得分為:0.29,可以看出本次賽題的線(xiàn)下和線(xiàn)上的差異有一點(diǎn)大


          8.展望


          本次baseline使用的表不是很多,還有很多與產(chǎn)品相關(guān)的表沒(méi)有使用,可以加入對(duì)這些產(chǎn)品相關(guān)的表的使用嘗試其他的boosting模型,例如xgb,cat等等可以嘗試使用一些自動(dòng)調(diào)參工具對(duì)lgb進(jìn)行調(diào)參模型融合。


          對(duì)本次比賽感興趣的同學(xué)也可以參與深度之眼開(kāi)設(shè)的baseline指導(dǎo)課程,旨在通過(guò)2次直播講清楚此次大賽baseline的構(gòu)建思路、代碼以及優(yōu)化。


          • 1月13日直播:手把手教你baseline構(gòu)建(代碼講解)

          • 1月20日直播:baseline優(yōu)化講解


          帶著大家在實(shí)踐中學(xué)習(xí)、在學(xué)習(xí)中實(shí)踐,打出好成績(jī),學(xué)到知識(shí)。


          2次直播、全程答疑。

          原價(jià)198元,13日前限時(shí)0.1!

          ??長(zhǎng)按二維碼,立即參賽??

          第一次參賽沒(méi)關(guān)系,群內(nèi)300+小伙伴,我們幫你組隊(duì)!



          課程大綱

          賽圈大佬指導(dǎo)



          2次直播、全程答疑。

          原價(jià)198元,13日前限時(shí)0.1!

          ??長(zhǎng)按二維碼,立即參賽??

          第一次參賽沒(méi)關(guān)系,群內(nèi)300+小伙伴,我們幫你組隊(duì)!



          —1月13日開(kāi)班—

          瀏覽 25
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人视频免费在线观看黄色视频 | 狠狠人妻久久 | 插逼国产| 一级欧美另类 | 插逼丝袜视频 |