下邊我們就來看一下如何利用 modeler 來幫助我們進行數(shù)據(jù)理解:
使用 modeler 進行缺失值分析
什么是缺失值?
缺失值就是指數(shù)據(jù)文件中的某些數(shù)據(jù)項是未知的值。幾乎所有的商業(yè)數(shù)據(jù)挖掘中,都要遇到缺失值的問題,有可能是數(shù)據(jù)采集中的失誤,有可能客戶不愿意提供某些信息,面對這樣的數(shù)據(jù),我們該如何是好 ? 使用這樣的數(shù)據(jù)可能會對我們后期的建模產(chǎn)生不可預料的影響。如果丟棄,這些數(shù)據(jù)中可能包含著寶貴的信息。下邊我們就來看一下如何利用 modeler 來進行缺失值分析:
缺失值示例
第一步我們需要利用 modeler 來確定數(shù)據(jù)文件中缺失值的類型和數(shù)量。然后才能做進一步的處理。
首先我們看一下我們例子中需要用到的數(shù)據(jù):
從上圖中我們可以看到編號有些記錄的值是缺失的。
接下來我們打開 modeler,新建 stream,拖入一個“可變文件”節(jié)點到工作區(qū)。雙擊節(jié)點。選擇示例數(shù)據(jù)文件作為輸入。然后我們點擊“可變文件”節(jié)點的預覽按鈕。得到結果如圖:
從預覽圖里我們可以看出記錄 002 的年齡為 null,性別為空 , 這兩個值都可以被 modeler 自動識別為缺失值。這是 modeler 針對不同類型的數(shù)據(jù)做了不同的處理。這里年齡被 modeler 識別為整數(shù)類型,性別被識別為字符串類型。另外我們發(fā)現(xiàn) 005 的電話號碼依然為“無”,并沒有做任何替換。著我們這個示例里電話號碼“無”是一個語義上的缺失值,在很多數(shù)據(jù)文件中都可能含有這樣的信息,那么在 modeler 里怎么定義這樣的缺失值呢?這個我們稍后會做介紹。
利用“數(shù)據(jù)審核”節(jié)點審核數(shù)據(jù)
“數(shù)據(jù)審核”節(jié)點可以提供給我們很多有用的信息,其中就包括數(shù)據(jù)缺失值信息。下邊,我們就將“數(shù)據(jù)審核”節(jié)點加入到我們的 stream 中來,連接“可變文件”節(jié)點和“數(shù)據(jù)審核”節(jié)點,運行 stream,我們可以得到下圖
從上圖中我們可以看到很多有用的信息,數(shù)據(jù)的分布圖形,數(shù)據(jù)的類型,統(tǒng)計值等,在這里我們要關注的是最后一列有效數(shù)據(jù),這里我們發(fā)現(xiàn)年齡,性別,學歷,月收入的有效值都不是 30,這說明 “數(shù)據(jù)審核”節(jié)點已經(jīng)成功的幫我們識別出了這兩列的缺失值。同時我們可以發(fā)現(xiàn)電話這一項的有效數(shù)據(jù)仍然是 30.
下邊我們就來看看如何在 modeler 中定義缺失值。
缺失值定義
雙擊“可變文件”節(jié)點,選擇類型頁。如下圖:
在類型頁里我們發(fā)現(xiàn)有一列名為“缺失”,我們在電話這一列我們點擊缺失這以空白項。
我們選擇指定…,會打開一個新的頁面:
如上圖,我們選擇“定義空白”,添加一個缺失值為“無”。然后點擊確定,關閉窗口。
接著我們再來運行數(shù)據(jù)審核,得到如下結果:
這次我們可以發(fā)現(xiàn)電話這一項的有效數(shù)據(jù)變成了 29. 說明我們定義的缺失值成功了。
然后我們選擇“數(shù)據(jù)審核”節(jié)點的質量頁,如下圖 :
從上圖中可以看出完整的字段為 37.5%,完整的記錄為 83.33%,這時我們可以決定如何處理缺失值,如果我們完整的字段占的比例很高,那么我們一般應該過濾掉包含缺失值的字段然后進行建模。另一種情況,如果完整記錄所占比例較高那么我們應該刪除那些含有缺失值的記錄然后進行建模。
modeler 考慮到這兩種情況,提供了非常實用的功能來幫助我們進行數(shù)據(jù)的篩選。我們打開數(shù)據(jù)審核結果,選擇質量頁面,單擊工具條上的生成按鈕,里邊可以選擇生成列的過濾節(jié)點,或者值的選擇節(jié)點。生成的節(jié)點可以幫助我們自動過濾含有缺失值的行或者列。
上面所說的對缺失值的處理是刪除含有缺失值的列或者行,還有一種辦法是我們可以對缺失值進行填充,比如我們可以用缺失值所在列的平均值,隨機值來進行填充,或者我們對該列進行建模預測,來達到填充缺失值的目的。
使用 modeler 進行異常值分析
什么是異常值
異常值就是數(shù)據(jù)文件中那些和其它值相比有明顯不同的值,它們可以通過觀察數(shù)據(jù)分布來確定。
在具體考慮異常值時,我們需要注意異常值的類型,一般分為兩種,一種是可枚舉類型,比如超市里的商品名,商品名不可能有異常值。假如我們利用會員購買的商品來預測他會不會購買體育用品,因為商品很多,使得購買相同商品的用戶數(shù)量很少,所建模型就會很不穩(wěn)定。這時我們應該對商品進行抽象,比如抽象為水果,零食,日用品,蔬菜,化妝品等,用這樣的數(shù)據(jù)進行預測,就會使模型可靠性提升。利用 modeler 里的“分布”節(jié)點可以對這種可枚舉類型的數(shù)據(jù)進行分組。
假如我們有上表這樣的數(shù)據(jù),我們如何將商品進行抽象分組呢?首先我們建立一個 stream,用“可變文件節(jié)點”來讀取數(shù)據(jù)。然后連接一個“分布”節(jié)點。運行分布節(jié)點,得到下圖。
比如我們可以選擇梨,蘋果,然后右鍵選擇“組”,建立一個水果組。類似的建立一個化妝品組。然后我們可以選擇“生成”菜單,讓 modeler 自動幫我們生成一個分組節(jié)點。這樣,我們就可以用水果,化妝品這樣的具有一定抽象意義的值來代替原來具體的值。
另一種類型就是連續(xù)型數(shù)據(jù),比如用戶收入,用戶年齡等。對于連續(xù)型數(shù)據(jù),運行數(shù)據(jù)審核節(jié)點,在質量頁面我們就可以查看離群值和極值。默認情況下,modeler 是根據(jù)平均值的標準差來確定離群值和極值的。在運行“數(shù)據(jù)審核”結果頁面我們也可以設置離群值和極值的處理方法
選擇工具條里的生成按鍵,選擇離群值和極值超節(jié)點。這時,modeler 會幫我們自動生成一個過濾離群值和極值的超節(jié)點。我們連接“可變文件”節(jié)點和這個超節(jié)點,modeler 就會幫我們按照我們期望的處理方式來處理離群值和極值。
還有一種異常值是需要多個列組合才能看出來。比如某顧客每個月在超市消費額都在 1000 以上,但是他的會員信息顯示他的月收入為 1000 元,這條記錄就可以被識別為異常值。需要進一步分析。同樣 modeler 也提供了相應的功能來幫助我們識別這樣的聯(lián)合分布的異常值。
從上邊的數(shù)據(jù)中,我們很難發(fā)現(xiàn)哪條數(shù)據(jù)有異常,下邊我們就用 modeler 里的“圖”節(jié)點來幫助我們分析數(shù)據(jù)。
我們將“可變文件”節(jié)點的數(shù)據(jù)文件指向示例數(shù)據(jù),添加一個“圖”節(jié)點,并雙擊“圖”節(jié)點,如圖:
這是我們能明顯看到左上角的一個異常值,鼠標移動到這個點上,我們可以看到這個點所代表的詳細信息。
使用 modeler 觀察數(shù)據(jù)項之間聯(lián)系
對于數(shù)據(jù)挖掘來說在進行真正的建模之前,通過觀察數(shù)據(jù)項之間的關系,特別是輸入數(shù)據(jù)項和目標數(shù)據(jù)項之間的關系,是非常有意義的,它能快速的讓我們對數(shù)據(jù)之間的關系有個大概了解,精簡一些不必要的數(shù)據(jù)項,提高建模速度和穩(wěn)定性。
下邊我們就以超市調查結果來看,其中已經(jīng)將會員消費記錄整合成水果,蔬菜,日常用品,零食等,這些列的數(shù)字代表此項消費在該會員所有消費中所占的百分比。最后一列表示用戶是否對體育用品優(yōu)惠活動感興趣。
同樣我們新建一個 stream,加入一個“可變文件”節(jié)點,修改文件路徑到示例數(shù)據(jù),然后,我們連接一個“均值”節(jié)點。雙擊“均值”節(jié)點,進入編輯:
我們選擇接受為分組字段,年齡,月收入,水果,蔬菜,日常用品,零食為測試字段。
然后,我們運行“均值”節(jié)點,得到下表:
從統(tǒng)計數(shù)據(jù)來看,可以決定用戶是否對體育用品感興趣的重要因素為水果,日常用品,年齡,蔬菜。而零食和月收入對預測影響較小。