今天,大數據、數據科學、機器學習分析不再只是熱詞,已經真實地滲透于生活方方面面。根據福布斯,到 2025 年,全球每年將會有 175 澤字節的數據產生。Kyligence 的誕生為企業帶來了極速的大數據分析體驗 。當企業要對大規模的數據進一步進行更為復雜的分析如對銷售額進行預測時,傳統的分析工具就捉襟見肘了 。
這篇文章將以基于 Spark 的分布式機器學習平臺 Databricks 為例,為您提供一套從以 Kyligence 為數據源到分布式數據分析平臺的高效無縫的解決方案。
對企業未來銷量進行預測是一個很普遍的分析需求。分析師需要先以不同的時間粒度如日或月,或者是其他維度粒度如地區,商品等聚合數據,然后按不同的算法預測聚合后的數據。相類似的預測、分析場景還有很多,如運維數據的異常值檢測,金融數據的反欺詐識別,銷售數據的用戶畫像等。在數據被深入挖掘之前,都需按維度列或時間戳聚合數據。然而想順滑地聚合如此海量的數據,并且深入挖掘數據并不簡單。
對海量數據進行挖掘的難點
聚合大量數據,復雜度高,所耗時間長
當數據量呈規模式增加時,即使是執行一條簡單的篩選查詢也會消耗很多時間,并且查詢語句復雜度越大,執行語句所花時間就會越長。因此,數據科學家稍調整篩選條件,就會重新陷入等待中。
分析維度的粒度很難隨意變動
由于高額的查詢成本,數據科學家們會更傾向于聚合有潛在關聯的數據維度。這種前瞻性在提高數據科學家們分析效率的同時,也局限了他們的數據探索能力,導致錯失發現一些不易察覺的數據規律的機會。
無法實現數據源到分析平臺的無縫連接
目前,在大數據領域,數據科學家們最常用的預處理數據工具主要有 Hive,Spark,Pig,Scala 等。而如果想對這些數據進一步的分析,需要從這些工具中導出聚合后的數據,再將其導入到機器學習平臺。導入導出看似為簡單操作,實際上會打破分析人員工作的連貫性,尤其是當導入導出數據量過大時,他們的工作效率會大大降低。
機器學習工具復雜,生命周期難以管理
工具太過復雜、難以跟蹤實驗、難以重現結果、難以部署模型。很多企業已經開始構建內部機器學習平臺來管理機器學習生命周期。但這些內部平臺存在一定的局限性:典型的機器學習平臺只支持一小部分內置算法或單個機器學習庫。用戶無法輕易地使用新的機器學習庫,或與社區分享他們的工作成果。
解決方案:Kyligence + Spark
在分析師拉取數據之前,通過 Kyligence 將所需要的所有分析數據都已經以不同的維度、粒度提前聚合好,使得分析師們在極短時間內能直接獲取數據。在獲取聚合好的數據后,分析師們也無需先將數據導出,再導入專業的支持機器學習的分析平臺,也無需再因為適配不同的機器學習方法而安裝各種環境。而是直接在該專業的數據分析平臺上獲取數據,在適配好的環境中,用不同的方法進行近一步預測和分析。
?
?
Kyligence 與 Databricks 數據處理流程
應用門檻低,學習成本小
大數據分析普遍會采用分布式存儲及計算,使用者需要用了解 Java, Hadoop, Hive, Pig,Spark 等等大數據知識。而 Kyligence 為用戶提供了 SQL 查詢接口,Databricks 也提供了支持各種機器學習語言的環境,用戶無需了解底層原理,就能處理分析海量數據,擁有極佳的用戶友好度。
亞秒級查詢,隨意轉換特征值
相較于傳統的將數據聚合過程放在數據分析中,此方案在分析師分析數據之前已完成數據處理及聚合。Kyligence 可提前以不同的維度,維度粒度預聚合數據。因此,無論分析師要求獲得以何種維度聚合的數據,都能在亞秒級內得到返回結果。數據量,時間成本不再是試錯特征值的制約條件。
數據源與分析平臺無縫連接
以往的大數據在被分布式計算后,如果想用機器學習進一步分析,往往需要將數據導出,再導入機器學習分析平臺。而 Kyligence 和 Databricks 的組合允許用戶直接從數據分析平臺上獲取數據,無需導入導出。在 Databricks 的 notebook 中,用戶可通過 SQL 語句直接獲取被 Kyligence 預聚合的數據,省去遷移數據,轉換數據格式的麻煩。
專業機器學習分析平臺
Databricks 基于 Spark 提供用戶一個專業的分布式機器學習分析平臺,支持完整的機器學習生命周期。為用戶提供完備的機器學習環境,用戶無需自配置環境就可使用各種流行算法。
應用案例
一家名為 “Contoso ”的企業 擁有超過 100,000 的產品,數據集就包含多個事實表和維度表,數據量最大的事實表包含 2 千萬條在線銷售數據。(Contoso 是微軟虛擬的一家公司,其產生的數據主要用于模擬各種企業場景下的數據分析。)
分析目標: 根據 2007 年 1 月到 2009 年 5 月 31 日的在線銷售數據預測下半年的銷售額
Step 1: 數據處理
先將數據導入 Kyligence 中,然后轉到 Azure Databricks 的頁面,通過 PyPI 連接 Kyligence,輸入 SQL 獲取聚合數據數據,并且這一過程的數據導入所耗時間不超過兩秒。SQL 返回的數據集存儲為 Pandas 數據表格,然后對該數據表格處理為我們想要的格式,即對銷售量按月聚合,產生每月銷售量的數據集。然后用 LSTM 進行銷量預測。
?
?
step 2: 數據分析
生成模型訓練數據集
?
?
訓練集的窗口長度是指需要幾個時間點的值來預測下一個時間點的值。在這里窗口長度為 1,即用 t 次的時間間隔進行模型訓練,然后用 t+1 次的時間間隔對結果進行驗證。數據集格式為:dataX 為訓練數據,dataY 為驗證數據。我們選取數據集中前 36 的數據作為訓練集,后 6 的數據作為測試樣本集。
LSTM 模型結構與參數設置
?
?
選定模型訓練的 epoch(總的訓練輪數)為 100 和 batch size(每次訓練的樣本數)為 1,并在 LSTM 層的輸出后面加入一個普通的神經網絡全連接層用于輸出結果的降維。
step 3: 結果展示
?
?
上圖藍線為真實值,黃線為預測值。可以看出最終的預測曲線與實際的曲線趨勢情況基本吻合,銷售量從每年的七月開始下滑,10 月會有反彈,且總體的銷量趨勢呈下滑狀態,擬合效果很好,將原始數據的季節性,總體趨勢及周期性都預測出來了。
當分析人員需要細化維度到產品時,如預測產品 ‘LitwareRefrigerator 24.7CuFt X980 Brown’ 2009 年下半年的銷量,分析人員只需要修改 SQL 代碼,就可重獲聚合數據,操作簡單,執行快速。
Kyligence 與 Apache Spark 可優化從數據源到數據分析平臺的整套大數據機器學習生態環境,讓大數據挖掘擺脫數據量的束縛,變得輕松高效。
本文轉載自公眾號 Kyligence。作者:姜昀佳








