移動統計分析 - 那些年一起踩過的坑

jopen 9年前發布 | 20K 次閱讀 移動統計

 

出門在外,被問得最多的問題就是“應用開發者為啥要用TalkingData的統計分析,自己做不行嗎,看起來很簡單啊”。每當這時,我就覺得萬般辛酸,內牛滿面,在做統計分析平臺的過程中遇到的無數坑,騎著羊駝在腦海呼嘯而過。

TalkingData這4年來在移動統計分析上投入巨大,就是為了去填平諸多的坑。但是很多人是不到黃河心不死,所以我鼓勵大家都來做做統計分析平臺,一起來踩坑,“望山跑死馬”,只有跑斷幾條腿,大家才會有感覺。

為了避免大家吃虧以后怪我言之不預,所以今天重點聊聊移動統計分析的坑。

第一個大坑:設備唯一性識別

智能設備的唯一性識別是所有移動統計分析的基礎,唯一性識別不準,就談不上數據分析。客戶在接入TalkingData的時候一般會先對數據,由于設備唯一性識別不準確,有時候數據差異能達到20%以上。

在PC時代,PC的唯一性可以通過一些硬件id(比如硬盤、CPU、網卡Mac等)來標識,技術相對成熟,識別也比較穩定。但是在智能手機上,情況就很不一樣了:

一是對用戶隱私和數據安全有更多管控,有些數據無法獲取。尤其是蘋果系統,對此更加嚴格,其識別方法就經歷過UUID、UDID、WIFI MAC、Open UDID、IDFA、IDFV等不同階段的安全策略調整,不同機型不同系統版本需要使用不同的方法,ID持久化的手段也不同。

二是國內安卓手機生態系統非常碎片化,超過2萬款的不同安卓系統,在底層接口上或多或少具有一定的差異性,從來沒有一個統一規范或絕對保險的信息獲取手段,都需要有針對性的進行適配。也許你不知道,記錄一個原生ID需要綜合使用至少4種方式,持久化一個Html5的ID更需要超過6種方式。這里需要的不僅是經驗的積累,還需要耐心。

TalkingData經過和2萬多款系統的艱苦斗爭,逐步建立起相對完善的智能設備TDID(TalkingData Device ID)識別體系,在設備識別準確率上有極為優異的表現。當然,隨著智能設備的品類和款型不斷豐富,這個斗爭還會一直持續下去,我們也會堅持投入資源,以維持高質量的設備識別。

第二個大坑:數據標準化

數據標準化解決的是數據質量的問題,數據標準化程度越高,數據分析結果就越準確,客戶對于數據的理解也就越深入。但是在中國,數據標準化是一個比較高的門檻,需要投入大量資源做很多辛苦的“接地氣”的工作,并非所有公司(包括BAT)都有能力和意愿持續投入資源在這樣苦逼的事情上。

比如手機機型是數據分析的一個比較重要的維度,機型數據能夠反映用戶的一些屬性特征,比如年齡、性別、消費能力等等。但是對于智能手機(尤其是安卓手機)來說,識別機型絕不是一件容易的事情,即使是有一些巨頭,機型數據分析里面最大比例的也是“其他設備”。先不說刷機的存在讓手機經常面目全非,即使是同一款手機不同出廠批次,也會出現較大的系統差異。僅僅從系統配置屬性里面拿到制造商和機型兩個字段遠遠不夠,再加上更多的附加系統配置屬性也稍稍不足,有的系統要根據手機內存的大小來進一步輔助機型判斷,有的系統還需要一定的技術手段獲取核心芯片類型。TalkingData目前有一個團隊專門在做機型的識別,已經建立了一個很大的機型匹配模型和數據庫,在機型識別準確度上名列前茅。

再比如大家以為很簡單的“運營商信息”,大部分公司可能直接截取系統配置信息里面的運營商字段即可,好像也沒啥要做的。但是我們收集的信息表明,即使是“中國移動”這家運營商,就有超過200條的字符串對應,包括“中國移動”、“中國移動 Mobile”、“China Mobile”、“中國移動”、“China-Mobile”、“中國移動很**”等等,千奇百怪,令人嘆為觀止。TalkingData為了數據的準確,針對類似的數據指標建立起了一套半自動化的處理流程,采用流式處理技術,在海量數據流轉過程中,發現新的詞條,就會提示相關的數據標準化人員。因此可以相對實時、準確的完成數據清洗工作。

