最全解析:大數據和機器學習有什么區別
大數據的定義
大數據(big data),指無法在必定時刻范圍內用慣例軟件東西進行捕捉、管理和處理的數據調集,是需求新處理模式才能具有更強的決議計劃力、洞悉發現力和流程優化才能的海量、高增長率和多元化的信息財物。 大數據是一個抽象的概念暫未發現和準確的定義。
大數據的核心是利用數據的價值,機器學習是利用數據價值的關鍵技術,對于大數據而言,機器學習是不可或缺的。相反,對于機器學習而言,越多的數據會越 可能提升模型的精確性,同時,復雜的機器學習算法的計算時間也迫切需要分布式計算與內存計算這樣的關鍵技術。因此,機器學習的興盛也離不開大數據的幫助。 大數據與機器學習兩者是互相促進,相依相存的關系。
機器學習與大數據緊密聯系。但是,必須清醒的認識到,大數據并不等同于機器學習,同理,機器學習也不等同于大數據。大數據中包含有分布式計算,內存數據庫,多維分析等等多種技術。單從分析方法來看,大數據也包含以下四種分析方法:
也就是說,機器學習僅僅是大數據分析中的一種而已。盡管機器學習的一些結果具有很大的魔力,在某種場合下是大數據價值最好的說明。但這并不代表機器學習是大數據下的唯一的分析方法。
機器學習的定義
從廣義上來說,機器學習是一種能夠賦予機器學習的能力以此讓它完成直接編程無法完成的功能的方法。但從實踐的意義上來說,機器學習是一種通過利用數據,訓練出模型,然后使用模型預測的一種方法。
首先,我們需要在計算機中存儲歷史的數據。接著,我們將這些 數據通過機器學習算法進行處理,這個過程在機器學習中叫做“訓練”,處理的結果可以被我們用來對新的數據進行預測,這個結果一般稱之為“模型”。對新數據 的預測過程在機器學習中叫做“預測”。“訓練”與“預測”是機器學習的兩個過程,“模型”則是過程的中間輸出結果,“訓練”產生“模型”,“模型”指導 “預測”。
人類在成長、生活過程中積累了很多的歷史與經驗。人類定期地對這些經驗進行“歸納”,獲得了生活的“規律”。當人類遇到未知的問題或者需要對未來進行“推測”的時候,人類使用這些“規律”,對未知問題與未來進行“推測”,從而指導自己的生活和工作。
機器學習中的“訓練”與“預測”過程可以對應到人類的“歸納”和“推測”過程。通過這樣的對應,我們可以發現,機器學習的思想并不復雜,僅僅是對人類在生活中學習成長的一個模擬。由于機器學習不是基于編程形成的結果,因此它的處理過程不是因果的邏輯,而是通過歸納思想得出的相關性結論。
這也可以聯想到人類為什么要學習歷史,歷史實際上是人類過往經驗的總結。有句話說得很好,“歷史往往不一樣,但歷史總是驚人的相似”。通過學習歷史,我們從歷史中歸納出人生與國家的規律,從而指導我們的下一步工作,這是具有莫大價值的。當代一些人忽視了歷史的本來價值,而是把其作為一種宣揚功績的手段,這其實是對歷史真實價值的一種誤用。
機器學習的范圍
機器學習跟模式識別,統計學習,數據挖掘,計算機視覺,語音識別,自然語言處理等領域有著很深的聯系。
從范圍上來說,機器學習跟模式識別,統計學習,數據挖掘是類似的,同時,機器學習與其他領域的處理技術的結合,形成了計算機視覺、語音識別、自然語言處理等交叉學科。因此,一般說數據挖掘時,可以等同于說機器學習。同時,我們平常所說的機器學習應用,應該是通用的,不僅僅局限在結構化數據,還有圖像,音頻等應用。
模式識別
模式識別=機器學習。兩者的主要區別在于前者是從工業界發展起來的概念,后者則主要源自計算機學科。在著名的《Pattern Recognition And Machine Learning》這本書中,Christopher M. Bishop在開頭是這樣說的“模式識別源自工業界,而機器學習來自于計算機學科。不過,它們中的活動可以被視為同一個領域的兩個方面,同時在過去的10年間,它們都有了長足的發展”。
數據挖掘
數據挖掘=機器學習+數據庫。這幾年數據挖掘的概念實在是太耳熟能詳。幾乎等同于炒作。但凡說數據挖掘都會吹噓數據挖掘如何如何,例如從數據中挖出金子,以及將廢棄的數據轉化為價值等等。但是,我盡管可能會挖出金子,但我也可能挖的是“石頭”啊。這個說法的意思是,數據挖掘僅僅是一種思考方式,告訴我們應該嘗試從數據中挖掘出知識,但不是每個數據都能挖掘出金子的,所以不要神話它。一個系統絕對不會因為上了一個數據挖掘模塊就變得無所不能(這是IBM最喜歡吹噓的),恰恰相反,一個擁有數據挖掘思維的人員才是關鍵,而且他還必須對數據有深刻的認識,這樣才可能從數據中導出模式指引業務的改善。大部分數據挖掘中的算法是機器學習的算法在數據庫中的優化。
統計學習
統計學習近似等于機器學習。統計學習是個與機器學習高度重疊的學科。因為機器學習中的大多數方法來自統計學,甚至可以認為,統計學的發展促進機器學習的繁榮昌盛。例如著名的支持向量機算法,就是源自統計學科。但是在某種程度上兩者是有分別的,這個分別在于:統計學習者重點關注的是統計模型的發展與優化,偏數學,而機器學習者更關注的是能夠解決問題,偏實踐,因此機器學習研究者會重點研究學習算法在計算機上執行的效率與準確性的提升。
計算機視覺
計算機視覺=圖像處理+機器學習。圖像處理技術用于將圖像處理為適合進入機器學習模型中的輸入,機器學習則負責從圖像中識別出相關的模式。計算機視覺相關的應用非常的多,例如百度識圖、手寫字符識別、車牌識別等等應用。這個領域是應用前景非常火熱的,同時也是研究的熱門方向。隨著機器學習的新領域深度學習的發展,大大促進了計算機圖像識別的效果,因此未來計算機視覺界的發展前景不可估量。
語音識別
語音識別=語音處理+機器學習。語音識別就是音頻處理技術與機器學習的結合。語音識別技術一般不會單獨使用,一般會結合自然語言處理的相關技術。目前的相關應用有蘋果的語音助手siri等。
自然語言處理
自然語言處理=文本處理+機器學習。自然語言處理技術主要是讓機器理解人類的語言的一門領域。在自然語言處理技術中,大量使用了編譯原理相關的技術,例如詞法分析,語法分析等等,除此之外,在理解這個層面,則使用了語義理解,機器學習等技術。作為唯一由人類自身創造的符號,自然語言處理一直是機器學習界不斷研究的方向。按照百度機器學習專家余凱的說法“聽與看,說白了就是阿貓和阿狗都會的,而只有語言才是人類獨有的”。如何利用機器學習技術進行自然語言的的深度理解,一直是工業和學術界關注的焦點。

