RM 案例分享(二)
RapidMiner在業界中有很多實際的應用,這些案例都是RapidMiner自带的,都是真實存在的,大家可以用同樣的操作對案例有一個很好的理解和應用。
01|案例說明
在實際的工作中,除了數據本身需要處理之外,同時也需要對所建立模型進行檢驗與了解。所以在這個過程之中我們學習2個比較進階的功能:一個是關於决定屬性和结果之間的關係,從而判斷哪些是更重要的屬性;另外一部分則是在使用模型的时候,如何做更細緻的控制。
案例使用的模型,是一個典型的直接郵件模型,在市場營銷中,通常通過郵件和客戶之間互動或是推銷,雖然現在可能郵件的功能不如社群網路,但是其中的道理是可以一樣的。只要能掌握相關的客戶資料,就可以預測客戶的反應,從而制定和評估市場營銷的策略。但是不見得所有的屬性都很重要,我們希望知道在這麼多的屬性之中,哪一個是最為重要和關鍵的屬性,可以作為KPI 來做設定。整體的流程如下圖所示:
同時在使用模型的過程之中,我們也希望了解如何使用模型的參數來符合實際的需求,而不是只依靠系统的缺省值而做設定,這樣系统的預測才能和實際的结果更為的吻合。
02|數據資料
第一步基本仍然是讀入和理解數據,來檢查數據本身的質量、種類和相關信息。除了基本的數據觀察,比如有無缺失,或者數據的種類之外,我們也可以將鼠標點擊每一個屬性,來得到其基本資料和數據的分布(如果有需要,也可以使用圖形下方的可視化連接,直接打開圖表頁面)
而這邊比較有意思的是,可以看到在數據的種類列表中,有2個三角形的警示標誌如下圖所示。這個警示標誌只是作為一個建議;意思是說,如果模型使用的“年纪”或者“性别”不同,則可能會產生出在使用上造成不同的可能,並不是對於结果有質量的影響。這個只是作為一個參考,是否使用仍然是由用戶自己决定。
而對於數據本身的相關性,似乎並沒有特别的主要關聯。通常我們可以通過使用分散式矩陣(Scatter Matrix) 和分散式3D圖(Scatter 3D),來檢視數據和目標值的關係,而這是一個很好的起始點。
03|操作流程
Step1讀入數據
這個步驟是一個很標準的操作流程,基本上將數據讀入之後,對於數據可以進行初步的了解。然後將不需要的屬性(如Name)直接去掉,並使用一個複製(Multiple)的算式將數據分為二组,一组是計算數據權重,另外一组則是建立模型。
Step2 分析權重
這個部分,基本上也是將屬性和目標之間的關係做一個判斷,將對目標更有影響力的數據屬性用數值標示出來。這個部分可以使用多種方式來作一個基本的判斷,如屬性和目標值的關聯係數計算,或是信息增益量(Information Gain)。這個計算的方式類似於,可以把它想象成做一個簡單的決策樹,而對於结果影響較重的屬性,给予一個更高的權重值。在參數的設定中,如果將所有的權重值做一個常態化,所有的數值將會介於(0,1)之間。通過這個方法就可以更清楚地知道對於结果而言,哪一個屬性更為重要。
我們可以直接先看结果,如下圖所示:
從圖中可以清楚的看出,對於结果而言郵件是最重要的屬性,而在4周之内是否有回應這是第2重要的屬性,反而年纪和性别在裡面是屬於最低。但是這個结果也是可以理解,如果郵件的種類是屬於高级帳號(Premium),自然和公司的互動更好,所以更容易回覆,而另外一類屬於免費郵件帳號(Free),互動本來就比較低,所以自然回覆的可能性就較低。同時在4周之内回覆的,通常都比較活躍,所以也更容易回覆。
Step3: 模型建立/檢驗
這個步驟相對就比較標準化,通過交叉檢驗的方式,我們使用樸素貝葉斯的模型,然後再檢驗這個模型的準確度。雖然系统沒有輸出,但是如果有興趣,可以直接將其檢驗的结果,另外再連接到輸出端口,就可以看到模型的準確度。
Step4: 使用模型
這個步驟基本上就是將外部的未知數據直接帶入,然後再用一個模型使用(Apply Model)的算式,將模型的结果直接輸出。
但是如果各位在這邊設立一個停止點,然後看其預測的结果。就可以觀察到结果,包括預測值和預測的信心度(Confidence)。系统内置的信心指數是以0.5作為標準閥值,超過就是Yes, 而低於0.5 就是No。但這未必是最好的閥值,因為有些時候模型使用0.5的信心度並沒有辦法將系统中的數據準確的分類。這個時候就需要使用閥值調整的方式,來將模型的使用度提高。
Step5: 閥值優化
閥值優化的方式是將原來交叉檢驗的算式對於訓練數據结果而進行判斷優化。在原來系统的缺省閥值是以0.5作為分類。如果通過在這裡設立一個停止點,我們可以觀察其以0.5為閥值的表現並不理想,可以在數據的列表中觀察到,在0.5 附近的預測结果和實際结果,並不是很準確。如果以圖形表示,則在下圖裡面可以看到,有很多應該是預測的结果與實際並不相同(也就是藍色點和綠色點的分布並不是很清楚的分開)如下圖所示:
在這裡使用了一個複合算式(Process),但是通過確定閥值(Find Threshold)的算式,其使用ROC的計算來做判斷。注意這邊有参數的設定,就是如果分類錯誤的“成本”,也就是說如果某個數據的分類分錯了,對於结果會造成具大的影響。通常兩邊可以都做相同的數值,但是對於這個案例,我們設定是如果第一類的成本是“1.0”,也就是說如果原本不會回應的人,系统卻判斷會回應,並發郵件给這個人,所造成的損失不會太大。但是如果反過來,對於可能會回應的人,但是我們判斷不會回應而没有發郵件,這樣可能就會損失很大,所以對於第二類的錯誤我們設定為“3.0”。通過這個算式,可以找到一個更好的閥值,並且也將對實際會造成的成本納入計算,如下圖所示:
經過這個操作之後,它的分類標準重新調整為0.000000339,換句話說,基本是將很多原來完全不可能會發送郵件的客戶(閥值0.5 的结果是787個No,213個Yes),都纳入了考慮而重新調整(閥值3.39E-7的结果是522個No, 478個Yes),整體的準確度就能更有效的提升。而通過使用閥值(Apply Threshold)的算式,它將系统原來0.5的閥值重新定位成新的數值,讓使用也更為有效。
04|结果說明
這個部分說明了對於系统所建議的一些數值,我們仍然要去進行了解和掌握。尤其是對於商務應用的時候,會有很多的實際考量,比如在這裡對於錯誤分類的成本,都要纳入計算之中,而得到一個更為靠近實際需求的结果。
05|建議練習
1. 明白權重與屬性之間的關係,以决策樹的方式表現出來?
2. 調整對於閥值優化中的成本數值的差異,看看所對於的閥值和其分類Yes/No的數值如何?
3. 依照原來的區分方式區分,則系统的錯誤成本會是多少?
06|關於暢品科技有限公司
暢品科技有限公司是國內 RapidMiner的總代理公司,具有多位元國內外專家,致力於資料分析的實用化和相關諮詢培訓。公司對於數據資料行銷、管道管理、工業自動化、物聯網等行業有實際業務提供專業的服務。如有需要歡迎與關注我們的資訊(QR code)並與我們實驗室聯絡。
實踐大學數據分析實驗室
reskm98@gmail.com
07-6678888-4380








留言
張貼留言