




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、高級數(shù)據(jù)建模分析Python數(shù)據(jù)處理、分析、可視化與數(shù)據(jù)化運營07第1頁,共147頁。本章學習目標了解常用的數(shù)據(jù)挖掘和機器學習算法的概念和應用場景掌握運用常見機器學習算法解決實際項目問題的能力掌握不同算法評估的主要方法熟悉常見的用于機器學習的數(shù)據(jù)預處理工作和技巧了解如何將機器學習與日常應用結合并推動結果落地掌握如何通過可視化展示機器學習結果的方法第2頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征聚類的概念算法引言聚類是數(shù)據(jù)挖掘和計算的基本任務,它將大量數(shù)據(jù)集中具有“相似”特征的數(shù)據(jù)點或樣本劃分為一個類別。聚類分析的基本思想是“物以類聚、人以群分”,因此大量的數(shù)據(jù)集中必然存在相似
2、的數(shù)據(jù)樣本,基于這個假設就可以將數(shù)據(jù)區(qū)分出來,并發(fā)現(xiàn)不同類的特征。第3頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征聚類的應用場景算法引言聚類常用于數(shù)據(jù)探索或挖掘前期,在沒有做先驗經驗的背景下做的探索性分析也適用于樣本量較大情況下的數(shù)據(jù)預處理工作。第4頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征聚類的常用算法算法引言基于劃分、層次、密度、網格、統(tǒng)計學、模型等類型的算法典型算法包括K均值(經典的聚類算法)、DBSCAN、兩步聚類、BIRCH、譜聚類等第5頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征業(yè)務需求案例背景業(yè)務部門拿了一些關于用戶的數(shù)據(jù)找
3、到數(shù)據(jù)部門,苦于沒有分析入手點,希望數(shù)據(jù)部門通過分析給業(yè)務部門一些啟示或者提供后續(xù)分析或業(yè)務思考的建議。第6頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征需求解讀案例背景(1)探索性數(shù)據(jù)分析的任務,且業(yè)務方沒有任何先驗經驗給到數(shù)據(jù)部門。(2)這次的分析結果,用于做業(yè)務的知識啟發(fā)或后續(xù)分析的深入應用。(3)業(yè)務希望得到的是他們自己無法認知到,且自身無法實現(xiàn)的數(shù)據(jù)知識。第7頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征從CRM數(shù)據(jù)獲取,數(shù)據(jù)共1000條記錄、5列字段,沒有缺失值,具體如下:數(shù)據(jù)源概述(1)USER_ID:用戶ID列,整數(shù)型。該列為用戶數(shù)據(jù)分析師唯一I
4、D標志。(2)AVG_ORDERS:平均用戶訂單數(shù)量,浮點型。(3)AVG_MONEY:平均訂單價值,浮點型。(4)IS_ACTIVE:是否活躍,以0-1來表示結果,數(shù)值型。(5)SEX:性別,以0-1來標識性別男和女,數(shù)值型。第8頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征數(shù)據(jù)源關鍵信息點數(shù)據(jù)源概述(1)分割ID列,ID列不能直接參與特征計算。(2) IS_ACTIVE和SEX代表是一個分類型變量,但由于使用0和1來標記數(shù)據(jù),因此可直接參與計算。如果使用0-1-2甚至更多分類數(shù)值索引,則需要單獨做處理。(3)AVG_ORDERS和AVG_MONEY具有明顯的量綱差異,如果直
5、接做相似度計算,那么結果會直接受到量綱的影響,因此需要做量綱歸一化或標準化處理。第9頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征導入庫案例過程import pandas as pd # panda庫from sklearn.preprocessing import MinMaxScaler # 標準化庫from sklearn.cluster import KMeans # 導入sklearn聚類模塊from sklearn.metrics import silhouette_score # 效果評估模塊第10頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征讀取
6、數(shù)據(jù)案例過程cluster_data = pd.read_excel(demo.xlsx,sheet_name=0,index_col=USER_ID)print(cluster_data.head(3)第11頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征數(shù)據(jù)預處理案例過程scaler = MinMaxScaler() scaled_features = scaler.fit_transform(cluster_data) # 標準化 print(scaled_features:2,:) 第12頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征用戶聚類案例過程mod
7、el_kmeans = KMeans(n_clusters=3, random_state=0) # 建立聚類模型對象model_kmeans.fit(scaled_features) # 訓練聚類模型設置聚類數(shù)量為3random_state為0第13頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征模型評估案例過程n_samples, n_features = cluster_data.shape # print(samples: %d t features: %d % (n_samples, n_features) # silhouette = silhouette_score
8、(scaled_features, model_kmeans.labels_, metric=euclidean) # 使用輪廓系數(shù)(Silhouette)檢驗聚類模型的質量結果print(silhouette score:,silhouette) # 第14頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征組合原始數(shù)據(jù)與標簽案例過程kmeans_labels = pd.DataFrame(model_kmeans.labels_,index=cluster_data.index,columns=labels) # kmeans_data = pd.concat(cluster_d
9、ata,kmeans_labels),axis=1) # 將原始數(shù)據(jù)框和聚類結果數(shù)據(jù)框按列合并print(kmeans_data.head(3) # 第15頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征基于聚類群組匯總特征案例過程radar_gb = kmeans_data.groupby(labels,as_index=False).mean()print(radar_gb)第16頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征基于聚類群組匯總特征案例過程radar_gb.plot(kind=bar, x=labels,y=AVG_ORDERS,AVG_MONE
10、Y,IS_ACTIVE,SEX, figsize=(10, 4),logy=True, title=不同聚類分組結果對比)第17頁,共147頁。7.1使用KMeans聚類算法挖掘用戶潛在特征用戶的各類別情況用戶特征分析(1)Labels值為0(命名為A組)的群組特征是平均訂單量和平均訂單價值較低,活躍度一般的群體,主要是男性用戶。(2)Labels值為1(命名為B組)的群組特征是平均訂單量和平均訂單價值較高,活躍度低(甚至是不活躍),主要是女性用戶。(3)Labels值為2(命名為C組)的群組特征是平均訂單量和平均訂單價值比B組略低,活躍度很高,主要是女性用戶。第18頁,共147頁。7.2 使
11、用CART預測用戶是否會產生轉化分類的概念算法引言分類算法通過對已知類別訓練集的計算和分析,從中發(fā)現(xiàn)類別規(guī)則并預測新數(shù)據(jù)的類別。分類算法是解決分類問題的方法,是數(shù)據(jù)挖掘、機器學習和模式識別中一個重要的研究領域。第19頁,共147頁。7.2 使用CART預測用戶是否會產生轉化分類的應用場景算法引言分類的主要用途和場景是“預測”,基于已有的樣本預測新樣本的所屬類別。例如信用評級、風險等級、欺詐預測等;同時,它也是模式識別的重要組成部分,廣泛應用到機器翻譯,人臉識別、醫(yī)學診斷、手寫字符識別、指紋識別的圖像識別、語音識別、視頻識別的領域。分類算法也可以用于知識抽取,通過模型找到潛在的規(guī)律,幫助業(yè)務得到
12、可執(zhí)行的規(guī)則。第20頁,共147頁。7.2 使用CART預測用戶是否會產生轉化分類的常用算法算法引言素貝葉斯、邏輯回歸、決策樹、隨機森林、支持向量機、GBDT、XGboost等第21頁,共147頁。7.2 使用CART預測用戶是否會產生轉化業(yè)務需求案例背景業(yè)務方希望數(shù)據(jù)部門能對轉化用戶做分析,然后找到轉化用戶的典型特征,即哪些特征對于轉化用戶最重要,然后針對這些特征做特定的業(yè)務動作。同時,對一些新的用戶做預測,得到其轉化的可能性和是否會轉化。第22頁,共147頁。7.2 使用CART預測用戶是否會產生轉化需求解讀案例背景(1)其中包含特征提取的分析工作,目標交付物是特征重要性。(2)需要預測得
13、到用戶的轉化概率和轉化標簽兩個信息。因此,經過梳理后,我們決定使用決策樹的分類算法來實現(xiàn)。第23頁,共147頁。7.2 使用CART預測用戶是否會產生轉化從促銷活動系統(tǒng)和CRM系統(tǒng)獲取,數(shù)據(jù)共725條記錄、12個字段列,并含有缺失值,具體如下:數(shù)據(jù)源概述(1)USER_ID:用戶ID。(2)LIMIT_INFOR:用戶購買范圍限制類型,分類型數(shù)值索引。(3)CAMPAIGN_TYPE:用戶對應的促銷活動的類型,分類型數(shù)值索引。(4)CAMPAIGN_LEVEL:用戶對應的促銷活動的等級,分類型數(shù)值索引。(5)PRODUCT_LEVEL:活動對應的產品等級,分類型數(shù)值索引。第24頁,共147頁。
14、7.2 使用CART預測用戶是否會產生轉化從促銷活動系統(tǒng)和CRM系統(tǒng)獲取,數(shù)據(jù)共725條記錄、12個字段列,并含有缺失值,具體如下:數(shù)據(jù)源概述(6)RESOURCE_AMOUNT:商品資源對應的備貨數(shù)量,以千為單位,數(shù)值型。(7)EMAIL_RATE:用戶歷史上的email打開率,浮點型。(8)PRICE:商品對應的價格,數(shù)值型。(9)DISCOUNT_RATE:商品對應的折扣率,浮點型。第25頁,共147頁。7.2 使用CART預測用戶是否會產生轉化從促銷活動系統(tǒng)和CRM系統(tǒng)獲取,數(shù)據(jù)共725條記錄、12個字段列,并含有缺失值,具體如下:數(shù)據(jù)源概述(10)HOUR_RESOUCES:商品資源
15、售賣的時間,以小時計,數(shù)值型。(11)CAMPAIGN_FEE:商品對應的促銷活動費用。(12)ORDERS:是否會產生訂單轉化,轉化為1,否則為0。第26頁,共147頁。7.2 使用CART預測用戶是否會產生轉化數(shù)據(jù)源關鍵信息點數(shù)據(jù)源概述其中ORDERS 為目標字段;LIMIT_INFOR,CAMPAIGN_TYPE,CAMPAIGN_LEVEL,PRODUCT_LEVEL,RESOURCE_AMOUNT為分類型變量,雖然是數(shù)值型索引,但并不是連續(xù)性屬性,后續(xù)處理時需要注意其余字段為數(shù)值型字段。第27頁,共147頁。7.2 使用CART預測用戶是否會產生轉化導入庫案例過程import pan
16、das as pdfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score第28頁,共147頁。7.2 使用CART預測用戶是否會產生轉化讀取數(shù)據(jù)案例過程tree_data = pd.read_excel(demo.xlsx,sheet_name=1,index_col=USER_ID)x
17、,y = tree_data.iloc:,:-1,tree_data.iloc:,-1print(tree_data.head(1)第29頁,共147頁。7.2 使用CART預測用戶是否會產生轉化數(shù)據(jù)預處理案例過程null_val = x.isnull().any(axis=0) # print(null_valnull_val=True) # x = x.fillna(x.mean() # x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=.3, random_state=0) # 將x和y按照訓練集70%
18、、測試集30%的比例拆分數(shù)據(jù)為訓練集和測試第30頁,共147頁。7.2 使用CART預測用戶是否會產生轉化訓練模型案例過程model_tree = DecisionTreeClassifier(max_depth=4,class_weight=balanced) # model_tree.fit(x_train, y_train) # pre_y = model_tree.predict(x_test) # max_depth指定樹最大深度為4,通過class_weight=balanced設置根據(jù)不同的類別的樣本量分布自動平衡權重,該方法常用于樣本不均衡分布的場景第31頁,共147頁。7.2
19、 使用CART預測用戶是否會產生轉化模型評估案例過程metrics = accuracy_score,precision_score,recall_score,f1_score # scores = i(y_test, pre_y) for i in metrics # 使用列表推導式,依次計算每個回歸評估指標結果columns = i._name_ for i in metrics # 基于函數(shù)的_name_屬性得到函數(shù)名scores_pd = pd.DataFrame(scores,index=columns).T # print(scores_pd) # 第32頁,共147頁。7.2 使
20、用CART預測用戶是否會產生轉化模型評估案例過程(1) accuracy_score:準確率(Accuracy),分類模型的預測結果中將正例預測為正例、將負例預測為負例的比例,取值范圍0,1,值越大說明分類結果越準確。(2) precision_score:精確度(Precision),分類模型的預測結果中將正例預測為正例的比例,取值范圍0,1,值越大說明分類結果越準確。第33頁,共147頁。7.2 使用CART預測用戶是否會產生轉化模型評估案例過程(3) recall_score:召回率(Recall),分類模型的預測結果被正確預測為正例占總的正例的比例,取值范圍0,1,值越大說明分類結果越
21、準確。(4) f1_score:F1得分(F-score),準確度和召回率的調和均值,取值范圍0,1,值越大說明分類結果越準確。第34頁,共147頁。7.2 使用CART預測用戶是否會產生轉化展示特征重要性案例過程feature_pd = pd.Series(model_tree.feature_importances_,index=x.columns)feature_pd.sort_values().plot(kind=barh,figsize=(10, 4), title=特征重要性評估)第35頁,共147頁。7.2 使用CART預測用戶是否會產生轉化重新訓練模型并預測案例過程new_da
22、ta = pd.read_csv(tree.txt,index_col=USER_ID) # model_tree.fit(x,y) # print(model_tree.predict(new_data) # proba_data = pd.DataFrame(model_tree.predict_proba(new_data),columns=model_tree.classes_) # print(proba_data) # 在模型效果確認相對較好的前提下,使用完整的數(shù)據(jù)集做訓練,能夠獲得更完整的數(shù)據(jù)信息,因此這里重新訓練模型再對新數(shù)據(jù)做預測。第36頁,共147頁。7.2 使用CART預
23、測用戶是否會產生轉化重新訓練模型并預測案例過程第37頁,共147頁。7.2 使用CART預測用戶是否會產生轉化預測的predict和predict_proba方法分析用戶的轉化可能性predict用來預測用戶的最終結果類別屬于哪一類,如屬于第一類還是第二類predict_proba方法預測得到的結果是用戶屬于每一類的概率,有幾個預測類別就有幾列預測概率。第38頁,共147頁。7.2 使用CART預測用戶是否會產生轉化預測的predict和predict_proba方法分析用戶的轉化可能性一般情況下,用戶屬于哪個類別基于50%的基準閾值做劃分,以本案例為例,當屬于0這個類別的概率大于50%時則分
24、類為0,否則分類為1。兩種方法結合起來,predict得到的分類結合說明了用戶的分類,而predict_proba則說明了用戶有多大程度上屬于這一類,90%的概率和60%雖然在predict會得到相同的預測結果,但是90%的概率卻在程度上要遠高于另一個,即顯示出“非常確認”的可信度。第39頁,共147頁。7.2 使用CART預測用戶是否會產生轉化結論分析用戶的轉化可能性每個用戶在轉化可能性上,都是“比較確信”用戶不會轉化,因為其為0的概率是60%70%左右,雖然比50%基準值高,但也沒有到80%甚至以上的“非常確認”的程度。第40頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV回歸的
25、概念算法引言回歸是研究自變量x對因變量y影響的一種數(shù)據(jù)分析方法。最簡單的回歸模型是一元線性回歸(只包括一個自變量和一個因變量,且二者的關系可用一條直線近似表示),可以表示為Y=0+1x+,其中Y為因變量,x為自變量,1為影響系數(shù),0為截距,為隨機誤差。第41頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV回歸的應用場景算法引言回歸分析是廣泛應用的統(tǒng)計分析方法,可用于分析自變量和因變量的影響關系(通過自變量求因變量),也可以分析自變量對因變量的影響方向(正向影響還是負向影響)。回歸分析的主要應用場景是進行預測和控制,如計劃制訂、KPI制定、目標制定等方面;也可以基于預測的數(shù)據(jù)與實際數(shù)據(jù)
26、進行比對和分析,確定事件發(fā)展程度并給未來行動提供方向性指導。第42頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV回歸的常用算法算法引言線性回歸、二項式回歸、對數(shù)回歸、指數(shù)回歸、核SVM、嶺回歸、Lasso等。第43頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV業(yè)務需求案例背景在做大型活動促銷前一天的上午,業(yè)務方得到了一些數(shù)據(jù),想要基本現(xiàn)有的數(shù)據(jù)做些預測UV數(shù)。但限制條件是,1個小時之內必須給出結果,在線等,挺急的!第44頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV需求解讀案例背景(1)這是一次回歸任務,目標是預測數(shù)值。(2)由于時間緊任務重,因此無法通過非
27、常深入的觀察、探索性分析、深入的算法選擇和參數(shù)調優(yōu)等方式得到最優(yōu)結果,因此必須在有限時間內得到盡量好的結果。(3)該次工作不注重中間過程,只要求輸出最后結果。第45頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV從網站分析和廣告系統(tǒng)獲取,數(shù)據(jù)共93條記錄、5個字段列,無缺失值,具體如下:數(shù)據(jù)源概述(1)MONEY:廣告費用,數(shù)值型。(2)TYPE:廣告類型,字符串類。(3)SIZE:廣告尺寸,字符串型。(4)PROMOTION:促銷賣點,字符串型。(5)UV:獨特訪客數(shù)量,數(shù)值型。第46頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV數(shù)據(jù)源關鍵信息點數(shù)據(jù)源概述TYPE、SI
28、ZE和PROMOTION需要做OneHotEncode轉換,以實現(xiàn)可以做距離計算的目的。MONEY由于量綱(數(shù)據(jù)分布范圍和量級)更其他的字段不同,需要做標準化處理。第47頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV導入庫案例過程import pandas as pdimport numpy as npfrom sklearn.linear_model import Ridgefrom sklearn.decomposition import PCAfrom sklearn.preprocessing import OrdinalEncoder,OneHotEncoder,MinM
29、axScalerfrom sklearn.pipeline import Pipelinefrom sklearn.model_selection import cross_val_scorefrom sklearn.metrics import make_scorer,mean_absolute_error,mean_squared_error,median_absolute_error # 多種回歸評估指標第48頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV讀取數(shù)據(jù)案例過程ad_data = pd.read_excel(demo.xlsx,sheet_name=2)print(
30、ad_data.head()第49頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV數(shù)據(jù)預處理案例過程cols = TYPE,SIZE,PROMOTION # cate_model = Pipeline(ode, OrdinalEncoder(), (ohe, neHotEncoder(categories=auto,sparse=False) # 使用Pipeline方法將字符串轉數(shù)值索引和啞編碼轉換結合起來cate_data = cate_model.fit_transform(ad_datacols) # num_model = MinMaxScaler() # num_data
31、 = num_model.fit_transform(ad_dataMONEY) # 第50頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV生成最終模型為x和y案例過程x = np.hstack(cate_data,num_data) # y = ad_dataUV # 使用numpy的hstack方法,將類別型特征和數(shù)值型特征數(shù)據(jù)框合并起來第51頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV訓練模型案例過程pipe_model = Pipeline(pca, PCA(n_components=0.85), (ridge, Ridge() # 基于PCA主成分分析和嶺回歸
32、組件組合評估器pipe_model.fit(x,y) # 主成分分析通過n_components=0.85設置只選擇方差解釋比例超過85%的主成分第52頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV模型評估案例過程metrics = mean_absolute_error,mean_squared_error,median_absolute_error # columns = i._name_ for i in metrics # scores = cross_val_score(pipe_model, x, y, cv=3,scoring=make_scorer(i),n_job
33、s=-1) for i in metrics # 通過cross_val_score來做交叉檢驗reg_pd = pd.DataFrame(scores,index=columns).T.round(1) # print(reg_pd) # 指定cv數(shù)量為3,每個指標做3次交叉檢驗;scoring=make_scorer(i)將每個遍歷出來的評估指標函數(shù)轉換為評估對象;n_jobs=-1設置啟用所有的CPU資源做交叉檢驗計算,這樣可以提高計算速度第53頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV模型評估案例過程第54頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV模型評
34、估案例過程(1)mean_absolute_error:平均絕對值誤差(MAE),指所有單個估計值與算術平均值的偏差的絕對值的平均,平均絕對誤差可以避免誤差相互抵消的問題,因而可以準確反映實際預測誤差的大小。(2)mean_squared_error:均方差(MSE),估計值與真值之差平方的期望值,值越小越好,該指標計算方便,因此使用較為廣泛。(3)median_absolute_error:中值絕對誤差,與MAE類似,用中位數(shù)代替均值。第55頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV展示不同交叉檢驗結果案例過程reg_pd.plot(kind=bar,figsize=(10,
35、 4), logy=True,title=不同聚類分組結果對比)第56頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV預測新數(shù)據(jù)案例過程data_new = pd.read_csv(ad.txt) # cate_data_new = cate_model.transform(data_newcols) # num_data_new = num_model.transform(data_newMONEY) # x_new = np.hstack(cate_data_new,num_data_new) # print(pipe_model.predict(x_new).round(0)
36、# 第57頁,共147頁。7.3 使用主成分分析+嶺回歸預測廣告UV通過predict方法獲得結果獲得廣告UV量通過上述predict得到的結果,可以直接給到業(yè)務部門,然后業(yè)務部門基于UV值制定廣告目標、與營銷平臺做商務談判與合作等。需要注意的是,由于回歸預測得到的結果是浮點型,因此需要保留整數(shù)才能使用。第58頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量關聯(lián)的概念算法引言關聯(lián)分析通過尋找最能夠解釋數(shù)據(jù)變量之間關系的規(guī)則,來找出大量多元數(shù)據(jù)集中有用的關聯(lián)規(guī)則,它是從大量數(shù)據(jù)中發(fā)現(xiàn)多種數(shù)據(jù)之間關系的一種方法它也可以基于時間序列對多種數(shù)據(jù)間的關系進行挖掘。關聯(lián)分析的典型案例是“啤酒
37、和尿布”的捆綁銷售,即買了尿布的用戶還會一起買啤酒。第59頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量關聯(lián)的應用場景算法引言關聯(lián)規(guī)則相對其他數(shù)據(jù)挖掘模型更加簡單,易于業(yè)務理解和應用購物籃分析等,通過分析用戶同時購買了哪些商品來分析用戶購物習慣第60頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量關聯(lián)的常用算法算法引言Apriori、FP-Growth、PrefixSpan、SPADE、AprioriAll、AprioriSome第61頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量業(yè)務需求案例背景業(yè)務方希望數(shù)據(jù)部門能對用戶的購買數(shù)據(jù)做分析,從而得到
38、用戶的商品頻繁模式,例如哪些商品之間經常一起購買。這樣業(yè)務部門就能根據(jù)用戶的頻繁模式,做相應的打包銷售或產品組合銷售第62頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量需求解讀案例背景(1)業(yè)務方需求可通過關聯(lián)算法得到結果。(2)關聯(lián)分析的結果需要能給出一些針對性的指標和分析建議,這樣業(yè)務方可以有效選擇規(guī)則并應用。(3)默認的業(yè)務希望得到有效規(guī)則,但是實際上,除了給他們有效規(guī)則外,我們還可以提供頻繁的“互斥規(guī)則”給到業(yè)務方,來驅動他們避免互動信息給運營帶來的潛在風險。第63頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量從銷售系統(tǒng)中獲取,數(shù)據(jù)共10000條記錄、3
39、個字段列,無缺失值,具體如下:數(shù)據(jù)源概述(1)ORDER_ID:訂單ID(2)ORDER_DT:訂單日期(3)ITEM_ID:訂單中的商品ID第64頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量數(shù)據(jù)源關鍵信息點數(shù)據(jù)源概述由于每個訂單內可能包含有多個商品,因此一個訂單ID會有對應多個商品名稱的情況,并且多個商品會被拆分為多行第65頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量導入庫案例過程from dataclasses import dataclassimport pandas as pdimport aprioridataclasses 是Python3.7新
40、增用法,本案例導入用來定義類中用到的屬性Apriori則是本地的代碼庫,這是一個Python文件,里面已經封裝了實現(xiàn)apriori的邏輯的代碼第66頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量定義關聯(lián)應用類對象案例過程dataclassclass ASSO: # 類名 sup: float = 0.01 # 最小支持度 conf: float = 0.05 # 最小置信度 staticmethod def bulid_sets(data): # 構建數(shù)據(jù)集 order_data = dataORDER_ID, ITEM_ID # order_list = order_data
41、.groupby(ORDER_ID)ITEM_ID.unique().values.tolist() # 統(tǒng)計每個訂單中ITEM_ID的數(shù)量,對其做計數(shù)統(tǒng)計 return list(i) for i in order_list if len(list(i) 1 # def generate_rule(self, order_list): # L, suppData = apriori.apriori(order_list,minSupport=self.sup) # return apriori.generateRules(order_list, L, suppData,minConf=sel
42、f.conf) # 第67頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量讀取數(shù)據(jù)案例過程raw_data = pd.read_excel(demo.xlsx,sheet_name=3)print(raw_data.head(3)第68頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量調用類實例并構建數(shù)據(jù)集案例過程ass_model = ASSO(0.01,0.05) # order_list = ass_model.bulid_sets(raw_data) # 調用ass_model的bulid_sets方法,將上面讀取的數(shù)據(jù)傳入,將數(shù)據(jù)轉換為列表形式,其中每一個子
43、列表都是每個訂單內的商品ID列表。轉換后的數(shù)據(jù)格式為912614671, 919214556, 919214554, 913204601, 912538662, 912531673, 919214555, 910914651, 912614671, 912528662, 910420652, 919214556, 919214555, 912531673, 910527661第69頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量調用類實例并輸出關聯(lián)結果案例過程rules = ass_model.generate_rule(order_list) # columns = ITEM_
44、ID1, ITEM_ID2, INSTANCE, SUPPORT, CONFIDENCE,LIFT # model_result = pd.DataFrame(rules, columns=columns) # 規(guī)則原始樣例(frozenset(912528662), frozenset(910615651), 30, 0.0169, 0.119, 0.626), (frozenset(910615651), frozenset(912528662), 30, 0.0169, 0.089, 0.626),第70頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量調用類實例并輸出關聯(lián)結
45、果案例過程打印輸出前3條dataframe數(shù)據(jù) ITEM_ID1 ITEM_ID2 INSTANCE SUPPORT CONFIDENCE LIFT0 (912528662) (910615651) 30 0.0169 0.1190 0.62601 (910615651) (912528662) 30 0.0169 0.0890 0.62602 (919214555) (910615651) 28 0.0158 0.1481 0.7790第71頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量模型評估案例過程(1)前項:前項指規(guī)則中的第一個項目集。(2)后項:前項指規(guī)則中的第二個項
46、目集,前項和后項共同組成規(guī)則。(3)實例數(shù):特定規(guī)則在所有記錄中出現(xiàn)的頻次。(4)支持度:特定規(guī)則在所有記錄中出現(xiàn)的頻率,計算方式為:實例數(shù)/總記錄數(shù)。支持度越高說明規(guī)則出現(xiàn)的概率越頻繁,即越經常出現(xiàn)。第72頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量模型評估案例過程(5)置信度:包含前項的事務中同時包含后項的事務的比例(即前項發(fā)生后,后項發(fā)生的概率)。置信度越高說明這個規(guī)則越可靠。(6)提升度:“包含前項的事務中同時包含后項的事務的比例”與“包含 B 的事務的比例”的比例。提升度大于1說明規(guī)則是正向有效的,小于1說明規(guī)則是負向作用的,等于1說明規(guī)則沒有任何作用。一般情況下,
47、選擇大于1值的規(guī)則。第73頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量過濾lift1的規(guī)則案例過程valid_result = model_resultmodel_resultLIFT1print(valid_result.head()第74頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量過濾lift1的規(guī)則案例過程valid_result = model_resultmodel_resultLIFT1print(valid_result.head()第75頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量展示關聯(lián)分析結果案例過程from pyech
48、arts.charts import Graphfrom pyecharts import options as opts# 找到所有的節(jié)點,即前項和后項商品集合并添加node_data = valid_resultITEM_ID1.append(valid_resultITEM_ID2)value_count = node_data.value_counts()nodes = opts.GraphNode(name=str(node), symbol_size=int(np.log(value)*10) for node,value in zip(value_count.index,valu
49、e_count.values)links = opts.GraphLink(source=str(i), target=str(j) for i,j in valid_resultITEM_ID1,ITEM_ID2.values# 畫出關系圖graph = Graph()graph.add(, nodes, links, repulsion=2000)graph.set_global_opts(title_opts=opts.TitleOpts(title=商品交叉銷售關系)graph.render_notebook()第76頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量展示關
50、聯(lián)分析結果案例過程第77頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量如何通過關聯(lián)分析結果提高銷量?通過關聯(lián)分析結果提高銷量(1)捆綁銷售:將用戶頻繁一起購買的商品組成銷售包,每次售賣時組合銷售。(2)頁面促銷設計:將用戶頻繁一起購買的商品、品類、品牌等,放在較近的位置,方便用戶在查看特定商品內容之后,方便地找到其他要買的商品,減少內部轉化路徑的長度。第78頁,共147頁。7.4 使用Apriori關聯(lián)分析提高商品銷量如何通過關聯(lián)分析結果提高銷量?通過關聯(lián)分析結果提高銷量(3)貨架設計:線上商品陳列設計(例如不同類型的商品列表頁)、線下的貨柜或貨架設計,將用戶頻繁一起購買的商品
51、放到一起和臨近的位置。(4)活動促銷設計:在通過不同的方式精準觸達用戶時,例如使用EDM給用戶推送商品活動,將用戶經常購買的商品一起推送。(5)推薦系統(tǒng):當用戶將特定商品加入購物車之后,推薦他還可能買的其他商品,尤其在加入購物車按鈕事件觸發(fā)時、我的購物車頁面、提交訂單成功提示頁常用。第79頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面序列關聯(lián)的概念算法引言序列關聯(lián)相對于普通關聯(lián)分析的主要區(qū)別在于其中包含嚴格的前后序列關系。例如,用戶在不同的訂單下分別買了A和B兩個商品,與用戶在一個訂單一起購買了A和B商品所適用的關聯(lián)算法不同:前者屬于序列關聯(lián)模式,后者屬于普通關
52、聯(lián)模式。第80頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面序列關聯(lián)的應用場景算法引言用戶頁面瀏覽的先后行為分析用戶購買的商品的先后分析尤其在精準營銷、個性化推薦等方面應用廣泛第81頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面序列關聯(lián)的常用算法算法引言Prefixspan、GSP、FreeSpan第82頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面業(yè)務需求案例背景業(yè)務方從Google Big Query拿到用戶瀏覽頁面的詳細數(shù)據(jù),希望數(shù)據(jù)部門能對從中挖掘出用戶瀏覽的行為模式,然后基于該模式可以分析
53、不同用戶以及群組的行為路徑和特征,最終在頁面設計、活動促銷、站內運營、體驗優(yōu)化等方面做數(shù)據(jù)驅動的優(yōu)化。第83頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面需求解讀案例背景(1)業(yè)務方需求可通過序列關聯(lián)算法得到結果。(2)關聯(lián)分析的結果需要能給出一些針對性的指標和分析建議,這樣業(yè)務方可以有效選擇規(guī)則并應用。第84頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面從Google BigQuery系統(tǒng)獲取,共有9638條記錄,共3列,無缺失值,具體如下:數(shù)據(jù)源概述(1)FULL_VISITOR_ID:識別唯一匿名訪客所用的ID(2)PAGE
54、_URL:瀏覽的頁面URL(3)VIEW_TIME:瀏覽時間第85頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面數(shù)據(jù)源關鍵信息點數(shù)據(jù)源概述由于基于時間序列的關聯(lián),核心是要在原有關聯(lián)基礎上增加時間的關系,因此要求時間列必須能正確識別和解析,然后才能基于時間做排序。第86頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面導入庫案例過程from dataclasses import dataclassimport pandas as pdfrom prefixspan import PrefixSpan as pfs使用pip instal
55、l prefixspan 可安裝prefixspan第87頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面定義序列關聯(lián)應用類對象案例過程dataclassclass SEQV: mini_support: int = 2 # 最小支持度 max_len: int = 2 # 序列最大項目數(shù)量 staticmethod def bulid_sets(data: pd.DataFrame): # 將事務型數(shù)據(jù)轉換為序列數(shù)據(jù)集 order_list = data.groupby(FULL_VISITOR_ID)PAGE_URL.unique().values.tolis
56、t() order_records = list(i) for i in order_list order_filter = i for i in order_records if len(i) 1 return order_filter第88頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面定義序列關聯(lián)應用類對象案例過程# 繼續(xù)上一頁代碼 def fit(self, frequent_seq_data): ps = pfs(frequent_seq_data) # 建立對象 # TODO 設置最長和最短序列長度-只要二項集,這是挖掘規(guī)則數(shù)量的關鍵 ps.maxle
57、n = ps.minlen = self.max_len rec_sequences = ps.frequent(self.mini_support) # 獲取最小支持度為2的頻繁項集 return rec_sequences第89頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面定義序列關聯(lián)應用類對象案例過程# 繼續(xù)上一頁代碼 def format_output(self, rec_sequences): target_sequence_items = i0, i10, i11 for i in rec_sequences # 格式化二項集 sequences =
58、 pd.DataFrame(target_sequence_items, columns=SUPPORT, ITEM_ID1,ITEM_ID2) # 建立數(shù)據(jù)框 # 按支持度倒敘排序 sequences_sort = sequences.sort_values(SUPPORT, ascending=False) return sequences_sortITEM_ID1, ITEM_ID2, SUPPORT第90頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面讀取數(shù)據(jù)案例過程page_data = pd.read_excel(demo.xlsx,sheet_nam
59、e=4) # print(page_data.dtypes) # print(page_data.head(3) # 第91頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面按時間排序案例過程page_sort = page_data.sort_values(FULL_VISITOR_ID,VIEW_TIME)print(page_sort.tail(3)第92頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面應用序列關聯(lián)分析案例過程seq_model = SEQV(mini_support=2,max_len=2) # frequent
60、_seq_data = seq_model.bulid_sets(page_sort) # rec_sequences = seq_model.fit(frequent_seq_data) # sequences_sort = seq_model.format_output(rec_sequences) # print(sequences_sort.head(3) # 第93頁,共147頁。7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面如何引導用戶訪問特定頁面通過序列模式引導用戶頁面訪問行為假如用戶在訪問了bagmncode.html之后,應該引導用戶訪問其他哪些頁面,才能在保
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JG/T 5105-1998機械式停車設備分類
- JG/T 424-2013建筑遮陽用織物通用技術要求
- JG/T 36-1999編寫土方機械使用說明書的一般規(guī)定
- JG/T 198-2007建筑對象數(shù)字化定義
- DZ/T 0276.10-2015巖石物理力學性質試驗規(guī)程第10部分:巖石膨脹性試驗
- DZ/T 0101.8-1994地質儀器儀表制造時間定額沖壓
- DZ/T 0006-1991地質勘查規(guī)程規(guī)范編寫規(guī)定
- DZ 0004-1991重力調查技術規(guī)定(1∶50 000)
- CJ/T 109-2007潛水攪拌機
- 基礎知識的軟件評測師試題及答案
- 裝修公司合同保密協(xié)議書
- 2025-2030中國公路建設行業(yè)發(fā)展分析及發(fā)展前景與趨勢預測研究報告
- 2025購銷茶葉合同范本
- 戶外場地安全課件
- 研究我國平臺企業(yè)在社會責任履行及其治理機制的現(xiàn)狀與問題
- 叉車使用安全協(xié)議書
- ai訓練師面試題及答案
- 2024-2025學年人教版數(shù)學五年級下學期期末試卷(含答案)
- 安全管理:承包商安全管理制度(模板)
- 2025年湖北省新華書店(集團)有限公司招聘筆試參考題庫附帶答案詳解
- 2025年宣城郎溪開創(chuàng)控股集團有限公司下屬子公司招聘12人筆試參考題庫附帶答案詳解
評論
0/150
提交評論