1、回歸算法
在大部分機器學習課程中,回歸算法都是介紹的第一個算法。原因有兩個:一.回歸算法比較簡單,介紹它可以讓人平滑地從統計學遷移到機器學習中。二.回歸算法是后面若干強大算法的基石,如果不理解回歸算法,無法學習那些強大的算法。回歸算法有兩個重要的子類:即線性回歸和邏輯回歸。
線性回歸就是我們常見的直線函數。如何擬合出一條直線最佳匹配我所有的數據?一般使用“最小二乘法”來求解。“最小二乘法”的思想是這樣的,假設我們擬合出的直線代表數據的真實值,而觀測到的數據代表擁有誤差的值。為了盡可能減小誤差的影響,需要求解一條直線使所有誤差的平方和最小。最小二乘法將最優問題轉化為求函數極值問題。函數極值在數學上我們一般會采用求導數為0的方法。但這種做法并不適合計算機,可能求解不出來,也可能計算量太大。
計算機科學界專門有一個學科叫“數值計算”,專門用來提升計算機進行各類計算時的準確性和效率問題。例如,著名的“梯度下降”以及“牛頓法”就是數值計算中的經典算法,也非常適合來處理求解函數極值的問題。梯度下降法是解決回歸模型中最簡單且有效的方法之一。從嚴格意義上來說,由于后文中的神經網絡和推薦算法中都有線性回歸的因子,因此梯度下降法在后面的算法實現中也有應用。
邏輯回歸是一種與線性回歸非常類似的算法,但是,從本質上講,線型回歸處理的問題類型與邏輯回歸不一致。線性回歸處理的是數值問題,也就是最后預測出的結果是數字,例如房價。而邏輯回歸屬于分類算法,也就是說,邏輯回歸預測結果是離散的分類,例如判斷這封郵件是否是垃圾郵件,以及用戶是否會點擊此廣告等等。
實現方面的話,邏輯回歸只是對對線性回歸的計算結果加上了一個Sigmoid函數,將數值結果轉化為了0到1之間的概率(Sigmoid函數的圖像一般來說并不直觀,你只需要理解對數值越大,函數越逼近1,數值越小,函數越逼近0),接著我們根據這個概率可以做預測,例如概率大于0.5,則這封郵件就是垃圾郵件,或者腫瘤是否是惡性的等等。從直觀上來說,邏輯回歸是畫出了一條分類線,見下圖。
假設我們有一組腫瘤患者的數據,這些患者的腫瘤中有些是良性的(圖中的藍色點),有些是惡性的(圖中的紅色點)。這里腫瘤的紅藍色可以被稱作數據的“標簽”。同時每個數據包括兩個“特征”:患者的年齡與腫瘤的大小。我們將這兩個特征與標簽映射到這個二維空間上,形成了我上圖的數據。
當我有一個綠色的點時,我該判斷這個腫瘤是惡性的還是良性的呢?根據紅藍點我們訓練出了一個邏輯回歸模型,也就是圖中的分類線。這時,根據綠點出現在分類線的左側,因此我們判斷它的標簽應該是紅色,也就是說屬于惡性腫瘤。
邏輯回歸算法劃出的分類線基本都是線性的(也有劃出非線性分類線的邏輯回歸,不過那樣的模型在處理數據量較大的時候效率會很低),這意味著當兩類之間的界線不是線性時,邏輯回歸的表達能力就不足。下面的兩個算法是機器學習界最強大且重要的算法,都可以擬合出非線性的分類線。
2、神經網絡
神經網絡(也稱之為人工神經網絡,ANN)算法是80年代機器學習界非常流行的算法,不過在90年代中途衰落。現在,攜著“深度學習”之勢,神經網絡重裝歸來,重新成為最強大的機器學習算法之一。
神經網絡的誕生起源于對大腦工作機理的研究。早期生物界學者們使用神經網絡來模擬大腦。機器學習的學者們使用神經網絡進行機器學習的實驗,發現在視覺與語音的識別上效果都相當好。在BP算法(加速神經網絡訓練過程的數值算法)誕生以后,神經網絡的發展進入了一個熱潮。BP算法的發明人之一是前面介紹的機器學習大牛Geoffrey Hinton(圖1中的中間者)。
具體說來,神經網絡的學習機理是什么?簡單來說,就是分解與整合。在著名的Hubel-Wiesel試驗中,學者們研究貓的視覺分析機理是這樣的。
比方說,一個正方形,分解為四個折線進入視覺處理的下一層中。四個神經元分別處理一個折線。每個折線再繼續被分解為兩條直線,每條直線再被分解為黑白兩個面。于是,一個復雜的圖像變成了大量的細節進入神經元,神經元處理以后再進行整合,最后得出了看到的是正方形的結論。這就是大腦視覺識別的機理,也是神經網絡工作的機理。
讓我們看一個簡單的神經網絡的邏輯架構。在這個網絡中,分成輸入層,隱藏層,和輸出層。輸入層負責接收信號,隱藏層負責對數據的分解與處理,最后的結果被整合到輸出層。每層中的一個圓代表一個處理單元,可以認為是模擬了一個神經元,若干個處理單元組成了一個層,若干個層再組成了一個網絡,也就是"神經網絡"。
在神經網絡中,每個處理單元事實上就是一個邏輯回歸模型,邏輯回歸模型接收上層的輸入,把模型的預測結果作為輸出傳輸到下一個層次。通過這樣的過程,神經網絡可以完成非常復雜的非線性分類。
下圖會演示神經網絡在圖像識別領域的一個著名應用,這個程序叫做LeNet,是一個基于多個隱層構建的神經網絡。通過LeNet可以識別多種手寫數字,并且達到很高的識別精度與擁有較好的魯棒性。
右下方的方形中顯示的是輸入計算機的圖像,方形上方的紅色字樣“answer”后面顯示的是計算機的輸出。左邊的三條豎直的圖像列顯示的是神經網絡中三個隱藏層的輸出,可以看出,隨著層次的不斷深入,越深的層次處理的細節越低,例如層3基本處理的都已經是線的細節了。LeNet的發明人就是前文介紹過的機器學習的大牛Yann LeCun(圖1右者)。
進入90年代,神經網絡的發展進入了一個瓶頸期。其主要原因是盡管有BP算法的加速,神經網絡的訓練過程仍然很困難。因此90年代后期支持向量機(SVM)算法取代了神經網絡的地位。
3、SVM(支持向量機)
支持向量機算法是誕生于統計學習界,同時在機器學習界大放光彩的經典算法。
支持向量機算法從某種意義上來說是邏輯回歸算法的強化:通過給予邏輯回歸算法更嚴格的優化條件,支持向量機算法可以獲得比邏輯回歸更好的分類界線。但是如果沒有某類函數技術,則支持向量機算法最多算是一種更好的線性分類技術。
但是,通過跟高斯“核”的結合,支持向量機可以表達出非常復雜的分類界線,從而達成很好的的分類效果。“核”事實上就是一種特殊的函數,最典型的特征就是可以將低維的空間映射到高維的空間。
我們如何在二維平面劃分出一個圓形的分類界線?在二維平面可能會很困難,但是通過“核”可以將二維空間映射到三維空間,然后使用一個線性平面就可以達成類似效果。也就是說,二維平面劃分出的非線性分類界線可以等價于三維平面的線性分類界線。于是,我們可以通過在三維空間中進行簡單的線性劃分就可以達到在二維平面中的非線性劃分效果。
支持向量機是一種數學成分很濃的機器學習算法(相對的,神經網絡則有生物科學成分)。在算法的核心步驟中,有一步證明,即將數據從低維映射到高維不會帶來最后計算復雜性的提升。于是,通過支持向量機算法,既可以保持計算效率,又可以獲得非常好的分類效果。因此支持向量機在90年代后期一直占據著機器學習中最核心的地位,基本取代了神經網絡算法。直到現在神經網絡借著深度學習重新興起,兩者之間才又發生了微妙的平衡轉變。
4、聚類算法
前面的算法中的一個顯著特征就是我的訓練數據中包含了標簽,訓練出的模型可以對其他未知數據預測標簽。在下面的算法中,訓練數據都是不含標簽的,而算法的目的則是通過訓練,推測出這些數據的標簽。這類算法有一個統稱,即無監督算法(前面有標簽的數據的算法則是有監督算法)。無監督算法中最典型的代表就是聚類算法。
讓我們還是拿一個二維的數據來說,某一個數據包含兩個特征。我希望通過聚類算法,給他們中不同的種類打上標簽,我該怎么做呢?簡單來說,聚類算法就是計算種群中的距離,根據距離的遠近將數據劃分為多個族群。
聚類算法中最典型的代表就是K-Means算法。
5、降維算法
降維算法也是一種無監督學習算法,其主要特征是將數據從高維降低到低維層次。在這里,維度其實表示的是數據的特征量的大小,例如,房價包含房子的長、寬、面積與房間數量四個特征,也就是維度為4維的數據。可以看出來,長與寬事實上與面積表示的信息重疊了,例如面積=長 × 寬。通過降維算法我們就可以去除冗余信息,將特征減少為面積與房間數量兩個特征,即從4維的數據壓縮到2維。于是我們將數據從高維降低到低維,不僅利于表示,同時在計算上也能帶來加速。
剛才說的降維過程中減少的維度屬于肉眼可視的層次,同時壓縮也不會帶來信息的損失(因為信息冗余了)。如果肉眼不可視,或者沒有冗余的特征,降維算法也能工作,不過這樣會帶來一些信息的損失。但是,降維算法可以從數學上證明,從高維壓縮到的低維中最大程度地保留了數據的信息。因此,使用降維算法仍然有很多的好處。
降維算法的主要作用是壓縮數據與提升機器學習其他算法的效率。通過降維算法,可以將具有幾千個特征的數據壓縮至若干個特征。另外,降維算法的另一個好處是數據的可視化,例如將5維的數據壓縮至2維,然后可以用二維平面來可視。降維算法的主要代表是PCA算法(即主成分分析算法)。
6、推薦算法
推薦算法是目前業界非常火的一種算法,在電商界,如亞馬遜,天貓,京東等得到了廣泛的運用。推薦算法的主要特征就是可以自動向用戶推薦他們最感興趣的東西,從而增加購買率,提升效益。推薦算法有兩個主要的類別:
一類是基于物品內容的推薦,是將與用戶購買的內容近似的物品推薦給用戶,這樣的前提是每個物品都得有若干個標簽,因此才可以找出與用戶購買物品類似的物品,這樣推薦的好處是關聯程度較大,但是由于每個物品都需要貼標簽,因此工作量較大。
另一類是基于用戶相似度的推薦,則是將與目標用戶興趣相同的其他用戶購買的東西推薦給目標用戶,例如小A歷史上買了物品B和C,經過算法分析,發現另一個與小A近似的用戶小D購買了物品E,于是將物品E推薦給小A。
兩類推薦都有各自的優缺點,在一般的電商應用中,一般是兩類混合使用。推薦算法中最有名的算法就是協同過濾算法。
7、梯度下降法
梯度下降法?是一個最優化算法,通常也稱為最速下降法。最速下降法是求解無約束優化問題最簡單和最古老的方法之一,雖然現在已經不具有實用性,但是許多有效算法都是以它為基礎進行改進和修正而得到的。最速下降法是用負梯度方向為搜索方向的,最速下降法越接近目標值,步長越小,前進越慢。好比將函數比作一座山,我們站在某個山坡上,往四周看,從哪個方向向下走一小步,能夠下降的最快;當然解決問題的方法有很多,梯度下降只是其中一個,還有一種方法叫Normal Equation
? ? ?8、牛頓法
牛頓法是一種非線性最小二乘最優化方法。其利用了目標函數的泰勒展開式把非線性函數的最小二乘化問題化為每次迭代的線性函數的最小二乘化問題。牛頓法的缺點在于:若初始點距離極小值點過遠,迭代步長過大會導致迭代下一代的函數值不一定小于上一代的函數值。牛頓法在二階導數的作用下,從函數的凸性出發,直接搜索怎樣到達極值點,也就是說在選擇方向時,不僅考慮當前坡度是否夠大,還會考慮你走了一步之后,坡度是否會變得更大。
從收斂速度來看,梯度下降是線性收斂,牛頓法是超線性的,至少二階收斂~,當目標函數是凸函數時,梯度下降法的解釋全局最優解。一般情況下,其解不保證是全局最優解。當目標函數不是凸函數時,可以將目標函數近似轉化成凸函數。或者用一些智能優化算法例如模擬退火,以一定的概率跳出局部極值,但是這些算法都不保證能找到最小值。
9、BP算法
BP算法是學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。正向傳播時,輸入樣本從輸入層傳入,經各隱層逐層處理后,傳向輸出層。若輸出層的實際輸出與期望的輸出(教師信號)不符,則轉入誤差的反向傳播階段。誤差反傳是將輸出誤差以某種形式通過隱層向輸入層逐層反傳,并將誤差分攤給各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號即作為修正各單元權值的依據。這種信號正向傳播與誤差反向傳播的各層權值調整過程,是周而復始地進行的。權值不斷調整的過程,也就是網絡的學習訓練過程。此過程一直進行到網絡輸出的誤差減少到可接受的程度,或進行到預先設定的學習次數為止。
10、SMO算法
SMO算法是針對求解SVM問題的Lagrange對偶問題,一個二次規劃式,開發的高效算法。傳統的二次規劃算法的計算開銷正比于訓練集的規模,而SMO基于問題本身的特性(KKT條件約束)對這個特殊的二次規劃問題的求解過程進行優化。對偶問題中我們最后求解的變量只有Lagrange乘子



