大資料環境下整合R語言的資料探勘平臺 之介紹、資料上傳與資料預處理
這個整合R語言的資料探勘平臺是當時為中國軟體杯比賽做的一個系統,由於時間太緊,當時開發只用了一週的時間,不過前前後後用了大半年來學習和熟悉R語言,深深感覺到R語言真的是資料分析的一個利器,內建的各種分析包大大簡化了資料分析的過程,只需要傳參呼叫即可,再也不需要讀懂演算法才能完成分析了。但是,R語言當前還是需要以命令列的形式使用的,RStudio也只是優化了應用程式的介面,沒有方便的針對業務人員的一個應用。我們做這個平臺的初衷就是:
- 圖形視覺化。讓使用者使用圖形化介面進行操作。使用者可以設定資料來源,選擇分析方法,設定分析引數,建立分析流程,不用編寫R程式碼就能夠進行資料分析,得出結果。
- 多種資料分析方法。系統提供分類、聚類、關聯規則挖掘、時間序列等多種分析方法,裡面又內建多種不同的分析演算法。
- 大資料分析。能夠支援TB級資料。
所以一切的開發都圍繞著這三個方向來:
- 實現Java呼叫R來畫圖,並用Struts2+Hibernate開發網站進行呈現。
- 瞭解各種資料分析方法,用Java呼叫R進行演算法實現。
- 搭建分散式環境,用Hadoop實現KMeans和KNN。
在初步調研後,我們很快確定了系統架構(這樣的架構在當時能夠做出來現在想想也是挺有模有樣的。):
以及功能模組圖:
下面就分別對這些模組進行介紹:
資料上傳、摘要模組
流程圖
功能
本模組主要包括了兩個部分,一部分負責檔案上傳,一部分負責資料摘要的產生。在資料上傳中,選擇我們需要上傳的檔案,上傳後資料將儲存在伺服器,然後我們設定資料引數,其中有資料分隔符,要跳過的行數,是否存在空缺值等。系統將自動分析出資料集相關資訊,並將資料集摘要、資料摘要與原始資料顯示給使用者。顯示的資訊包括資料每一維的名字,每維的中位數,平均數,最大值,最小值缺失值比例等。通過資料摘要,使用者可對資料集有整體的理解,系統還提供了資料視覺化、判斷相關性、檢驗正態性、識別離群點等功能。
實現原理
檔案上傳通過Ajax + Struts2實現,在專案中我們設定每次上傳單個檔案,檔案大小為1G,後續可根據需求設定檔案大小閾值。
在上傳資料至伺服器後,系統將資料集載入記憶體,通過使用者設定的讀取引數使用R語言read函式進行讀入。讀入方式如下:
在讀入資料後,系統計算出資料集和資料的摘要,包括,計算方法如下:
系統提供資料視覺化功能,可根據資料集的屬性顯示相應的影象。系統提供的影象如下表所示:
系統還提供判斷相關性、檢驗正態性以及識別離群點的功能。
使用者可通過繪製散點圖、氣泡圖,以及散點圖矩陣對資料相關性進行視覺化。
- 散點圖可以一次對兩個定量變數的關係進行視覺化。
- 在散點圖矩陣中則可以看到所有指定變數之間的二元關係。
- 在氣泡圖中,可以先建立一個二維散點圖,然後用點的大小來代表第三個變數值,從而更加明確的顯示出變數之間的關係。
使用者可以通過繪製QQ圖來檢驗正態性
- QQ圖通過繪製變數值和正態分佈的理論分位數的散點圖。同時,它能夠給出正態分佈的95%置信區間的帶狀圖。
另外,在這裡,使用者可以通過繪製點圖、箱線圖以及直方圖來初步的檢驗離群點。
- 當有離群值時,點圖在原有資料的基礎上分別顯示了資料集的均值、均值加一個標準差,以及中位數,從而提供變數的分佈資訊。
- 箱圖能夠快速的提供變數分佈的一些關鍵屬性的摘要,箱圖上方小橫線下面或者下方小橫線下面的小圓圈表示與其他值相比特別大或者特別小的值,通常被認為是離群點。
- 平滑版本的直方圖,通過在X軸附近繪製變數的實際值,從而更容易識別離群點。
以上分析影象的生成方法如下表所示:
資料預處理模組
流程圖
功能
在預處理模組,系統提供了缺失值處理以及噪聲點處理兩項功能。
在缺失值處理中,系統將列出缺失值記錄列表,包括含有缺失值的行記錄 。在左下方將列出缺失值資訊的散點圖、真實值與缺失值矩陣圖、以及資料集缺失值模式圖,使用者可以通過圖形直觀的看出資料集中的缺失值。
系統還提供了缺失值處理的五種方法,包括簡單插值估計,使用者可選擇用中位數、平均值、最大值、最小值 、一分位以及三分位對資料進行簡單插值估計。使用者還可以使用基本時間尺度內插、等距間隔插值、個案刪除等方法,對於缺失值資料量較大的資料集,可以選擇大量缺失值處理方式進行資料預處理。
實現原理
系統通過讀取資料集,使用!complete.cases方法獲取含有缺失值的資料框,對其進行統計,將含有缺失值的記錄以列表形式顯示出來,並通過繪製缺失值資訊散點圖、真實值與缺失值矩陣圖,以及缺失值模式圖三種圖形視覺化缺失值。繪製圖形方法如下:
使用者通過圖形對缺失值視覺化後,可選擇處理缺失值的方法,系統提供了五種基本方法:簡單插值估計、基本事件尺度內插、等距間隔內插、個案刪除以及大量缺失值處理。其實現方法如下:
使用者上傳資料後可以對上傳的資料進行異常點檢測,異常點檢測主要包括兩種方式,一種是QQ圖正態性異常點檢測,還有一種是線性迴歸異常點檢測。
- QQ圖異常點檢測,通過對使用者選定的屬性進行QQ圖顯示,使用者可以通過圖很直觀的看出資料是否滿足正態性,如果不滿足正態性,使用者將需要對資料進行一定的調整
- 線性迴歸異常點檢測是通過對使用者選定的屬性進行迴歸建模,然後通過outlierTest函式對模型進行檢測,列出資料中的異常點。