經常看到有很多人把機器學習和數據分析混為一談,因此我想分析一下機器學習和數據分析這兩個職位之間有什么不同,他們干的事情有什么不同,并且借此來分析下兩者的技術背景有什么不同。
首先呢這兩者的第一個區別就是他們處理的數據特點不一樣。那么怎么可以簡單地理解呢?
首先從我們的傳統上。數據分析他們所處理的是交易數據,而我們機器學習處理的則是行為數據。那么,什么是交易數據,什么是行為數據呢?比如說對于一個電商來說,他的用戶交易數據就是下單,比如說對于銀行這樣的系統來說,他的交易數據就是用戶的存取款賬單,再比如對于電信系統來說交易數據就是和用戶的消費賬單有關。總的來說,交易數據本質就是和錢有關的數據。
那么什么是行為數據呢?比如對于一個互聯網公司來說,用戶的行為數據就包括了用戶的搜索歷史,瀏覽歷史,點擊歷史或者是評論歷史等這些用戶的行為數據。
從這兩種數據中就開始衍生出下類的兩種區別,首先從數據量上來說,他們就不是一種量級的,那么從交易數據來說,他只能算是一個少量的數據或者談不上海量的數據,而用戶的行為數據呢,則是一個海量的數據。那么請想象一下,你每天看多少視頻,瀏覽多少網頁,你會發多少帖子,你會搜索多少次,同時來對比下你每天下幾次訂單,二者之間的對比,高下立判,這其實就是實際上就是交易數據和行為數據的一種明顯的對比。這就好像前幾年,大家公司之間好像沒什么業務的變化,結果搖身一變就成為了大數據公司了,那就是因為我們把用戶的行為數據一下子收集起來,這樣的數據量一下子猛增起來了,其實本質上來說用戶的交易數據并沒有發生多少的變化,但是由于我們關注了用戶的行為數據,所以現在搖身一變就成為了大數據公司了。
其實對于這兩種數據分析的方法其實也是不一樣的。
我們首先來分析下這兩種數據的一種本質的區別。那么對于交易數據來說,對于數據的一致性其實是非常嚴格的。這樣的原因很好理解,比如我們每個人都會很關注自己在銀行的存款,有多少錢,通常我們都會計較到分的級別,銀行給你多一分少一分我們用戶都不會干。那么其實對于交易數據來說我們的用戶要求其實是非常高的,通常都會達到9999的級別或者是99999的級別。那么對于用戶的行為數據來說對于數據的要求就沒有那么高了,通常就是這樣的數據多一批少一批都沒有多大的關系。你可能自己也記不清你一天到底訪問了多少個網頁輸入了多少次評論搜索了多少個歷史,同時對于一家數據公司來說,他們也不是很關心一家公司的用戶的行為數據的一致性,那么你這批數據就算丟了,對于我們整體的分析也不會有太大的影響,那么對于用戶的交易數據那就不行了,比如說用戶的轉賬,你一次轉賬至少會涉及兩次交易,對于這兩種交易,可以同時劃分到一種事務中來,要么同時成功,要么同時失敗,不能說你這個賬戶轉賬成功,這個賬號轉賬失敗,這樣是絕對不行的。根據上述的分析,我們可以發現這兩種的用戶行為習慣在一致性是有天壤之別的。這就是我們現在為什么會發現多了很多NOSQL數據庫,當時NOSQL數據庫剛出來的時候,大家都有一種看熱鬧不怕事情大的心態,都感覺這個數據庫是會取代原有數據庫的一種產品。大家都覺得革命要來了,我們被傳統的關系型數據庫壓制了這么多年了,現在要轉型NOSQL數據庫了,但是當大家用了一段時間以后,大家發現NOSQL數據庫只能處理這樣的行為數據。因為NOSQL數據庫具有分布式和CAP這兩種概念。在保證你的數據吞吐量的情況下會在你的數據一致性上打一個折扣,我們如果是處理用戶的交易數據我們是絕對不會用NOSQL數據庫來保存的,必須還得用SQL數據庫進行保存,而只有SQL這樣的數據庫我們是才可以保存這樣的數據的,實際上對于現在的交易數據和行為數據,我們實際上是由兩種的用戶方式來保存的。
最后一點呢,就是我們的分析方法也不一樣,交易數據我們通常可以采用采樣法來進行分析,因為他的一致性比較高,但是對于用戶的行為數據,為什么我們現在強調大數據,又強調這樣的分布式數據分析平臺,因為我們是要對于用戶的行為數據進行全量分析的,況且我們通過全量分析數據量還不夠呢,更何況采樣分析,可能數據量越大,對于用戶的行為分析的會越準確,預測的越準
這是從數據本身我們來分析機器學習和數據分析兩者的區別
然后我么再看第二個區別,解決的業務問題不同
那么對于傳統的數據分析來說他們更多的是來報告歷史上發生了什么事情,而對于機器學習來說,更多的是預測未來可能會發生的事情,這是二者的本質的區別
在這里,我想列幾個例子來表示兩者的區別,
數據分析(OLAP):過去幾年內,那些人是我們的優質客戶
過去那些人拖欠我們貸款
今年前四個季度,那些銷售業績超出去年
去年消費的用戶今年持續消費
機器學習:
前100個最有利潤潛力的客戶是誰
那些客戶可能有壞賬風險
明年的促銷活動那種利潤率更高
明年那些用戶可能會購買競爭對手的產品
第三點不同是兩者采取的技術手段不同。
對于傳統的數據分析,他對于數據的分析方法完全就是由用戶驅動的,這里的用戶其實是指企業的那些用戶分析師,其數據的分析幾乎都是靠他的經驗驅動的,而分析方式呢,大多數就是交互式分析,工具通常就是OLAP的工具。正是因為數據分析的很大的原因是因為分析師的經驗判斷,就受限于你這個分析師的分析水平,另外一點就是因為人來做,這就限制了我們分析的用戶的容量和用戶的總數。
但是現在這個數據分析是一種比較成熟的技術了,但是相對來說,這也是一種比較落伍的技術了
我們再看機器學習,他的主要的分析方法技術主要是靠算法和數據驅動的,他會自動的進行知識發現,并且判斷出來的數據維度量可能是你想象不到的大,就跟我們現在所判斷的用戶行為的點擊預估,在這個里面,可能會有上百位,上千萬甚至上億的一種維度,對于百度這樣的規模公司,每一次預測可能就會有十億次的分析,這個如果靠人是根本無法想象到的有這么大的規模。而這樣的規模就只能考機器去做。
那么對于機器學習呢,現在正在如火如荼的發展當中,并且有部分的算法已經足夠成熟了,并且已經應用到很多的領域當中。比如推薦系統和頂級預估
最后一點呢就是他們的參與者不同。
對于數據分析它的主要參與者可能就是數據分析師配合上一些數據和算法,然后數據分析師的能力決定結果。
對于機器學習來說,通常在機器學習中算法的中的影響倒不是多么大,比如說我們對于數據分揀也就是像是樸素貝葉斯,邏輯遞歸或者是決策樹都可以對數據進行分類,或者是一些逼格比較高的算法也可以做分類,單絲從具體來說,算法和算法之間的差距并沒有那么懸殊,關鍵還是看你的數據質量不同。
另外一點他們的服務用戶也是不一樣的,首先數據分析師的目標用戶是公司高層,幫助其決策使用
。機器學習他的目標用戶主要就是具體的最終用戶。
從上述幾個方面這就是機器學習和數據分析我所理解的根本不同。但是具體的細節遠遠不止文章中寫的這么淺顯簡單,背后是一整套復雜的邏輯處理和數學邏輯方法。同時也希望大家可以和我一起多多交流,來共同加深理解。