除了以上算法之外,機器學習界還有其他的如高斯判別,樸素貝葉斯,決策樹等等算法。但是上面列的10個算法是使用最多,影響最廣,種類最全的典型。機器學習界的一個特色就是算法眾多,發展百花齊放。
下面做一個總結,按照訓練的數據有無標簽,可以將上面算法分為監督學習算法和無監督學習算法,但推薦算法較為特殊,既不屬于監督學習,也不屬于非監督學習,是單獨的一類。
監督學習算法:
線性回歸,邏輯回歸,神經網絡,SVM
無監督學習算法:
聚類算法,降維算法
特殊算法:
推薦算法
除了這些算法以外,有一些算法的名字在機器學習領域中也經常出現。但他們本身并不算是一個機器學習算法,而是為了解決某個子問題而誕生的。你可以理解他們為以上算法的子算法,用于大幅度提高訓練過程。其中的代表有:梯度下降法,主要運用在線型回歸,邏輯回歸,神經網絡,推薦算法中;牛頓法,主要運用在線型回歸中;BP算法,主要運用在神經網絡中;SMO算法,主要運用在SVM中。
機器學習與大數據的結合產生了巨大的價值。基于機器學習技術的發展,數據能夠“預測”。對人類而言,積累的經驗越豐富,閱歷也廣泛,對未來的判斷越準確。例如常說的“經驗豐富”的人比“初出茅廬”的小伙子更有工作上的優勢,就在于經驗豐富的人獲得的規律比他人更準確。而在機器學習領域,根據著名的一個實驗,有效的證實了機器學習界一個理論:即機器學習模型的數據越多,機器學習的預測的效率就越好。
成功的機器學習應用不是擁有最好的算法,而是擁有最多的數據!
在大數據的年代,有好多優勢促進機器學習能夠運用更廣泛。例如跟著物聯網和移動設備的開展,咱們具有的數據不斷增加,品種也包括圖像、文本、視頻等非結構化數據,這使得機器學習模型能夠獲得不斷增加的數據。一起大數據技能中的分布式核算Map-Reduce使得機器學習的速度越來越快,能夠更方便的運用。各種優勢使得在大數據年代,機器學習的優勢能夠得到最佳的表現。