還有,關于歸屬區域的數據,常規手段是通過IP地址來識別,于是大家都有了自己的IP地址和區域的映射表。但是中國的情況大家都知道,網絡環境是非常復雜的,各省運營商從成本考慮,經常修改路由策略,導致IP地址非常混亂,基于歸屬區域的數據分析結果漏洞百出,經不起推敲。比如你以為你的用戶大部分在上海,但是歸屬地一查,居然甘肅占大頭!

為了解決這個問題,TalkingData和多家數據服務商合作,建立了一套基于IP地址、位置、WIFI背景和用戶行為分析的歸屬地分析系統,大大提升了歸屬地判斷的準確度。伙伴們再也不用擔心找不準自己的用戶了。

數據取不到是一方面,能取到但是有錯誤是另一方面,比如一些老款手機有bug,經常斷電重啟了以后系統時間就變成1950年,這需要在數據處理的時候進行清洗。諸如此類,舉不勝舉。

所以在TalkingData看來,“大數據”更多代表的是“大量的臟數據”,只有經過清洗和標準化的數據,才有可能產生價值。數據質量對他人算是可有可無,但對TalkingData卻是生命線,即使再苦逼我們必須去做,也必須做好。我們在此投入很多資源,取得一些成績,也在逐步開放能力給廣大合作伙伴,讓大家真正享受到大數據的紅利。

第三個大坑:分析算法

數據統計分析中會用到各種數據挖掘的算法,比如預測收入和流失,或者對自己的用戶做人群畫像(比如打興趣標簽)。

通常,大家覺得架幾臺服務器,部署一個Spark,跑一個MLLib任務也就差不多可以做挖掘了。對于剛起步的產品線的確如此,這時候數據量還比較小,怎么跑都能很快跑完,結果秒出,皆大歡喜。但是隨著產品的發展,用戶數不斷增大,數據樣本也隨著增長。同時隨著大家對數據需求的提升,需要刻畫更加豐富的用戶特性,于是樣本特征維度也隨之增長。這兩個因素,導致普通的機器學習算法越來越沒法滿足需求。

從算法復雜度來說,傳統算法的復雜度與訓練樣本數(如SVM)或特征數量(如決策樹)的關系是超線性關系。有一些模型學習中用到的優化方法,如牛頓法,需要計算訓練特征維度規模的海塞矩陣的逆矩陣及其乘法,其計算復雜度為 O(n^3)。從I/O消耗上說,機器學習算法大部分都包含迭代,需要反復多次使用數據,而在處理大規模數據時,受硬件條件限制,訓練數據集可能無法一次性全部加載到內存中,只能分批次從文件系統中讀取,于是又帶來巨大的存儲I/O開銷。

急劇膨脹的計算量和I/O消耗,使得訓練時間變得越來越長,原來秒出的結果慢慢變成分鐘出,再變成小時出,甚至最后隔天才能出,越來越無法接受。能增加硬件解決?實際上,硬件數量的擴充帶來的計算效率的提升,大大落后于數據量增長帶來的計算量和I/O消耗。擴充硬件并不是最有效的方案,依然需要從算法優化上去解決——這里面既需要對算法本身有深刻了解,也需要具有數據領域相關的知識。對于任何公司來說,必須要有一個有經驗和積累的算法團隊才能搞得定,資源和時間都必須投入。

TalkingData的數據挖掘算法團隊在移動大數據方面積累深厚,基于對算法和數據的理解,自主研發出高性能大規模機器學習算法框架,解決了計算復雜度和資源消耗的問題,即使在2億樣本和300萬維度的狀況下,也能應對自如。

第四個大坑:成本

不差錢不差人也不差時間的土豪,請自動跳過本章節,避免浪費時間。

小公司數據量小,統計分析平臺可以簡陋些,但是再簡陋也至少需要統計分析功能。先不說各種算法各種數據規范化,至少要有一個后臺開發吧?寫寫分析邏輯,搞搞數據庫,這是必須的。另外1個數據運營人員少不了,要不然誰來定義分析指標的概念和計算方法,誰來跟蹤數據的變化,誰來寫報告?最后這個系統需要界面吧?再簡陋,1個前端做界面和維護也是需要的,因為大家總是對數據充滿好奇心,需要做各種解讀,因此不斷會有新界面的需求。這樣,至少3個人就牽扯進去了。對于目前起步大概10個人左右的小創業團隊來說,3個人放在這上面,誰受得了?

