談談機器學習與數據分析中的問題定義

前言

比起討論機器學習和數據分析的方法,我覺得第一優先討論的應該是問題的定義。

正文

最近接到了很多「諮詢」——有的人是看了我的博客,有的人是與我相識甚久的老朋友。所有的諮詢大致可以分為如下幾類:

1、我有很多很多數據,怎麼分析啊?

2、我遇到了一個問題(這個問題其實很大),想用XXX數據解決了,……。

沒準在看這篇文章的你,曾經就給我提問過,這也算是一個統一的回復了。

我一類一類的說。

第一類朋友,往往是在業務中積累了大量的數據

最直觀的就是硬碟都寫滿了好多,某些官僚氣重,審批慢的公司真是買硬碟都來不及。但是他覺得本來的數據農場淪為了數據墳墓,大數據和機器學習現在炙手可熱,無論如何都急著趕上這一波潮流。

拿到數據,首先要評價的是數據的內容和數據的質量,而數據的質量是否堪使用,其實取決於問題的定義。

例如,我知道的某生產型企業,幾乎所有的生產過程都使用了電子化的方式記錄在了資料庫里(但是後來往往發現記錄了一堆垃圾,一會兒說)。再比如,某個朋友和我說他有很多客服/銷售和客戶的海量聊天記錄。

隨後就拋給我一個問題:怎麼分析?能怎麼分析?哪哈辦?

我的第一反應都是,你要解決什麼問題?

我作為一個第三方的角色,既不可能、也沒有義務去對方企業內深入業務,來發現問題和改進點。於是他們就報上了他們的問題(例如「我要提高良品率」或者「分析用戶喜歡使用什麼功能」之類的),但是我給的解決方案大多都是不需要機器學習參與的,這個時候他們往往顯得不是很滿意。

其實第一類朋友根本沒毛線需求,或者我稱其的需求為假需求,最後用某聚集框架聚集一下數據(有的用SQL些幾個View就好),最後用ECHARTS畫幾張好看的圖表(甚至直接用BI工具一鎚子搞定)。

其實這事兒就結束了,他們根本拿不出一個像樣的問題。這樣的問題存在大多數企業,某央企搞個各部門間的大數據競賽,最後就比誰的圖好看,對業務毫無裨益(當然這個說法有點太絕對了,好歹活躍了氣氛嘛哈哈哈)。評委和參賽選手都不知道他們做出來的系統的意義。

還有的人乾脆連問題都問不出,「我覺得是可以分析一下的……」或者」我們要實現大數據運營「、」我們要做數據轉型「就完了,留下一臉懵逼的我。

第二類朋友,他們有問題了,但是他們總是覺得搔不到癢處。這類朋友能提出一些很大的問題,比如上面說的:我要提高良品率。

這一類問題的特點是,看上去是個小問題,其實是一個系統工程,有的時候就算有方案,實施的時候還會受到中國特色人際關係的牽制,改起來傷筋動骨。

就說上面的問題,他們們每個產品都有唯一編號,所有退回來的產品也都有當時生產的記錄。按說這個是可以分析一下的,但是我仔細一看存在兩處數據不幹凈的情況,嚴重影響解決問題:

1. 退回來的產品大多使用了一陣子,沒人知道產品經歷了什麼(這個問題最近挺多啊,上午又碰到一例)

2. 數據記錄混亂,時而在A庫,18年以後的數據存在B庫裡面,要用不同的系統查詢,記錄的欄位也隨著心情變得十分隨性。最後清潔的數據能有30%就不錯了,而且還不知道是哪30%……

其實這個也是大多數企業都有,例如我在某車企見過這樣的數據,同樣是12.00R22.5型的輪胎,有以下的記錄方法:」12胎「,」12.00胎「,」12子午「,」12子午胎「,」子午胎「(對,不標12默認是12.00),這還分析個毛線啊!

更不用說變速箱,油箱,車橋等部件的記錄了,這些全部記錄在一個欄位裡面,用某個符號分隔,時而分隔,時而不分隔。像這樣的例子,舉不勝舉,看的人想砸鍵盤。

什麼樣的問題是好的問題呢?

一個好的數據分析/機器學習問題需要滿足以下幾點:

1、提的出目標,或者更進一步,提的出指標。

比如,我要增加用戶粘性,降低產品的不合格率,或者我要增加廣告的點擊率,就是很好的目標,根據目標,我們可以確定指標,例如一個用戶,7天不登錄視作放棄,我們就可以從降低產品的放棄率著手定義用戶粘性。

2、本身要有好的信息化系統提供優質的數據

做好的信息化系統之前,首先要簡化生產流程,最好讓企業內盡量不要有生產方面的業務專家存在,一旦存在,就說明存在人腦代替電腦的情況出現了。

其次、好的IT系統不但包括高穩定性,高可用,高並發等等,還需要有完善的測試和文檔之類保證系統的可維護性。

當一切都可以使用數據流轉的時候,電腦就是業務專家,程序就是業務邏輯,文檔就是業務邏輯說明。

這樣一個好的信息化系統一般不會出現上面所說的數據混亂的問題,也就能為解決上面的問題提供」彈藥「。

滿足以上兩點以後才能談下面的具體實施,例如某SQL速度慢就dump到HBase里用Spark分析,Logistic非線性太弱用SVM,這些都是方法上的改進,不會影響大橘(嗯,大橘為重)。

當然,如果是在國企,還離不開各級領導的大力支持,否則你抱著數據,抱著問題、乃至抱著解決方法都沒用,一毛錢資源都不會給你的,做了也是無用功,推行不下去。

其實我非常討厭跟風的人,覺得現在是X時代,做X一定是沒問題的。抱著這樣的想法去投資我不好評價。殊不知,真正」跟緊潮流,站在了風口「的企業不是抓住了X技術,而是本身有要解決的問題,而現在因為X技術的快速發展他的問題被砍瓜切菜一樣的解決了。千萬不要本末倒置,那就是先有兒子,再生老子了。

我同時也要勸告各個企業老闆,不要覺得外包很爽,不要覺得來一鎚子就能解決什麼大問題。只看Google廣告做的爽,不看每年在廣告里的投入,Google廣告做起來的過程中都發了多少論文了,背後是大量研發的投入,如果靠復現論文的結果就能解決問題那我只能說太巧了。研發投入不是萬能的,沒有研發投入是萬萬不能的。

一個問題的解決需要的是對問題和現實的清醒認識,對資源的合理和大膽的配置,還有持之以恆的耐心和對遇到困難以後保持的平常心。

這裡的X,你自己換成」大數據「,」機器學習「,」人工智慧「之類的關鍵詞。


推薦閱讀:

如何正確使用「K均值聚類」?
機器學習中的數學基礎(線性代數)
Hidden Markov Model(隱馬爾可夫模型(Discrete))
過擬合與模型容量

TAG:數據分析 | 機器學習 | 解決問題 |