![11.3 構(gòu)建SVM預測模型與用戶畫像_第1頁](http://file4.renrendoc.com/view/90f350bf3258ef78dcddd4291dc8fcc5/90f350bf3258ef78dcddd4291dc8fcc51.gif)
![11.3 構(gòu)建SVM預測模型與用戶畫像_第2頁](http://file4.renrendoc.com/view/90f350bf3258ef78dcddd4291dc8fcc5/90f350bf3258ef78dcddd4291dc8fcc52.gif)
![11.3 構(gòu)建SVM預測模型與用戶畫像_第3頁](http://file4.renrendoc.com/view/90f350bf3258ef78dcddd4291dc8fcc5/90f350bf3258ef78dcddd4291dc8fcc53.gif)
![11.3 構(gòu)建SVM預測模型與用戶畫像_第4頁](http://file4.renrendoc.com/view/90f350bf3258ef78dcddd4291dc8fcc5/90f350bf3258ef78dcddd4291dc8fcc54.gif)
![11.3 構(gòu)建SVM預測模型與用戶畫像_第5頁](http://file4.renrendoc.com/view/90f350bf3258ef78dcddd4291dc8fcc5/90f350bf3258ef78dcddd4291dc8fcc55.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
數(shù)據(jù)說明與存儲主講:李強任務描述用戶畫像是根據(jù)用戶社會屬性、生活習慣和消費行為等信息而抽象出的一個標簽化的用戶模型。構(gòu)建用戶畫像的核心工作即是給用戶貼“標簽”,而標簽是通過對用戶信息分析而來的高度精煉的特征標識。用戶畫像中的一個標簽為用戶是否值得挽留,該標簽的計算規(guī)則比較復雜,并非通過統(tǒng)計用戶的數(shù)據(jù)獲得,而是需要建立模型并根據(jù)指定的特征進行預測。常用于分類、預測是與否(0/1)事件的模型是SVM模型,SVM(SupportVectorMac)又稱為支持向量機,是一種較好的二分類模型。本小節(jié)將對廣電大數(shù)據(jù)用戶數(shù)據(jù)建立SVM模型,并進行模型評估和預測,然后基于前幾節(jié)的探索分析與模型預測結(jié)果構(gòu)建廣電用戶畫像。任務分析本小節(jié)的構(gòu)建SVM預測模型與用戶畫像的實現(xiàn)流程如下。(1)構(gòu)建特征列和標簽列數(shù)據(jù)。(2)構(gòu)建SVM模型,評價模型效果,然后預測用戶是否挽留。(3)構(gòu)建用戶畫像。11.3.1構(gòu)建特征列和標簽列數(shù)據(jù)構(gòu)建特征列和標簽列數(shù)據(jù)在預處理后的數(shù)據(jù)中沒有算法模型可識別出來的特征列和標簽列,所以為了后續(xù)模型的構(gòu)建,此小節(jié)需要對預處理后的數(shù)據(jù)進行構(gòu)建特征列和標簽列。(1)根據(jù)用戶月均消費金額,每個用戶的入網(wǎng)時長,每個用戶平均每天看多久電視構(gòu)建特征列,具體實現(xiàn)如代碼11-28、代碼11-29、代碼11-30和代碼11-31所示。代碼11-28統(tǒng)計每個用戶的月均消費金額valbillevents=hiveContext.sql("selectphone_no,sum(should_pay)/3asconsumefromuser_profile.mmconsume_billevent_processwheresm_namenotlike'%珠江寬頻%'groupbyphone_no")代碼11-29統(tǒng)計每個用戶的入網(wǎng)時長valuserevents=hiveContext.sql("selectphone_no,max(months_between(current_date(),run_time)/12)join_timefromuser_profile.mediamatch_userevent_processgroupbyphone_no")代碼11-30統(tǒng)計每個用戶平均每次看多少小時電視valmedia_index=hiveContext.sql("selectphone_no,(sum(media.duration)/(1000*60*60))/count(1)ascount_durationfromuser_profile.media_index_processmediagroupbyphone_no")代碼11-31通過join將表連接valbillevents_userevents_media=billevents.join(userevents,Seq("phone_no")).join(media_index,Seq("phone_no"))billevents_userevents_media.show(5)構(gòu)建特征列和標簽列數(shù)據(jù)特征列如圖11-37所示。圖11-37特征列構(gòu)建特征列和標簽列數(shù)據(jù)(2)根據(jù)mediamatch_usermsg選出run_name字段為主動暫停或主動銷戶的用戶并貼上類別0,0代表用戶為不挽留用戶;根據(jù)mediamatch_usermsg選出run_name字段為正常并且是活躍的用戶貼上類別1,1代表用戶為挽留用戶,具體實現(xiàn)如下。選取一個月的數(shù)據(jù),匯總得到總觀看時長大于18936000的用戶,如代碼11-32所示。代碼11-32觀看時長大于18936000的用戶valmsg=hiveContext.sql("selectdistinctphone_no,0ascol1fromuser_profile.mediamatch_usermsg_process")valmediaIndex=hiveContext.sql("selectphone_no,sum(duration)astotal_one_month_secondsfromuser_profile.media_index_processwhereorigin_time>=add_months('2018-08-0100:00:00',-1)groupbyphone_nohavingtotal_one_month_seconds>18936000").select("phone_no","total_one_month_seconds")將order_index字段過濾掉run_name等于“正?!钡臄?shù)據(jù);offername過濾掉包含以下關鍵字“廢”“贈送”“免費體驗”“提速”“提價”“轉(zhuǎn)網(wǎng)優(yōu)惠”“測試”“虛擬”“空包”的數(shù)據(jù),如代碼11-33所示。代碼11-33過濾關鍵字valorderIndexTV=hiveContext.sql("select*fromuser_profile.order_index_processwhererun_name='正常'andoffername!='廢'andoffername!='贈送'andoffername!='免費體驗'andoffername!='提速'andoffername!='提價'andoffername!='轉(zhuǎn)網(wǎng)優(yōu)惠'andoffername!='虛擬'andoffername!='空包'andoffernamenotlike'%寬帶%'").select("phone_no").distinct()構(gòu)建特征列和標簽列數(shù)據(jù)通過join連接表獲得活躍用戶,如代碼11-34所示。代碼11-34連接表valmedia_order=mediaIndex.join(orderIndexTV,Seq("phone_no"),"inner").selectExpr("phone_no","1ascol2").distinct()valmsg_media_order=msg.join(media_order,Seq("phone_no"),"left_outer").na.fill(0).selectExpr("phone_no","col2ascol1")篩選掉包含“珠江寬頻”的數(shù)據(jù),通過join將表連接并給活躍用戶貼上標簽1,不活躍用戶貼上標簽0,如代碼11-35所示。代碼11-35貼標簽valbillevents=hiveContext.sql("selectphone_no,sum(should_pay)/3consumefromuser_profile.mmconsume_billevent_processwheresm_namenotlike'%珠江寬頻%'groupbyphone_no")valuserevents=hiveContext.sql("selectphone_no,max(months_between(current_date(),run_time)/12)join_timefromuser_profile.mediamatch_userevent_processgroupbyphone_no")valmedia_index=hiveContext.sql("selectphone_no,(sum(media.duration)/(1000*60*60))/count(1)ascount_durationfromuser_profile.media_index_processmediagroupbyphone_no")valbillevents_userevents_media=billevents.join(userevents,Seq("phone_no")).join(media_index,Seq("phone_no"))......省略構(gòu)建特征列和標簽列數(shù)據(jù)構(gòu)建好的數(shù)據(jù)如圖11-38所示。通過得到了一份DataFrame的數(shù)據(jù)unionData,數(shù)據(jù)中包含了5個字段,分別為用戶ID、電視消費水平、電視入網(wǎng)時長、電視依賴度、類別。后續(xù)可利用這份數(shù)據(jù)來進行SVM建模。圖11-38構(gòu)建的數(shù)據(jù)集11.3.2SVM預測用戶是否挽留SVM預測用戶是否挽留基于11.3.1小節(jié)處理后含有特征列和標簽列的數(shù)據(jù)集,在構(gòu)建模型之前,還需將特征列數(shù)據(jù)轉(zhuǎn)化成RDD[LabelPoint]類型,消除量綱影響,對數(shù)據(jù)做標準化處理,然后對數(shù)據(jù)集劃分,再來構(gòu)建SVM模型,對模型效果進行評價,最后使用構(gòu)建好的模型預測用戶是否挽留。(1)對特征列數(shù)據(jù)做標準化處理,為了后面對模型進行評估,根據(jù)二八原則將標準化數(shù)據(jù)劃分成訓練集和驗證集,用訓練集來建立模型,驗證集用來評價模型,具體實現(xiàn)如代碼11-36所示。模型建立如圖11-39所示。代碼11-36建立SVM模型importorg.apache.spark.mllib.regression.LabeledPointimportorg.apache.spark.mllib.linalg.Vectorsimportorg.apache.spark.mllib.feature.StandardScalervaltraindata=unionData.select("consume","join_time","count_duration").rdd.zip(unionData.select("label").rdd).map(x=>LabeledPoint(x._2.get(0).toString.toDouble,Vectors.dense(x._1.toSeq.toArray.map(_.toString.toDouble))))......省略圖11-39SVM模型的建立SVM預測用戶是否挽留(2)使用驗證集來驗證模型的效果,計算模型的準確率、AUROC值和AUPRC值,具體實現(xiàn)如代碼11-37所示。代碼11-37模型評價importorg.apache.spark.mllib.evaluation.BinaryClassificationMetricsimportorg.apache.spark.sql.types.{DoubleType,StringType,StructField,StructType}importorg.apache.spark.sql.RowvalpredictAndLabel=validate_data.map(row=>{valpredict=model.predict(row.features)......省略圖11-40模型的評估模型效果如圖11-40所示。從代碼11-37的計算結(jié)果可知,模型的準確率大概是0.46875,ROC曲線下的面積(AUROC值)大概是0.7258,PR曲線下的面積(AUPRC)大概是0.9914。一般情況下,ROC曲線下的面積的取值范圍在0.5到1之間,面積值越大說明分類效果越好。SVM預測用戶是否挽留(3)將billevents_userevents_media數(shù)據(jù)(測試數(shù)據(jù))做一步轉(zhuǎn)換,轉(zhuǎn)換成RDD[(String,Vector)]類型,并取出RDD中的Vector數(shù)據(jù)作為predict的輸入?yún)?shù),具體實現(xiàn)如代碼11-38所示。模型預測結(jié)果如圖11-41所示。代碼11-38模型預測valtest_data=billevents_userevents_media.select("phone_no").rdd.zip(billevents_userevents_media.select("consume","join_time","count_duration").rdd).map(x=>(x._1.get(0).toString,Vectors.dense(x._2.toSeq.toArray.map(_.toString.toDouble))))valpredictData=test_data.map(row=>{valpredict=model.predict(row._2)Row(row._1,row._2(0),row._2(1),row._2(2),predict)})......省略圖11-41模型預測的結(jié)果11.3.3構(gòu)建用戶畫像1.消費內(nèi)容選擇phone_no、fee_code字段并去重;根據(jù)fee_code字段來貼標簽,標簽規(guī)則如下。(1)fee_code=0J或0B或OY則標簽為直播;(2)fee_code=0X則標簽為應用;(3)fee_code=0T則標簽為付費頻道;(4)fee_code=0W或0L或0Z或0K則標簽為寬帶;(5)fee_code=0D則標簽為點播fee_code=0H則標簽為回看;(6)fee_code=0U則標簽為有線電視收視費。代碼11-39消費內(nèi)容標簽實現(xiàn)代碼hiveContext.sql("selectdistinctphone_no,casewhenfee_code='0J'orfee_code='0B'orfee_code='0Y'then'直播'whenfee_code='0X'then'應用'whenfee_code='0T'then'付費頻道'whenfee_code='0W'orfee_code='0L'orfee_code='0Z'orfee_code='0K'then'寬帶'whenfee_code='0D'then'點播'whenfee_code='0H'then'回看'whenfee_code='0U'then'有線電視收視費'endaslabel,'消費內(nèi)容'asparent_labelfromuser_profile.mmconsume_billevent_process").show(5)圖11-42消費內(nèi)容用戶畫像2.電視消費水平根據(jù)sm_name字段不包含珠江寬頻篩選出電視的數(shù)據(jù);計算個月數(shù)據(jù)中should_pay-favour_fee的月平均值X,標簽規(guī)則如下。(1)如果-26.3<X<26.3則貼上電視超低消費標簽;(2)如果26.3≤X<26.3+20則貼上電視低消費;(3)如果26.3+20≤X<26.3+40則貼上電視中等消費;(4)如果X≥26.3+40則貼上電視高消費標簽。代碼11-40電視消費水平標簽實現(xiàn)代碼hiveContext.sql("selectt2.phone_no,casewhenfee_per_month>-26.3andfee_per_month<26.3then'電視超低消費'whenfee_per_month>=26.3andfee_per_month<46.3then'電視低消費'whenfee_per_month>=46.3andfee_per_month<66.3then'電視中等消費'when66.3<=fee_per_monththen'電視高消費'endaslabel,'電視消費水平'asparent_labelfrom(selectt1.phone_no,sum(real_pay)/3asfee_per_monthfrom(selectphone_no,nvl(should_pay,0)-nvl(favour_fee,0)asreal_payfromuser_profile.mmconsume_billevent_processwheresm_namelike'%電視%')t1groupbyt1.phone_no)t2").show(5)圖11-43電視消費水平用戶畫像3.寬帶消費水平根據(jù)sm_name包含珠江寬頻篩選寬帶的數(shù)據(jù),計算3個月數(shù)據(jù)should_pay-favour_fee的月平均值Y,標簽規(guī)則如下。(1)如果Y≤29則貼上寬帶低消費標簽;(2)如果29<Y≤48則貼上寬帶中消費;(3)如果Y>48則貼上寬帶高消費。實現(xiàn)代碼如代碼11-41所示。寬帶消費水平用戶畫像如圖11-44所示。代碼11-41寬帶消費水平標簽實現(xiàn)代碼hiveContext.sql("selectt2.phone_no,casewhenfee_per_month<=29then'寬帶低消費'whenfee_per_month>29andfee_per_month<=48then'寬帶中消費'whenfee_per_month>48then'寬帶高消費'endaslabel,'寬帶消費水平'asparent_labelfrom(selectt1.phone_no,sum(real_pay)/3asfee_per_monthfrom(selectphone_no,nvl(should_pay,0)-nvl(favour_fee,0)asreal_payfromuser_profile.mmconsume_billevent_processwheresm_name='珠江寬頻')t1groupbyt1.phone_no)t2").show(5)圖11-44寬帶消費水平用戶畫像4.寬帶產(chǎn)品帶寬根據(jù)sm_name='珠江寬頻'來篩選寬帶的用戶;根據(jù)字段phone_no進行分組,取optdate最大且effdate≤當前時間≤expdate的數(shù)據(jù);根據(jù)prodname字段確定標簽,prodname字段的值即為標簽名稱,如代碼11-42所示。寬帶產(chǎn)品帶寬用戶畫像如圖11-45所示。代碼11-42寬帶產(chǎn)品帶寬標簽實現(xiàn)代碼hiveContext.sql("selectb.phone_no,casewhenprodname=prodnamethenprodnameendaslabel,'帶產(chǎn)品帶寬'asparent_labelfrom(selecta.phone_no,a.optdate,dname,a.sm_name,row_number()over(partitionbya.phone_noorderbya.optdatedesc)rankfrom(selectphone_no,prodname,expdate,optdate,sm_namefromuser_profile.order_index_processwhereeffdate<from_unixtime(unix_timestamp(),'yyyy-MM-ddHH:mm:ss')andfrom_unixtime(unix_timestamp(),'yyyy-MM-ddHH:mm:ss')<expdate)a)bwhereb.rank=1andb.sm_name='珠江寬頻'").show(5)圖11-45寬帶產(chǎn)品帶寬用戶畫像5.銷售品名稱過濾cost小于等于0的數(shù)據(jù),且offername不包含空包的記錄;根據(jù)sm_name區(qū)分電視和寬帶,sm_name='珠江寬頻'的為寬帶,sm_name不包含珠江寬頻的為電視,標簽規(guī)則如下。(1)電視主銷售品:找出mode_time='Y',offertype=0,prodstatus='YY'且effdate≤當前時間≤expdate且optdate最大的數(shù)據(jù);(2)電視附屬銷售品:找出mode_time='Y',offertype=0,prodstatus='YY'且effdate≤當前時間≤expdate的數(shù)據(jù)。(3)寬帶:找出effdate≤當前時間≤expdate的且optdate最大的數(shù)據(jù)。篩選出來的數(shù)據(jù)選擇phone_no、offername字段并去重,然后根據(jù)offername字段貼標簽,實現(xiàn)代碼如代碼11-43所示。代碼11-43銷售品名稱標簽實現(xiàn)代碼hiveContext.sql("selectphone_no,casewhenoffername=offernamethenoffernameendaslabel,'銷售品名稱'asparent_labelfrom(selectphone_no,offernamefrom(selectt2.phone_no,t2.optdate,t2.offername,row_number()over(partitionbyt2.phone_noorderbyt2.optdatedesc)rankfrom(selectt1.phone_no,t1.offername,t1.optdatefrom(select*from......省略圖11-46銷售品名稱用戶畫像6.業(yè)務品牌選擇phone_no,sm_name字段并去重,刪除sm_name='模擬有線電視'或'番通'的數(shù)據(jù),根據(jù)sm_name字段來貼標簽,標簽規(guī)則如下。(1)若sm_name='互動電視'則標簽為互動電視;(2)若sm_name='數(shù)字電視'則標簽為數(shù)字電視;(3)若sm_name='甜果電視'則標簽為甜果電視;(4)若sm_name='珠江寬頻'則標簽為珠江寬頻。實現(xiàn)代碼如代碼11-44所示。代碼11-44業(yè)務品牌標簽實現(xiàn)代碼hiveContext.sql("selectphone_no,casewhensm_name='互動電視'then'互動電視'whensm_name='數(shù)字電視'then'數(shù)字電視'whensm_name='甜果電視'then'甜果電視'whensm_name='珠江寬頻'then'珠江寬頻'endaslabel,'業(yè)務品牌'asparent_labelfromuser_profile.mediamatch_usermsg_processwheresm_namenotlike'%模擬有線電視%'orsm_namenotlike'%番通%'").show(5)圖11-47業(yè)務品牌用戶畫像7.電視入網(wǎng)程度篩選sm_name包含“互動”甜果”“數(shù)字”的記錄。根據(jù)phone_no字段來分組,找出open_time(用戶開戶時間)字段與當前時間作比差得到T(單位:年),標簽規(guī)則如下。(1)若T>13則標簽為老用戶;(2)若T≤9則標簽為新用戶;(3)若9<T≤13則標簽為中等用戶。實現(xiàn)代碼如代碼11-45所示。電視入網(wǎng)程度用戶畫像如圖11-48所示。代碼11-45電視入網(wǎng)程度標簽實現(xiàn)代碼hiveContext.sql("selectt1.phone_no,casewhenT>13then'老用戶'whenT>9andT<=13then'中等用戶'whenT<=9then'新用戶'endaslabel,'電視入網(wǎng)程度'asparent_labelfrom(selectphone_no,max(datediff(current_date(),open_time)/365)asTfromuser_profile.mediamatch_usermsg_processwheresm_namelike'%電視%'andopen_timeisnotNULLgroupbyphone_no)t1").show(5)圖11-48電視入網(wǎng)程度用戶畫像8.寬帶入網(wǎng)程度選擇sm_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子競技產(chǎn)業(yè)商業(yè)模式的創(chuàng)新與探索
- 清潔保養(yǎng)在醫(yī)療安全中的重要性
- 2025年門禁控制器項目可行性研究報告
- 中國電子風量開關項目投資可行性研究報告
- 2025年江西贛州尋烏中電建新能源發(fā)電有限公司招聘筆試參考題庫附帶答案詳解
- 2025年中國電建山東電力建設第一工程有限公司招聘筆試參考題庫附帶答案詳解
- 2025年鎳銅鈷鹽類項目投資可行性研究分析報告-20241226-193404
- 知識經(jīng)濟時代的知識產(chǎn)權(quán)質(zhì)押融資價值挖掘
- 南京市棲霞區(qū)2024年七年級《語文》下冊期末試卷與參考答案
- 知識產(chǎn)權(quán)在提升國家競爭力中的作用
- 正面上手發(fā)球技術 說課稿-2023-2024學年高一上學期體育與健康人教版必修第一冊
- 2025年上海寶冶集團限公司招聘歷年高頻重點提升(共500題)附帶答案詳解
- 佛山市普通高中2025屆高三下學期一模考試數(shù)學試題含解析
- 人教 一年級 數(shù)學 下冊 第6單元 100以內(nèi)的加法和減法(一)《兩位數(shù)加一位數(shù)(不進位)、整十數(shù)》課件
- 事故隱患排查治理情況月統(tǒng)計分析表
- 2024年中國黃油行業(yè)供需態(tài)勢及進出口狀況分析
- 永磁直流(汽車)電機計算程序
- 中學學校2024-2025學年教師發(fā)展中心工作計劃
- app 購買合同范例
- 高二上學期物理(理科)期末試題(含答案)
- 小班期末家長會-雙向奔赴 共育花開【課件】
評論
0/150
提交評論