原標題:
大家好,今天很高興來到《大數據名人講堂》,今天我給大家分享的題目是《揭開數據科學神秘面紗》。為什麼會講這個題目,首先説數據科學這個概念從2010年出現以來是一個非常時髦或者是火熱的概念。有些人認為數據科學是一個非常神秘或者神奇的學科,有化腐朽為神奇,點石成金的魔力。但是有一些,了解一些數據科學所涉及的技術的一些人,這樣一些人又認為,其實數據科學不過就是傳統的統計學的領域的一些東西,最多算是它的一些新的發展,跟傳統統計學或者傳統的數據分析沒有本質性的區別,完全是在炒作概念。所以今天我講這個題目就是想從我個人的觀點來跟大家分享一下,到底什麼是數據科學,它跟我們以前的傳統數據分析方法有沒有本質性的不同,或者有的話,它是什麼樣的不同。
今天的內容主要是三個部分,第一個是概要性的來介紹,什麼是數據科學,中間當然就包括了它的定義,它作為一個新的數據分析方法,它的方法論是什麼樣子的,它可能涉及到哪些具體的分析步驟。中間我會比較概覽性的來講一下數據科學涉及到的相關的技術,包括IT方面的技術,以及分析技術,最後一部分會講一些數據科學實際的案例和例子來具體介紹一下數據科學能産生什麼樣的價值,同時數據科學是怎麼來運作的,最後可能會總結下數據科學未來的發展趨勢會是什麼樣子的。
首先,第一個問題,就是很自然的事,什麼是數據科學,數據科學出現其實有很多種不同的定義,我在網上也搜索了一下,我認為維基百科一般還算是比較一個大家公認的定義。維基百科上的定義是這樣子的,數據科學是一門關於從不同形式中的數據中提取知識或者洞察的處理方法和系統的交叉學科。數據科學是統計學,數據挖掘,預測分析的延續。所以這個定義非常非常的正統,它其實講了數據科學會幹些什麼事情,它的研究的對象主要是數據,想嘗試從數據中提取知識或者洞察,但它又涉及到了怎麼去做這些工作,需要哪些方法,需要一些系統的支持,然後它可能牽涉了不同的學科。然後它也點出了其實數據科學是跟統計學,數據挖掘,預測分析這樣以前就存在的學科之間是有一個延續性的關係的一個定義,但是我個人認為這並不是一個最好的定義。
我更喜歡一個定義是這樣子的,數據科學是將數據轉化為行動的藝術,這個定義非常短,但是我覺得是包含了數據科學真正的精髓。我們去研究數據,去分析數據,去從數據中提取知識,其最終的目的是要轉化為行動,這個行動是為了創造價值,或者為了造福社會,或者改善人類的生活,這是數據科學最終的目的。同時,它也説明了數據科學目前現在的狀態,為什麼強調它是一個藝術,就是因為它目前還在一個成長和成熟的過程中,其實在某些很關鍵性的地方還是很依賴於人本身的經驗、直覺跟洞察,而沒有一個非常標準完善的標準流程,可以一步一步就能達到非常好的結果,所以這也正是它目前的魅力所在。而且我覺得這個定義也將數據科學與傳統的統計學,傳統的統計分析技術或者學科有了一個本質性的區分,區分在哪,就是傳統的統計學其實更多的是用來為了我們研究,去了解這個世界,去了解世界的規律,就是提出我們人可以理解的一些知識。但是數據科學其實不完全是這樣子的,它的最終目的是要解決實際的問題,但是這個問題具體是怎麼解決的,可能跟傳統的思維不一樣,可能我們並不需要一定從中間得到一個是人完全可以認可的一種因果關係,或者什麼樣的一個完備的知識,然後我們再基於這個知識做行動,而是基於數據發現了一些可能存在的相關關係,或者能夠形成,或者能夠建立一個預測性的模型,這個模型也許對人來説是一個黑盒狀態的模型,但是基於這個模型我們就可以做出一些預測,基於這些預測我們來採取一些行動,來創造一些新的價值,這我也覺得這是數據科學跟傳統的統計分析有一些本質性不同的地方。
講完什麼是數據科學,我們來説為什麼會産生數據科學。因為其實按照説,這些數據分析的統計分析的工具、學科已經發展很多年了,統計學至少是一百年以上的歷史,但是為什麼到了現階段又有數據科學這個名詞冒出來,最主要的原因就是因為大數據時代的到來,什麼是大數據,這裡我不想反復的去強調這些東西,但是顯然它給我們做數據分析帶來很多前所未有的挑戰,當然也帶來了很多新的機遇,以前可能想都不能想,或者能想但是卻做不到的一些事情,我們現在可以去做了,比如説像我所在的領域,有一些我們的合作夥伴,他們以前有很多很多的很好的想法,但是苦於沒有這樣的數據,沒有大量的數據,所以他們沒有辦法去做這些事情,但是現在隨著技術發展,隨著互聯網的發展,隨著移動互聯網的發展,在移動互聯網內部積累和産生了,包括每天都在實時産生大量大量的數據,而很多這些數據都是非常有價值的,這些數據就可以用來做一些可能以前我們能想,但是卻沒法做的事情。但是正是因為現在數據量變大了,然後數據的來源也複雜了,而且因為數據的産生本身的目的,可能也並不是我們最終需要解決的問題直接來設計、産生的,隨著也帶來了很多很多不確定的,或者不太那麼受控的一些因素,所以也會帶來了一些對數據分析來説,帶來了很多很多新的問題。
這裡我就簡要列了幾個,像這種怎麼去獲取數據,獲取來的數據我們怎麼去整合這些數據,拿到這些數據可能這些數據我們是以前完全不知道的,那麼怎麼去評估它的質量,怎麼評估它的價值,這都會帶來很多很多問題,這就使得限于原有的統計學或者原來的數據挖掘這樣一些範疇內的這樣一些標準的方法流程,或者一些方法論,變得是不可行了,所以才會提出數據科學這門學科。實際上它是説認識到了傳統的這樣一些方法,在新的大數據環境中有很大的不足,我們要去解決這些問題,所以我們有了一個新的學科,這個學科就叫做數據科學。
因為在這個大數據環境下面,我們面臨的挑戰變得非常的不同,所以我們也會産生了新的這個數據科學的自己的一套新的方法論。首先我們來看看對於傳統分析的一個方法論的模式。當然,我這裡是一個非常非常簡要的總結,也並不代表傳統的分析方法,一定就是完全完全這麼簡單的。但是總的來説,傳統的分析方法可以看到一個直線性的過程。首先就是我們可能要提出一個假設,比如最簡單的我研究一個新藥,比如對心臟病是不是有顯著的療效,這麼一個東西,那麼提出這個假設以後或者説提出了這個問題以後,可能我們要去設計很多實驗,比如對照組,把病人分成兩組,一組用安慰劑,一組用新藥,去測試,觀察一段時間,然後我們蒐集到這樣一些病人數據,有了這些數據以後我們用統計分析的模型來去建模,建模以後我們來看這個的結果,是不是能夠説明這個新藥能夠産生真正的顯著療效,這是傳統的統計分析的一個基本的思路。
就是説,我們首先提出問題,提出問題可能我們要根據這個問題去設計實驗,得到數據,然後建模,然後來驗證,最後這個我們的問題是不是得到了解決。但是對數據科學來説就有很大的不同了,它的整個過程就變成一個有點像,好的説就是説一個迭代性的方法,我可能要做很多次,很多次很多次的迭代才能得到一個最終的結果。或者另外説的那個一點的話,可能就像走在一個迷宮中,我們可能在不斷的嘗試,可能走到這條路走不通了,我們回到上一個,又從另外一邊去嘗試。要做很多很多的嘗試,這是為什麼?因為首先對數據科學來説,我們可能一開始可能會提出一個大的問題。比如説,我們要去預測世界上的大屠殺它能不能發生,比如六個月內哪些地區可能發生種族大屠殺這樣的事情。這樣一個宏觀的問題提出來以後,我們應該要哪些數據,或者説我們能夠獲取哪些數據,這本身就是一個巨大的問題。那麼基於這些問題的話,我們蒐集到的這些數據,比如説我們在互聯網上扒了大量的這種時政新聞或者還有一些政府公開的數據以後,做了大量的數據收集工作。蒐集工作以後,在這個階段還並不能夠確定每一個數據到底代表的是什麼意義,它中間到底有多少信息,有多少價值,這些都是不太清楚的,所以這中間要做數據探索,做數據探索以後,我們可能又發現中間有很多子問題出來,這些子問題可能要去進一步探索,可能要建模,可能要回過頭來重新探索數據,可能要做很多次很多次的這樣的嘗試迭代,最終才可能得到比較理想的結果,不可能一開始我就提出了一個假設,我就可以根據這個假設,很好的去設計一個非常受控的實驗,或者説通過這個實驗來得出一個質量非常高的數據,然後基於這個數據我們就可以得到一個很好的結果。數據科學通常不是這樣的,或者典型的數據科學面臨的要解決的問題,不是這樣的問題。所以,這就是數據科學從方法論上來説跟傳統的統計分析的這樣一些方法有本質性的不同。
雖然數據科學還在一個成長的過程中,但是它們一個基本的步驟還是可以做一些大致的劃分,當然這個步驟並不是説每一個,對每一個問題我們都必須嚴格按照從零開始一直走到最後,從蒐集數據開始一直走到行動。其實數據科學這個裏面,實際上是説它每一步都可以産生價值,並不是需要走到行動那一步才可能産生最終的價值,但是中間的每一步也不是一定的必要的過程,根據問題的複雜性,還有數據的複雜性,和我們最終的問題,其中有些步驟是可以跳過去的。當然它有可能是説,走到最後一步又可能回到前面來,這些都是有可能的,但是我們從一般的工作流程來説,我們可以做一些大致的劃分,重要的幾個不同的工作,模塊或者步驟,最基本的可能就是蒐集數據,這是最重要的。其實現在大數據時代,我們社會上,或者説是我們的互聯網上,或者移動互聯網上,有很多公司或者政府或者各種組織,內部都有很多種數據,有些是不公開的,有些是公開的,有著大量的這樣的數據。那麼我們解決一個問題的時候,很重要面臨的一個問題,我們就是需要去蒐集這些數據。我們到底需要哪些數據,這是第一步,因為這是,沒有數據的話,可能後面的工作是無米下鍋的。所以這是第一步,蒐集。蒐集完了以後,因為蒐集的數據可能是從各個渠道來的,它們的質量,它們每個數據裏面的每個字段的意義都可能不太一樣,這裡面需要做大量的準備工作,可能要做數據的清洗,糾錯規範化,甚至有缺失值的填充,很多很多這樣的很細節的工作需要去做,做完這些工作以後,可能我們對數據還需有一個大致的了解,比如説這個數據量到底有多大,有多少條這樣的數據,每一個數據有多少維度,每一個維度是怎麼分佈的,它有多少缺失,或者各種各樣的一些統計性信息,幫助人們對數據有一個概覽性的認識。但是這個認識其實只是説對數據的一些最基本的指標的認識,而不是對數據價值本身的認識。
那麼要探索數據到底有沒有價值,就需要進行一個探索的工作,可能我們一開始並不清楚,比如説我們拿到了,很多人在淘寶上購買的行為。
那我們怎麼知道人在線上購物會有什麼樣不同的模式,或者説有幾類不同的人群,一開始我們可能基於這個數據,數據量非常非常大龐大,不是根據人的肉眼可以看得過來的,我們借助一些數據探索的技術,比如説聚類,或者説是關聯規則分析,我們去探查數據裏面的一些洞察和一些特徵出來。這裡面可能發現一些特徵的人群組,或者是發現一些異常的數據點,這樣的話可以加深我們對數據的認識,也可以幫助我們進一步修正這個數據,發現數據的問題,在這個基礎之上,我們可以對數據有一個很深的認識,我們可以基於這個認識對我們具體的問題我們可以選擇合適的模型,或者説選擇合適的技術來做預測。
比如説預測廣告的點擊率,預測一個用戶對某個物品是不是喜歡,或者預測某一個城市,某一個地區會不會發生犯罪,諸如此類的很多的問題,預測模型來解決。但是預測完了以後,但是很多人認為數據科學最終的目的就是做預測,做預測以後,我們就萬事大吉了,所有問題都解決了,其實也不是這樣子的,對於某些複雜的數據科學問題,預測還只是其中的一步,對於最終解決還有一些需要做的工作。
比如説一個公司它有很多産品,它的新産品上市以後,它要做的很多策略,我怎麼去做定價,因為定價高了可能利潤高,單品的利潤高,但是能買它的人群就減少了,但是它定的很低,可能沒什麼利潤,但它賣的多,到底定什麼樣的價合適,首先的話我們需要解決的一個問題,就是預測問題,我們到底賣多少錢,它能有多少人來買,先把這個模型解決了,如果這個模型解決了以後是不是我們的問題就解決了呢?還不是的,因為可能我們同時上市的很多款産品,它們産品之間可能各有各的,內部就有一些競爭關係,雖然每一款産品,它們的價格跟最終的銷售量預測模型我們建立好,但是最終得出一個所有商品最優的定價策略,可能並不是預測模型能夠給我們回答的,所以這裡面要牽涉到一個做優化的問題。
我們在有了這些預測的結果以後的預測的模型的基礎上,我們再根據一些其他的數據,或者嘗試一些約束,我們可以用一些最優化的方法,來去計算出一個最好的定價策略或者是説可能這個模型過於複雜,我們沒有辦法用一般的計算機技術求解,那我們可能就需要做倣真的工作,我們來看看在不同的策略下可能會得到什麼樣的結果,然後經過很多人這樣的倣真實驗,我們再選取最好的一個結果。這麼就是一個做優化的過程,但優化完了以後我們有很多的策略,但是最後它要産生價值,最重要的一塊還是行動,這個行動就有很多,有線下的,我們怎麼去保證人嚴格的執行這些,我們通過數據科學得來的決策方法,或者説在計算機上,比如説在推薦系統或者計算廣告領域,我們學出了一些很好的模型和策略,那我們怎麼讓計算機系統高效的去執行,這裡面也面臨著很多這種行動方面的這樣一些課題和問題,最終的挑戰就是行動的挑戰。這裡講的數據科學的基本步驟,基本上也就相當於給大家講了數據科學的整個定義是什麼,它是如何工作的一個基本的概念。下面我們可能會深入一下,跟數據科學相關的一些技術,
首先一個,就是IT技術。為什麼要提IT技術呢。因為正是因為有了這個IT技術的support,我們後面的這種分析才有可能得到高效的執行,所以我認為這種IT技術的發展,是數據科學到今天這一步的一個重要的基礎,甚至是物理基礎,所以這裡有必要提一下。
因為我們知道在傳統數據領域的話,發展很多年了,從關系數據庫提出以來,這個關系數據庫的IT領域已經對數據的管理已經統治了很多年,一直到互聯網興起以後才有所撼動。傳統的數據庫,包括後來衍生出來的數據倉庫,它們都是為了公司內部,某些企業公司內部,非常明確的一些業務需求去定出來的一些數據的表格格式,數據倉庫的這樣一種組織方式,這些基礎設施對數據科學來説有沒有作用,當然也是有作用的。但是它們本身的設計目的跟它們的組織方式實際上説是限制了數據科學來發揮威力,為什麼?因為在數據倉庫裏面組織過的這些數據,實際上是從原始數據經過了很多加工、抽取,然後最終形成的這樣一些數據塊,這樣的話,數據它的好處是説,它非常容易讓人理解,非常容易去提取,非常容易查詢,但它的問題就是説,在這個過程中損失了大量信息,因為數據是承載了大量的信息的,從信息論的角度來説,你對信息做任何一次轉換,不管是什麼樣的轉換,它中間的信息量只可能降低,而不可能提升的。
如果我們的數據倉庫為某一特定的目的去設計,這個問題並不明顯,因為我們只是為了解決這個問題,我們從數據中抽取了需要的信息,但是數據科學它的出發點就不一樣了,因為未來我們需要解決的問題可能不是説我們現在能預見到的,我們現在積累的數據,我們現在可能都不知道有什麼用。那我現在怎麼能夠很好的來組織它,按照數據倉庫的方式來組織,來面對一切未來可能的應用,這是做不到的,所以基於這樣的原因,並且因為現今的數據量實在過於龐大,傳統的數據庫、數據倉庫想要把這些數據很好的管理起來,從IT技術來説,也變的非常困難,所以就有人提出了數據湖的概念。這個數據湖的概念是什麼意思呢?就是我們現在有各種各樣的數據,但是我們不管它,我們不像數據庫、數據倉庫那樣,有這麼一個強迫症,我們需要把這個數據梳理的很乾淨,很好,有非常好的Metadata這些東西把它組織起來,不管怎麼樣有什麼數據我就把它放進來,它就像一個湖水一樣,它裏面可能不是那麼清潔,不是那麼乾淨,但是不管怎麼樣,各種江河來的水我全部注入到裏面。
但是如果我們後面要做使用,那我們再從這個湖裏面提取這個數據,這個圖上面我們在左邊列了一個水管,實際上這個水管就是水的入口,入口的話,它可能從IT技術上來講,通過現今的一些流式計算的平臺框架,或者是説這種消息處理的這種軟體可以實時的,非常快速往湖裏注入大量的數據,但數據注入以後它怎麼存儲,其實是依賴於這個我們現在非常流行的分佈式文件系統,它們把這個數據作為一個一個文件,放在這個非常龐大的分佈式文件系統中。但這個分佈式文件系統從物理上又是由商用計算機集群來承載的,這個集群可能非常非常得龐大,有些互聯網公司的內部集群可能至少是以萬台計的,有些甚至是有十萬台,這樣的規模,這樣的集群,這麼多的數據就放在了這麼大規模集群上面的分佈式文件系統上面。它裏面可以放各種不同格式的,各種不同來源的數據都放在裏面。然後這個數據湖不會做任何的加工跟處理,但是它只是對數據湖的要求就是説,我們能夠比較快速方便的能找到我們想要的數據,這是對數據湖的一個挑戰。
數據在數據湖裏面怎麼去利用,利用的話,現在有很多大數據上面的計算的工具,像Spark、Hadoop、Flink,但我列的這些都是目前比較著名的一些,其實在這個領域還有很多很多其他的這樣一些技術,這裡就不一一列舉。
其實在我看來,這些技術就有點像這個自來水廠,或者説是像礦泉水廠做的事情,它們要從湖水裏面,把水吸取上來,做各種各樣的加工處理,然後包裝,然後再拿去售賣或者拿去做別的使用,那麼這就是這個數據湖的出口。它這上面也有大量的大數據計算的技術,目前也是方興未艾,在不斷的發展過程中。
首先主要是處理速度的不斷追求,從最開始的Hadoop,到目前比較火的Spark。Spark前兩天發佈了它的正式的2.0版,號稱是比它之前的版本能夠快十倍以上。就這個技術在不斷的快速的發展過程中,基於這樣的一些IT設施和技術,我們才有可能去實現我們數據科學的一些有價值的應用。
在這個IT技術之上,我們再來簡要的介紹一下,幾個數據科學常用的一些技術,分析技術,最基礎的還是統計,統計的話還有衍生出來的機器學習這樣一個領域,前面説了,可能還需要做優化,還需要做倣真都是有可能的,對這幾塊技術我這裡做一個簡要的介紹。
上大學的時候,很多門學科都會學的,叫做概率論與統計這樣的一門課程,其實這個裏面前半部分講概率,後半部分講統計,其實統計學應該説大家都不算太陌生,最簡單來説,我就數個數都算作統計。但是從統計學的角度來説,它主要做的兩個事情,我個人總結,第一個是做參數估計,就是把數據擬合到我們假設或者給定的一個模型上,然後去估計這個數據最適配模型的參數,我們可能有不同的模型,有線性的模型,也可能有這種高斯的模型,或者泊松分佈的模型,各種各樣的模型,基於這樣的模型上面,我們可能基於不同的數學假設上的估計方法,像什麼最小二乘估計,極大似然估計,最大後驗概率估計,貝葉斯估計等等這樣的估計方法,去把這些參數或者是參數區間估計出來。
另外,統計學做一個很重要的事情就是做這個假設檢驗。假設檢驗是説,我提出一個統計推斷,那麼這個統計推斷是不是真實的,或者它本身不真實,那麼我們通過一系列數據建一個模型來判斷它是不是有統計上的顯著性,來確定這個統計上是可以接受還是不可接受。這是統計學要做的事情。
實際上統計學發展很多年以來,其實已經是很完善的學科了,但是當計算機出現以後,當然還不是大數據時代,只是當計算機出現以後它就面臨很大挑戰,因為計算機一齣現,數據就變得大一些了,因為原來傳統統計學解決的是什麼問題,就是一到兩個維度這樣小規模的問題,可能幾十個樣本,幾百個樣本的問題。
但是計算機出現以後可能馬上就變成幾千個,幾萬個樣本,然後維度可能就變成十個,二十個,幾十個這樣的維度,然後在這種情況下,發現原來統計學在這些問題上就已經無能為力,很多東西就不可能得到靠譜的結果了,所以在這個情況下又催生出了機器學習這樣一個領域。它可能很多要解決的問題還本身是統計學去解決的問題,比如説參數估計,我估計一個預測模型,一個回歸模型。但它面臨的數據的情況不一樣,數據量變多了,維度變得更大,那麼在原來的統計學模型已經不能解決問題了,現在只能通過一些別的辦法來嘗試去解決這些問題,所以這個機器學習呢,是伴隨著計算機發展出現的新的一個學科,發展到現在變的是越來越重要。
機器學習一般分成非監督學習,監督學習和增強學習。增強學習主要是應用在機器人領域,這個不多講。非監督學習可能就是我給你一堆數據,我不告訴你是什麼東西,你可能就從這個數據裏面自己去看,去探索、去發現一些規律出來,這個通常的話是做聚類,或者説如果是圖的數據我可以去做社區發現,也可以用來做一些異常檢測。監督學習它用的就比較多了,一般做預測都是用監督學習,它可以做有些,比如時間序列的預報這樣一個過程,也屬於監督學習的範疇,還有一些做這個分類、做回歸、做推薦,這些都是屬於監督學習的範疇。
目前機器學習發展的火熱,也跟新的一門深度學習技術的發展有關係,深度學習技術本質上是神經網絡的一套技術,這個技術本身也不新穎,但是隨著目前大數據的發展,數據量足夠大了,然後我們的計算能力也提高了,使得以前不可能做到的事情現在能夠做到了,所以使得這個深度學習變得非常方興未艾,它在很多領域解決了傳統的方法已經解決不了的問題,或者説達不到的高度。像圖象識別、語音識別這些東西這個領域上已經被深度學習佔據統治地位了。而且深度學習有一個特點,它基本上涵蓋非監督學習、監督學習、增強學習,它都能非常好的應用,這也是它比較神奇和吸引人的地方。目前的話,甚至深度學習的有些倡導者認為,深度學習將統一整個機器學習,當然這個話題可能是有一定的爭議性。
前面講了,可能在某些情況下,我們在做數據科學的時候還需要一些優化的方法,其實這個概念上是比較簡單的,就是説如果有一個在數學形式上給定的目標,和以及數學形式上給定的約束條件,我們怎麼找到這樣一個最大的元素或者方案,來滿足這個目標和約束。這個圖就是一個最簡單的凸函數例子,我就是怎麼在這個凸函數上找到它的極值點,最大的值那個點,這裡面有很多很多的不同的優化方法,這也是一個非常大的領域,這裡就不展開去講了。
還有一個就是倣真這個領域,可能是這個數據科學用的相對少一點的,但是我也認為是未來還有很大價值的一個東西。就像我們現在在做一些研究工作中,可能我們建了一些模型,這個模型到底好還是不好,我們可能需要去做大量的實驗,但是做大量的實驗,如果在實際實驗是有很大的成本的,那我們就可以考慮做一些倣真的實驗,盡可能的模擬一個真實的環境,讓計算機來幫你做幾千,幾萬次的這樣一個倣真實驗,讓我們從中可以得到最好的結果。
這是從成本角度考慮,另一方面是從數學上有些沒有辦法去做一些解析、解答的問題,它可能可以通過倣真的角度去做一些推演,比如説最典型的三體問題,我這個圖就是三體問題的例子,這個東西因為它的不穩定性導致在數學上沒有辦法直接去做預測,所以説計算機可以做一些模擬懶看它未來的變化,這是倣真這個領域做的事情。
講完了這些技術的話,我們可以簡要的看一些例子來講數據科學。第一,它能創造什麼價值?第二,它到底是怎麼運作的?我講一個我自己實實在在做過的一個例子,這個我們主要講講,數據科學能創造多大的價值,這個例子也是我在做之前是沒有想象到能有這麼好的效果。這個就是幫助為理財産品尋找潛在的客戶。廣義上來看,也可以看做一個營銷的,或者説是做廣告的一個過程。這個怎麼做的呢?就是問題本身是説,比如這個産品已經有三千個存在的客戶,那麼我們想從我們現在的,我們想通過移動廣告去獲得更多的客戶,把這個産品賣出去,那麼我們可能就需要從十億級別的設備或者用戶、移動用戶中去篩選潛在可能的用戶,通過我們的一些大數據的技術和數據科學的一些方法,我們精挑細選最終26000多個潛在客戶。
然後我們通過移動廣告的這樣一個精準投放跟觸達的一個方式,去觸達了這個客戶,然後我們獲得了1600多個客戶的響應,1600多個客戶買了這些産品的這26000多個。好像這個轉化率不是很高,26000個裏面才有1600多個買了東西。但實際上説,跟傳統的撒網的方式,普投的這種方式來比,其實它的效率是提高了60倍,就是原來可能千分之一的轉化率,現在是到百分之六的轉化率,這是一個非常大的提升,60倍提升。另外,就這1600多個人,我們就賣出了兩個億的理財産品,這個也是我們沒有想到能夠創造這麼大的盈收的,人均也達到12萬的額度,這個是很典型的一個數據科學在實踐中,在我們商業中去創造巨大價值的一個例子。
我下面需要講一個,我認為目前來説是數據科學一個最典型最值得研究的一個案例,這個就是實時競價廣告的優化。為什麼呢,因為它首先,它本身是一個非常大規模數據的問題,而且它要求很高的實時性,而且裏面,實際上廣告裏面牽涉到很多的博弈方,它裏面的問題也非常複雜,所以這個問題是非常有意思的。
首先簡要介紹一下實時競價廣告,這個圖就是簡要的介紹一下實時競價廣告的一個問題,現在不管是移動設備上,還是説在互聯網上,一個頁面或者出來一個頁面的時候,它上面可能有廣告位是預留的,但是這個廣告位一開始並不直接貼上廣告,而是它通過實時競價的平臺告訴這些要投廣告的廣告主或者廣告主的代理機構,告訴它們,我這裡有個這樣的廣告位,你們要不要來投,然後這些人願意投的就來出價,出完價以後,誰價高者得,拿走以後來投這個廣告。
這裡面牽扯很多的博弈方,裏面有很多需要做數據科學,做優化的問題,我們今天考慮一個非常簡化的問題,就是對於這個廣告主或者廣告主的代理機構而言,我怎麼去獲得最好投資回報,以最少的錢獲得最高的點擊數。在這個方面,我們對於這個問題最簡單的就是説,如果能夠以最低的價格買到那些高點擊率的廣告位,廣告展示機會,顯然我們的收益是比較高的,要實現這個就顯然要牽涉兩個問題,第一我們要知道,一個廣告機會的價格會是什麼樣的,我們必須去預測它。因為當一個廣告機會來的時候,它並不會直接你告訴你它的價格是多少,因為它是通過競價形成的,如果我們為了得到這個廣告位提了很高的價格這肯定是不合適的,如果我們價格太低,那我們又拿不到這個廣告位,所以如果能夠比較準確的計算這個廣告的合適的價位出來,那麼對於我們來優化我們的出價策略是非常有幫助的。
那麼第一步,我們有了這個廣告位的價格以後,我們還要看這個廣告位的點擊率是多少,因為有些廣告位可能,或者有些廣告機會,它點擊率會高一些,可能你有百分之一的點擊率,但有一些的話可能只有萬分之一的點擊率,那麼這樣的話差別是非常大的。基於這兩個的話,
我們可以籠統的算出,就大家可以算出一個廣告機會來了以後,它的這個平均的點擊成本可能是多少,可能是五塊錢、還是十塊錢或者還是二十塊錢。
那麼有了這個以後我們才能指導廣告主或者廣告的投放代理機構怎麼去合理的去做出價。所以説這樣一個大的問題可能就被拆成了三個子問題。當然我在這裡把這個問題簡化了,在實際中還有更多更複雜的一些挑戰的問題,但是時間有限,也為了更明晰的來説明這個問題,我做的很大的簡化。
這裡首先一個最核心的問題,點擊率預測,首先因為它牽涉到很多方,它有很多方面的數據需要考慮,首先對於一個用戶,對一個廣告的受眾,我怎麼知道這個受眾的情況,我怎麼去拿到它相關的數據,拿到哪些數據是有用的,這些都是需要去嘗試分析的。
然後對於一個廣告位,它本身也有很多特徵,它是哪個網站的,它是什麼展示形式,它有多大,它放在這個頁面什麼位置,都是需要考慮的東西。像這個廣告本身也還有很多,它是什麼類型的廣告,廣告的文案是什麼樣的,它的描述是什麼樣子的,甚至包括它質量是什麼樣子的,還有廣告有素材,有很多圖片,這些是不是也能拿出來幫我們,幫助我們來優化我們的廣告,做點擊率預測,它實際上牽涉的方面非常多,所以我們需要用各種的手段和方法去蒐集、獲取,有些可能是有一些大的生態內部,就本身可能,比如社交網絡平臺它本身就可能具有用戶這樣的人口屬性,還有很多的興趣愛好的數據,還有一些最基礎的IP、地理位置數據可能也都有。
有一些這些數據可能對於某些平臺沒有,它就會説通過DNP這種方式去獲取這樣的一些數據,獲取來這些數據以後,因為最初這些數據並不是為了做廣告而設計而生成的,它可能是因為別的目的而産生,而登記的,這裡面可能就有一些不太符合我們最終要求的數據的情況,所以要做大量的清洗、規範化、糾錯這些東西,來把這個數據的情況給改善,變得可用。在這一步可能就要引入一些比較高級的模型方法來處理數據了。
比如説對於廣告的素材,因為我之前做過一些廣告優化,在這個領域裏面有一個問題我們原來遇到過,就是廣告本身具有的信息並不太多,尤其是這種展示廣告,我僅僅知道它是一個女裝的、童裝的,還是一個什麼類別的,有些最多只有一句話,它的信息非常少,因為它主要的信息都放到一張圖片中去了,為了能夠提取這個廣告更多的信息,我們就採用深度學習的方法去提取廣告素材圖片裏的這些特徵出來。
不管什麼手段,反正把這些數據匯集起來以後,我們最終形成了這樣的訓練數據,形成了訓練數據以後,我們可能要放到一些預測模型裏面,一些大規模預測的模型裏面。像這種一些樹的模型,或者一些線性的模型,或者更高級的深度學習模型來做點擊率的預估。
在這個過程中,有一些模型本身的結果不一定是最好的,但是它訓練出來的模型可以幫助我們重新調整這個數據,重新去抽取這個數據的特徵,又可以使我們的數據質量得到進一步改善,可以做很多這樣的工作,這就是一個點擊率預測。我們通常需要做的一些基礎的,一般的工作,其實它可能最大的工作可能是第一個數據的蒐集、整理、處理這些工作上面。建模方面其實最大的挑戰就在於它的數據量比較龐大,因為本身在一個大的廣告平臺一天的流量可能是幾十個億,而且它可能因為數據源很多,而且這些數據需要交叉,最終的維度可能是億級別,千億級別這樣的維度,這個對機器學習算法本身帶來很大的挑戰。這塊也是很有意思的,但今天不是我們討論的重點。
點擊率預測完以後,其實我們還要預測廣告的價格,當然廣告的價格的話,它的整個流程類似于這個點擊率預測,這個就不詳細講了,只是想強調一點,就是説,我們有了這兩個以後是不是問題就解決了,出價決策的優化是不是就已經解決了,其實沒有,一個簡單的目標,在一天內某一個廣告要在這個平臺投放一萬次,但是假設我們知道了一個廣告成本是什麼樣的,我們能就解決這個問題嗎?
其實不是這樣子的,為什麼呢?因為我們不知道一天到底會有多少廣告機會,而且每個廣告機會到底是什麼樣子的,我們也沒辦法一開始就知道。如果我們知道,我們就選擇最好的拿走就完了,但是實際情況不是這樣的,而是因為廣告機會隨著時間線一點一點在出現的,而且出現的密度,每個時段的質量都不一樣,所以我們一開始不可能直接就基於我們的點擊率成本,就得能得到一個最好的結果,這就有點像一個經典的問題,我怎麼走過一片麥田,怎麼取到最高的麥穗的問題,我只能走一遍。其實本質上有很多時候不可能達到最優的結果,但是總得有一些策略去達到一個相對來説比較好的結果,這就需要引入一些最優化和倣真的方法。
首先我們基於歷史數據,我們來做一個在基於之前點擊率預測和價格預測的這樣一些結果,我們做一些最優化的模型,當然這個最優化的模型也可能需要基於一些不同的假設,可能我們就得出不同的出價策略的方案,有幾個不同的方案,這個方案到底好不好,我們可能還需要拿到歷史數據去做倣真,去做很多實驗,去得到一個最優的方案出來,然後再到我們線上去真正執行。這就是簡要的講了一下整個實時競價廣告優化,廣告主這邊優化的一個數據科學工作方面,需要涉及的內容和方法流程。實際上可以看到,這些基本上就符合了數據科學的幾個步驟。
最後講一下數據科學的未來,我這裡分了幾塊,一個是技術方面,一個是算法方面,還一個是應用方面。技術方面本來是為了應對大數據發展的趨勢,因為大數據産生越來越快,積累越來越多,這就要求了更強的實時處理能力,更強的分佈式的計算能力,還有怎麼去更高效的存儲,更高效的管理這些異構的數據。
還有一個重要的挑戰,怎麼去這樣的工具平臺去整合不同的數據孤島,其實我們現在大數據面臨一個很大的問題,我們可能有很多的腦洞,有很多的設想,但是因為實際情況,技術上或非技術上的原因,造成了這種數據孤島的問題,使得數據科學很多情況下也是有心無力。所以從技術層面上,我們看到國外很多公司,也在做這樣的努力和嘗試,想把解決孤島技術層面的問題儘量的去消除,這是技術層面。
在算法層面,首先就是説,其實數據科學尤其最近幾年的發展,其實非常蓬勃,很多開源社區提供了很多好用的開源的軟體,但是現在還有什麼重大的問題呢,就是説對於大數據,其實現在還是比較缺乏這樣的大規模機器學習或者分析技術,這塊我覺得是未來發展的一個重點。現在我們看到國外、國內也有一些這樣的公司,或者學校也開始考慮去推出這樣的技術或者平臺,甚至做商業化。
還有一個,泛泛的來説,就是人工智慧這一塊,就包括了深度學習這一塊的進一步發展。一部分是它們算法本身的提高,另一部分,它的這個應用的場景,從我們原來服務器端的計算,可能慢慢向嵌入式發展,植入到手機中,或者是一些嵌入式設備中去,就把這個能力前置,這些東西也慢慢的在,有一些創業公司也在做這樣的推進,也是未來的一個方向。
還有的話,大規模複雜數據的可視化也是一個很重要的,對數據科學幫助很大的,因為人很難去理解很高維度的數據,怎麼以更好的形式,把這個複雜的數據,能夠把最核心的信息抽取出來,給人展示出來,這很有利於數據科學家去解決數據科學中的實際問題。這個可能也是未來需要發展的一個方向。
這運用就很多了,其實列的這幾個也只是我個人想到的一些,其實可能還包括了很多很多方面,現在本身就已經有很多的成功的應用,像計算廣告、推薦、銀行風控很多這方面的應用都有了,未來的話,可能像什麼健康醫療,可能隨著醫療數據的個人健康的這種智慧穿戴設備的興起,可能會收到很多這樣的數據,而且隨著醫療數據的開放,這兩方面的數據做結合,可能産生很好多的解決方案,很多好的應用,實際上物聯網也在蓬勃發展,工業的還有民用都在發展過程中,這個裏面應該也會産生很多有意思的應用,甚至包括人力資源方面的應用,還有一些包括能夠增進社會福利的,改善我們社會的,這些其實也有一些嘗試。比如在美國有一些城市去用大數據去預測哪些地區會不會犯罪,或者説我們預測全球哪些地方6個月內會發生種族屠殺這樣的東西,警方或者國際社會可以及時的介入去制止,所以它有些方面並不一定只是去説創造商業價值,可能會去創造更大的社會價值,未來不管是從技術、算法和應用層面,其實數據科學還有非常大的空間,非常廣闊的未來,也是值得我們大家去努力的。
謝謝大家,今天就介紹這些東西,很高興跟大家分享我自己的一些見解,再次感謝《大數據名人講堂》,謝謝各位。