對于大公司來說,投入幾個人做個統計分析平臺好像也沒什么。但是別忘記了,大公司的數據量要高出好幾個量級,帶來了計算量和復雜度的超線性增長。這時候不僅需要算法團隊來研究算法的優化,也需要運維團隊來規劃更大規模的服務器集群。大公司的產品,不支持全平臺簡直都不好意思說,安卓、iOS、 WindowsMobile這樣的主流平臺先不說,光是游戲就至少還有cocos2D、unity3D、ANE、Html5,于是有需要有專人去負責不同平臺客戶端的數據統一和規范的工作。這還不算完,公司大了,部門多了,要看數據的人也多了,有的人看新增、活躍、留存,有的人看轉化漏斗,有的人看渠道 ROI……這么多的指標,總要有專門人歸納整理提煉維護,兼職的大貓小貓兩三只搞得過來嗎?這還不說一些垂直行業需要更加深入的指標分析和預測,比如移動游戲就需要分析過關數據、游戲時長、升級數據、付費數據等等,還有復雜的付費預測、流失預測……這就牽涉到產品團隊和運營團隊的支持。零零總總,做好一些統計分析平臺,需要投入的就至少包含一個數據算法團隊、一個IT運維團隊、一個客戶端團隊、一個數據運營團隊、一個產品團隊。一個團隊2-3個人,咱就準備15個人吧。對于有高標準要求的公司來說,還需要一些人做數據的標準化,一些人專門去談第三方公司數據的引入(以提升自有數據的豐富性)……人數還會增加。還沒完,除了人力資源成本和管理成本,還要算上帶寬、服務器、IDC租用等等,也要算上為了數據安全所需要的多機備份、多數據中心容災等等……這絕不是一筆小投入了!

第五個大坑:數據的高效利用

最后的關鍵還在于,無論公司大小,即使花了錢,也未必做得好。而且,做出來一回事,用得好是另外一回事。依樣畫葫蘆很容易,但是該下的功夫無論如何也省不了。

以前app開發者只關注推廣,重視下載量和安裝量(即使現在有一些app依然如此),后來慢慢知道新增、日活、留存這些指標了。但這還遠遠不夠,如何通過這些數據來指導產品的改進和運營的優化?

并不是搭個框架放點數據做些圖表就叫精細化運營,這些都需要有一套成熟的方法論的指導。從用戶的獲取,到用戶進入應用以后產生活躍,到用戶對應用功能或服務產生黏性,到應用如何通過服務或功能獲取收入,并通過為用戶提供超過預期的服務來產生分享,從而進入第二次傳播,影響新用戶的獲取。這個循環中,每個環節都可能遇到大量問題。通過數據的指導,有助于我們發現問題并找出有針對性的解決方案。

TalkingData服務于6萬開發者和8萬的移動應用,覆蓋超過15億智能設備,每天都有大量的客戶交互和咨詢,因此你遇到的問題,我們都不陌生。TalkingData根據自己的經驗以及業界的最佳運營實踐,總結出 AARRR(Acquisition、Activation、Retention、Revenue、Refer)運營模型 ,融合到統計分析產品線中,來指導產品和運營。你能想到的功能,我們已經有了,你想不到的功能,我們也有。

很小的時候就學過,“知易行難”。空口說大話容易,踏踏實實做出一件事情來很難。TalkingData經歷了這么多坑,才把統計分析做出來,我們絕不希望小伙伴們還要經歷一遍我們所經歷的困難。TalkingData也在創業中,深知創業艱難,無暇他顧。我們希望能夠幫助大家盡可能的分擔,讓大家可以把全部熱血和精力都投入到自己的焦點上,多增加一點成功的機會。

當然,依然想做統計分析的朋友,歡迎來我司交流切磋,共同進步。

【后記】

最后要提到的是,有不少朋友認為TalkingData是數據工具公司。其實從我們的產品線就可以看出來,我們是以數據而不是工具為核心。我們致力于數據的研究,通過數據來改變企業做決定的方式,而工具只是數據的呈現。如果大家覺得自己有志于大數據領域,對大數據技術有熱情,對數據如何解決日常生活中的問題有好奇心,歡迎加入TalkingData大數據研發團隊,我們這里有足夠多的數據和技術來挑戰你的極限,你肯定不會失望!

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!