大數據架構詳解:從數據獲取到深度學習

機器學習(Machine Learning,ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法複雜度理論等多門學科。

 

機器學習(Machine Learning,ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法複雜度理論等多門學科。其專門研究計算機是怎樣模擬或實現人類的學習行爲,以獲取新的知識或技能,重新組織已有的知識結構,使之不斷改善自身的性能。此外,數據挖掘和機器學習有很大的交集。本文將從架構和應用角度去解讀這兩個領域。

機器學習和數據挖掘的聯繫與區別

數據挖掘是從海量數據中獲取有效的、新穎的、潛在有用的、最終可理解的模式的非平凡過程。數據挖掘中用到了大量的機器學習界提供的數據分析技術和數據庫界提供的數據管理技術。從數據分析的角度來看,數據挖掘與機器學習有很多相似之處,但不同之處也十分明顯,例如,數據挖掘並沒有機器學習探索人的學習機制這一科學發現任務,數據挖掘中的數據分析是針對海量數據進行的,等等。從某種意義上說,機器學習的科學成分更重一些,而數據挖掘的技術成分更重一些。

 

學習能力是智能行爲的一個非常重要的特徵,不具有學習能力的系統很難稱之爲一個真正的智能系統,而機器學習則希望(計算機)系統能夠利用經驗來改善自身的性能,因此該領域一直是人工智能的核心研究領域之一。在計算機系統中,“經驗”通常是以數據的形式存在的,因此,機器學習不僅涉及對人的認知學習過程的探索,還涉及對數據的分析處理。實際上,機器學習已經成爲計算機數據分析技術的創新源頭之一。由於幾乎所有的學科都要面對數據分析任務,因此機器學習已經開始影響到計算機科學的衆多領域,甚至影響到計算機科學之外的很多學科。機器學習是數據挖掘中的一種重要工具。然而數據挖掘不僅僅要研究、拓展、應用一些機器學習方法,還要通過許多非機器學習技術解決數據倉儲、大規模數據、數據噪聲等實踐問題。機器學習的涉及面也很寬,常用在數據挖掘上的方法通常只是“從數據學習”。然而機器學習不僅僅可以用在數據挖掘上,一些機器學習的子領域甚至與數據挖掘關係不大,如增強學習與自動控制等。所以筆者認爲,數據挖掘是從目的而言的,機器學習是從方法而言的,兩個領域有相當大的交集,但不能等同。

典型的數據挖掘和機器學習過程

圖1是一個典型的推薦類應用,需要找到“符合條件的”潛在人員。要從用戶數據中得出這張列表,首先需要挖掘出客戶特徵,然後選擇一個合適的模型來進行預測,最後從用戶數據中得出結果。

 

大數據學習羣:716581014

 

 

把上述例子中的用戶列表獲取過程進行細分,有如下幾個部分(見圖2)。

 

 

業務理解:理解業務本身,其本質是什麼?是分類問題還是迴歸問題?數據怎麼獲取?應用哪些模型才能解決?
數據理解:獲取數據之後,分析數據裏面有什麼內容、數據是否準確,爲下一步的預處理做準備。
數據預處理:原始數據會有噪聲,格式化也不好,所以爲了保證預測的準確性,需要進行數據的預處理。
特徵提取:特徵提取是機器學習最重要、最耗時的一個階段。
模型構建:使用適當的算法,獲取預期準確的值。
模型評估:根據測試集來評估模型的準確度。
模型應用:將模型部署、應用到實際生產環境中。
應用效果評估:根據最終的業務,評估最終的應用效果。

整個過程會不斷反覆,模型也會不斷調整,直至達到理想效果。

機器學習概覽

機器學習的算法有很多,這裏從兩個方面進行介紹:一個是學習方式,另一個是算法類似性。

學習方式

根據數據類型的不同,對一個問題的建模可以有不同的方式。在機器學習或人工智能領域,人們首先會考慮算法的學習方式。在機器學習領域有如下幾種主要的學習方式。

• 監督式學習:在監督式學習下,輸入數據被稱爲“訓練數據”,每組訓練數據都有一個明確的標識或結果,如對防垃圾郵件系統中的“垃圾郵件”、“非垃圾郵件”,對手寫數字識別中的“1”、“2”、“3”、“4”等。在建立預測模型的時候,監督式學習建立一個學習過程,將預測結果與“訓練數據”的實際結果進行比較,不斷地調整預測模型,直到模型的預測結果達到一個預期的準確率。監督式學習的常見應用場景包括分類問題和迴歸問題。常見算法有邏輯迴歸和反向傳遞神經網絡。

 

• 非監督式學習:在非監督式學習下,數據並不被特別標識,學習模型是爲了推斷出數據的一些內在結構。常見的應用場景包括關聯規則的學習及聚類等。常見算法包括Apriori算法和K-Means算法。

 

• 半監督式學習:在半監督式學習下,輸入數據部分被標識,部分沒有被標識。這種學習模型可以用來進行預測,但是模型首先需要學習數據的內在結構,以便合理地組織數據進行預測。其應用場景包括分類和迴歸。常見算法包括一些對常用監督式學習算法的延伸。這些算法首先試圖對未標識的數據進行建模,然後在此基礎上對標識的數據進行預測,如圖論推理算法或拉普拉斯支持向量機等。

 

• 強化學習:在強化學習下,輸入數據作爲對模型的反饋,不像監督模型那樣,輸入數據僅僅作爲一種檢查模型對錯的方式。在強化學習下,輸入數據直接反饋到模型,模型必須對此立刻做出調整。常見的應用場景包括動態系統及機器人控制等。常見算法包括Q-Learning及時間差學習(Temporal Difference Learning)等。

 

在企業數據應用的場景下,人們最常用的可能就是監督式學習和非監督式學習。在圖像識別等領域,由於存在大量的非標識數據和少量的可標識數據,目前半監督式學習是一個很熱門的話題。而強化學習更多地應用在機器人控制及其他需要進行系統控制的領域。

 

算法類似性

根據算法的功能和形式的類似性,可以對算法進行分類,如基於樹的算法、基於神經網絡的算法等。當然,機器學習的範圍非常龐大,有些算法很難明確歸到某一類。而對於有些分類來說,同一分類的算法可以針對不同類型的問題。這裏,我們儘量把常用的算法按照最容易理解的方式進行分類。

 

• 迴歸算法:迴歸算法是試圖採用對誤差的衡量來探索變量之間的關係的一類算法。迴歸算法是統計機器學習的利器。常見的迴歸算法包括最小二乘法、邏輯迴歸、逐步式迴歸、多元自適應迴歸樣條及本地散點平滑估計等。

 

• 基於實例的算法:基於實例的算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本數據,然後根據某些近似性把新數據與樣本數據進行比較,從而找到最佳的匹配。因此,基於實例的算法常常被稱爲“贏家通吃學習”或者“基於記憶的學習”。常見的算法包括k-Nearest Neighbor(kNN)、學習矢量量化(Learning Vector Quantization,LVQ)及自組織映射算法(Self-Organizing Map,SOM)等。

 

• 正則化算法:正則化算法是其他算法(通常是迴歸算法)的延伸,根據算法的複雜度對算法進行調整。正則化算法通常對簡單模型予以獎勵,而對複雜算法予以懲罰。常見的算法包括Ridge Regression、Least Absolute Shrinkage and Selection Operator(LASSO)及彈性網絡(Elastic Net)等。

 

• 決策樹算法:決策樹算法根據數據的屬性採用樹狀結構建立決策模型,常用來解決分類和迴歸問題。常見算法包括分類及迴歸樹(Classification and Regression Tree,CART)、ID3(Iterative Dichotomiser 3)、C4.5、Chi-squared Automatic Interaction Detection(CHAID)、Decision Stump、隨機森林(Random Forest)、多元自適應迴歸樣條(MARS)及梯度推進機(GBM)等。

 

• 貝葉斯算法:貝葉斯算法是基於貝葉斯定理的一類算法,主要用來解決分類和迴歸問題。常見的算法包括樸素貝葉斯算法、平均單依賴估計(Averaged One-Dependence Estimators,AODE)及Bayesian Belief Network(BBN)等。

 

• 基於核的算法:基於核的算法中最著名的莫過於支持向量機(SVM)。基於核的算法是把輸入數據映射到一個高階的向量空間,在這些高階向量空間裏,有些分類或者回歸問題能夠更容易地解決。常見的基於核的算法包括支持向量機(Support Vector Machine,SVM)、徑向基函數(Radial Basis Function,RBF)及線性判別分析(Linear Discriminate Analysis,LDA)等。

 

• 聚類算法:聚類算法通常按照中心點或者分層的方式對輸入數據進行歸併。所有的聚類算法都試圖找到數據的內在結構,以便按照最大的共同點將數據進行歸類。常見的聚類算法包括K-Means算法及期望最大化算法(EM)等。

 

• 關聯規則學習:關聯規則學習通過尋找最能夠解釋數據變量之間關係的規則,來找出大量多元數據集中有用的關聯規則。常見的算法包括Apriori算法和Eclat算法等。

 

• 人工神經網絡算法:人工神經網絡算法模擬生物神經網絡,是一類模式匹配算法,通常用於解決分類和迴歸問題。人工神經網絡是機器學習的一個龐大的分支,有幾百種不同的算法(深度學習就是其中的一類算法)。常見的人工神經網絡算法包括感知器神經網絡、反向傳遞、Hopfield網絡、自組織映射及學習矢量量化等。

 

• 深度學習算法:深度學習算法是對人工神經網絡的發展。在計算能力變得日益廉價的今天,深度學習算法試圖建立大得多也複雜得多的神經網絡。很多深度學習算法是半監督式學習算法,用來處理存在少量未標識數據的大數據集。常見的深度學習算法包括受限波爾茲曼機(RBN)、Deep Belief Networks(DBN)、卷積網絡(Convolutional Network)及堆棧式自動編碼器 (Stacked Auto-encoders)等。

 

• 降低維度算法:與聚類算法一樣,降低維度算法試圖分析數據的內在結構,不過降低維度算法通過非監督式學習,試圖利用較少的信息來歸納或者解釋數據。這類算法可以用於高維數據的可視化,或者用來簡化數據以便監督式學習使用。常見的降低維度算法包括主成分分析(Principle Component Analysis,PCA)、偏最小二乘迴歸(Partial Least Square Regression,PLSR)、Sammon映射、多維尺度(Multi-Dimensional Scaling,MDS)及投影追蹤(Projection Pursuit)等。

 

• 集成算法:集成算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然後把結果整合起來進行整體預測。集成算法的主要難點在於究竟集成哪些獨立的、較弱的學習模型,以及如何把學習結果整合起來。這是一類非常強大的算法,同時也非常流行。常見的集成算法包括Boosting、Bootstrapped Aggregation(Bagging)、AdaBoost、堆疊泛化(Stacked Generalization,Blending)、梯度推進機(Gradient Boosting Machine,GBM)及隨機森林(Random Forest)等。

 

機器學習&數據挖掘應用案例

前面瞭解了機器學習和數據挖掘的基本概念,下面來看一下業界成熟的案例,對機器學習和數據挖掘有一個直觀的理解。

尿布和啤酒的故事

先來看一則有關數據挖掘的故事——“尿布與啤酒”。

總部位於美國阿肯色州的世界著名商業零售連鎖企業沃爾瑪擁有世界上最大的數據倉庫系統。爲了能夠準確瞭解顧客在其門店的購買習慣,沃爾瑪對其顧客的購物行爲進行購物籃分析,想知道顧客經常一起購買的商品有哪些。沃爾瑪數據倉庫裏集中了其各門店的詳細原始交易數據,在這些原始交易數據的基礎上,沃爾瑪利用NCR數據挖掘工具對這些數據進行分析和挖掘。一個意外的發現是:跟尿布一起購買最多的商品竟然是啤酒!這是數據挖掘技術對歷史數據進行分析的結果,反映了數據的內在規律。那麼,這個結果符合現實情況嗎?是否有利用價值?

 

於是,沃爾瑪派出市場調查人員和分析師對這一數據挖掘結果進行調查分析,從而揭示出隱藏在“尿布與啤酒”背後的美國人的一種行爲模式:在美國,一些年輕的父親下班後經常要到超市去買嬰兒尿布,而他們中有30%~40%的人同時也爲自己買一些啤酒。產生這一現象的原因是:美國的太太們常叮囑她們的丈夫下班後爲小孩買尿布,而丈夫們在買完尿布後又隨手帶回了他們喜歡的啤酒。

 

既然尿布與啤酒一起被購買的機會很多,於是沃爾瑪就在其各家門店將尿布與啤酒擺放在一起,結果是尿布與啤酒的銷售量雙雙增長。

決策樹用於電信領域故障快速定位

電信領域比較常見的應用場景是決策樹,利用決策樹來進行故障定位。比如,用戶投訴上網慢,其中就有很多種原因,有可能是網絡的問題,也有可能是用戶手機的問題,還有可能是用戶自身感受的問題。怎樣快速分析和定位出問題,給用戶一個滿意的答覆?這就需要用到決策樹。

圖3就是一個典型的用戶投訴上網慢的決策樹的樣例。

 

 

圖3

圖像識別領域

• 小米麪孔相冊

這項功能的名字叫“面孔相冊”,可以利用圖像分析技術,自動地對雲相冊照片內容按照面孔進行分類整理。開啓“面孔相冊”功能後,可以自動識別、整理和分類雲相冊中的不同面孔。

“面孔相冊”還支持手動調整分組、移出錯誤面孔、通過系統推薦確認面孔等功能,從而彌補機器識別的不足。

這項功能的背後其實使用的是深度學習技術,自動識別圖片中的人臉,然後進行自動識別和分類。

• 支付寶掃臉支付

馬雲在2015 CeBIT展會開幕式上首次展示了螞蟻金服的最新支付技術“Smile to Pay”(掃臉支付),驚豔全場。支付寶宣稱,Face++ Financial人臉識別技術在LFW國際公開測試集中達到99.5%的準確率,同時還能運用“交互式指令+連續性判定+3D判定”技術。人臉識別技術基於神經網絡,讓計算機學習人的大腦,並通過“深度學習算法”大量訓練,讓它變得極爲“聰明”,能夠“認人”。實現人臉識別不需要用戶自行提交照片,有資質的機構在需要進行人臉識別時,可以向全國公民身份證號碼查詢服務中心提出申請,將採集到的照片與該部門的權威照片庫進行比對。

 

也就是說,用戶在進行人臉識別時,只需打開手機或電腦的攝像頭,對着自己的正臉進行拍攝即可。在智能手機全面普及的今天,這個參與門檻低到可以忽略不計。

用戶容易擔心的隱私問題在人臉識別領域也能有效避免,因爲照片來源權威,同時,一種特有的“脫敏”技術可以將照片模糊處理成肉眼無法識別而只有計算機才能識別的圖像。

• 圖片內容識別

前面兩個案例介紹的都是圖片識別,比圖片識別更難的是圖片語義的理解和提取,百度和Google都在進行這方面的研究。

百度的百度識圖能夠有效地處理特定物體的檢測識別(如人臉、文字或商品)、通用圖像的分類標註,如圖4所示。

 

 

圖4

來自Google研究院的科學家發表了一篇博文,展示了Google在圖形識別領域的最新研究進展。或許未來Google的圖形識別引擎不僅能夠識別出圖片中的對象,還能夠對整個場景進行簡短而準確的描述,如圖5所示。這種突破性的概念來自機器語言翻譯方面的研究成果:通過一種遞歸神經網絡(RNN)將一種語言的語句轉換成向量表達,並採用第二種RNN將向量表達轉換成目標語言的語句。

 

 

圖5

而Google將以上過程中的第一種RNN用深度卷積神經網絡CNN替代,這種網絡可以用來識別圖像中的物體。通過這種方法可以實現將圖像中的對象轉換成語句,對圖像場景進行描述。概念雖然簡單,但實現起來十分複雜,科學家表示目前實驗產生的語句合理性不錯,但距離完美仍有差距,這項研究目前僅處於早期階段。圖6展示了通過此方法識別圖像對象併產生描述的過程。

 

 

圖6

自然語言識別

自然語言識別一直是一個非常熱門的領域,最有名的是蘋果的Siri,支持資源輸入,調用手機自帶的天氣預報、日常安排、搜索資料等應用,還能夠不斷學習新的聲音和語調,提供對話式的應答。微軟的Skype Translator可以實現中英文之間的實時語音翻譯功能,將使得英文和中文普通話之間的實時語音對話成爲現實。

Skype Translator的運作機制如圖7所示。

 

 

圖7

在準備好的數據被錄入機器學習系統後,機器學習軟件會在這些對話和環境涉及的單詞中搭建一個統計模型。當用戶說話時,軟件會在該統計模型中尋找相似的內容,然後應用到預先“學到”的轉換程序中,將音頻轉換爲文本,再將文本轉換成另一種語言。

雖然語音識別一直是近幾十年來的重要研究課題,但是該技術的發展普遍受到錯誤率高、麥克風敏感度差異、噪聲環境等因素的阻礙。將深層神經網絡(DNNs)技術引入語音識別,極大地降低了錯誤率、提高了可靠性,最終使這項語音翻譯技術得以廣泛應用。

深度學習

Artificial Intelligence(人工智能)是人類美好的願望之一。雖然計算機技術已經取得了長足的進步,但截至目前,還沒有一臺計算機能夠產生“自我”的意識。的確,在人類和大量現有數據的幫助下,計算機可以表現得十分強大,但是離開了這兩者,它甚至都不能分辨兩隻小動物。

 

深度學習算法自動提取分類所需的低層次或者高層次特徵。高層次特徵是指該特徵可以分級(層次)地依賴其他特徵。例如,對於機器視覺,深度學習算法從原始圖像去學習得到它的一個低層次表達,如邊緣檢測器、小波濾波器等,然後在這些低層次表達的基礎上再建立表達,如這些低層次表達的線性或者非線性組合,然後重複這個過程,最後得到一個高層次的表達。

 

深度學習能夠得到更好地表示數據的特徵,同時由於模型的層次、參數很多,容量足夠,因此,模型有能力表示大規模數據。所以對於圖像、語音這種特徵不明顯(需要手工設計且很多沒有直觀的物理含義)的問題,能夠在大規模訓練數據上取得更好的效果。此外,從模式識別特徵和分類器的角度來看,深度學習框架將特徵和分類器結合到一個框架中,用數據去學習特徵,在使用中減少了手工設計特徵的巨大工作量,因此,不僅效果更好,而且使用起來也有很多方便之處。

 

當然,深度學習本身並不是完美的,也不是解決任何機器學習問題的利器,不應該被放大到一個無所不能的程度。

小結

本文主要介紹了機器學習、數據挖掘以及當前最熱門的深度學習。深度學習可以說掀起了人工智能的又一次熱潮,但是大家要清楚地認識到,這離真正的AI(人工智能)還差得很遠。但總的來說,我們離電影中描述的未來世界更近了一步,不是嗎?

 

大數據學習羣:716581014

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章