
文章來源:gzh數據萬花筒
文章鏈接:https://mp.weixin.qq.com/s/7uBQ3_sR2j_zxH8mj7nKeQ
點擊上方藍字關注我們

因果推斷系列文章分為上下兩篇,目錄結構如下所示,上篇文章可點擊閱讀原文查看。
利用Dowhy框架進行因果分為推斷上下兩篇
上篇
1.Dowhy因果推斷框架
2.數據來源及預處理
3.數據相關性探索
下篇
因果推斷實現
1.計算期望頻數,初步判斷因果關系
2.基於假設創建因果圖
3.識別因果效應
4.估計因果效應
5.反駁結果

這篇文章是基於上篇的基礎繼續分析,前面數據預處理的過程可以通過閱讀全文查看源代碼,這篇文章主要聚焦於因果推斷的實現。
因果推斷實現
完成數據預處理和相關性分析之后,各個變量間的相關性已有了初步的結果,但變量間是否存在因果關系我們還不得而知,需要進行進一步地因果推斷,即利用Dowhy框架,通過建模,識別,估計,反駁四個步驟實現。
1.計算期望頻數,初步判斷因果關系
由相關性分析可知,客戶取消預訂與“停車位”、“總共居住天數”以及“預定房型與分配房型不同”三個因素相關性較高。除此以上三個因素之外,還有部分因素與客戶取消預定呈現微弱相關性,例如,“預定變更”、“特殊要求”等因素。
相關不一定等同於因果,而且由圖9-10可知,數據集中正負樣本比例是不均衡的,所以此處需要對因果關系進行初步地探究。於是對於變量“取消”、“預定房型與分配房型不同”,在數據集中隨機選取1000次觀測數據,統計兩個變量值相同的次數,即如果酒店為客戶分配了與預定房型不同的房間客戶取消訂單的次數,重復上述過程10000次取平均值,實現代碼如下。
counts_sum=0
for i in range(1,10000):
counts_i = 0
rdf = data.sample(1000)
counts_i =rdf[rdf["is_canceled"]==rdf["different_room_assigned"]].shape[0]
counts_sum+= counts_i
counts_sum/10000
517.9752
理論上,這個次數應該是總觀測次數的50%,因為面對酒店分配與房型不符的房間時,客戶要不取消預訂,要不接受房型調整。如果這個次數接近總觀測次數的50%,那么可初步說明兩兩變量之間可能存在一定因果關系。
最終得出的期望頻數為518,即如果為客戶分配與預訂不同的房型約50%的概率客戶會取消預定。
預定變更,即變量“booking_changes”,也是造成酒店分配與預訂時不同房型的影響因素之一,所以去除該變量的影響也較為重要。因此,此處隨機選擇預定變更次數為0的1000個用戶,重復10000次上述的隨機試驗后取平均值,實現代碼如下。
counts_sum=0
for i in range(1,10000):
counts_i = 0
rdf =data[data["booking_changes"]==0].sample(1000)
counts_i =rdf[rdf["is_canceled"]==rdf["different_room_assigned"]].shape[0]
counts_sum+= counts_i
counts_sum/10000
492.0499
對於預定變更次數為0的客戶,最終得出的期望頻數為492,約占樣本的50%,是符合預期的。
對於發生預定改變的用戶,同樣選擇1000個客戶,進行上述的隨機試驗10000次,實現代碼如下。
counts_sum=0
for i in range(1,10000):
counts_i = 0
rdf =data[data["booking_changes"]>0].sample(1000)
counts_i =rdf[rdf["is_canceled"]==rdf["different_room_assigned"]].shape[0]
counts_sum+= counts_i
counts_sum/10000
663.4134
而對於預定變更次數大於0的客戶,最終得出的期望頻數為663,期望頻數發生較大差異。這一結果提示我們“預定改變”可能是一個混雜變量。
但是影響客戶取消預訂的混雜變量可能不止“預定改變”一個,面對這種情況Dowhy框架會將未指明的變量都作為潛在的混雜變量進行推斷。
2.基於假設創建因果圖
基於期望頻數的探索以及數據分析師自己的經驗,對於變量之間的關系,我們做出如下的假設。
-細分市場,即“market_segment”字段,包括了兩種類別即“個人”和“旅行社”。這里表示酒店預訂來源,預訂方式會影響客戶從預定酒店到到達酒店之間的時間,即“lead _time”字段。
-國家,即“country”字段,是指客戶旅行的目標國家。目標國家的旅游熱度會影響用戶是否會提前預定酒店,從而對“lead_time”造成影響;同時不同的國家有不同的飲食習慣,因此目的國家和美食,即“meal”字段,之間也有一定關聯。
完整文章請移步gzh數據萬花筒,https://mp.weixin.qq.com/s/7uBQ3_sR2j_zxH8mj7nKeQ
