編輯導語:數據分析師,乍一聽好像只需要與數據打交道,收集分析數據並且做出相應地決策判斷。但是,真的是這樣子的嗎?數據分析師其實也需要學習算法知識,並且在實際的工作中去做大量的驗證。在本篇文章中,作者就帶我們去解數據分析師與算法的前世今生。
通過和一些朋友交流,發現目前一些數據分析師,其實不是很清楚機器學習可以如何應用於業務,也不清楚自己到底要不要去學習算法知識。實際業務中一些複雜算法場景例如商品推薦、內容推薦、匹配策略等,其實都需要數據分析師做大量的探索驗證工作。
分析師前期可以為建模指導方向,中後期也為模型的優化提供一些新的思路與數據洞察,此外用算法還可以大大提升分析效率與分析科學性。今天,就讓我們詳細的來了解一下數據分析師與算法的前世今生。
本篇目錄:
- 對算法的一些理解
- 哪些場景下需要用到機器學習算法
- 算法的產出物及形態,如何應用於業務
- 為什麼數據分析師需要會機器學習
- 數據分析師與算法工程師的職責差異
- 實際業務中如何分工配合可以效用最大化
- 數據分析師應該掌握的程度
在講分析師與算法之前,先來理解一下什麼是算法(Algorithm),專業術語在很多書籍、文章裏面都有分別的定義,通俗一點理解,大致上可以認為算法是為了解決某個問題的固定化計算方法與步驟。
拆解一下上面這句話:
- 目的:為了解決某個/某類問題,需要在這之前瞭解到背後的業務背景、關聯場景;
- 方法:通過計算來實現,也就意味着需要具備具體的、可量化的信息輸入,且可計算,而非不可執行的概念體;
- 步驟:有先後順序,先做什麼然後做什麼最後做什麼,每個過程之間還必須具備可行性,執行次數也一定是有限的;
- 結論:是否能夠解決這個問題,效果如何,最終必須得有一個產出物。在算法之外,還有幾層擴展;
- 決策:根據一個或者多個結論進行判斷,這個過程是不是符合預期的,如何調整優化,是否可直接應用於業務;
- 應用拓展:除了解決最初的那個問題外,還有哪些同質類型的問題也可以得到解決,也就是場景的拓展。
具體的算法搭建過程就不説了,在不少工具書、專業書、案例書裏面都有非常詳細的講解。回到問題上,什麼場景下需要用到算法去解決問題。舉幾個生活裏面的例子:
- 譬如説做菜:為了能吃的更好點,選擇一本合適的食譜來準備食材、輔料,根據步驟和技巧“小火燉、中火炸、大火炒”,“一炒、二燉、三燜、四涮”,起鍋裝盤;
- 譬如上學:從家門出發,直走50米,第一個十字路口右轉,繼續直行100米,到達公交站,乘402路車,5站後下車,沿人行道繼續行走200米,左轉,再直行150米,最終到達校門。
這些都可以理解為算法,生活裏面比比皆是,不過多數情況下成為了我們習慣的一種方式罷了。
二、哪些場景下需要用到機器學習算法在很多場景下都需要用到機器學習算法,換一個角度,來説説我對應用場景的理解。本質上説,我過去的一些項目裏面通過算法解決的問題大致上可以分為這麼幾類
1. 供需匹配的問題量變產生質變,過去的十年時間,無論是在B2C,還是B2B、S2B、B2G,我們去建立用户畫像做精準營銷、做好推薦系統實現千人千面、對用户進行分層分類打標籤、給用户的評價信息劃分情緒好壞等等,都是為了更好的去做供需關係管理匹配。
視頻個性化推薦是供需管理,商品個性化推薦是供需管理,網約車是供需管理,供需管理即“ 誰可以找誰消費到一件相對比較合適的東西(內容、物品、信息、線索、商機),在這個過程中還可能需要通過哪幾個誰才能打通彼此之間的聯繫。”
衍生出的問題立馬就出現了,如何從千萬級甚至億級的商品裏面去做匹配召回,如何從萬億級的會話內容信息中定位線索,如何明確哪些人才是我們目標的特定人羣,如何把相應的信息通過什麼渠道push到最合適的人,如何去做到好的觸達,又如何去回收這些人收到信息之後的反饋效果。
如果只有幾千條數據,一個團隊裏面10來個人,每個人分個百來條逐一去確認,則不需通過分析也能實現,耗費的只不過是人力上的一些時間投入。
所以日常對接需求過程中,接到一個需求時,一般會先進行資源匹配評估,這個事情能不能通過疊人力的方式解決,如果通過線下大概需要花多少人力成本,用一些小樣本數據的歸納總結能不能得出通用的規則。做調研然後去推行的成本有多少,產出有多少。
再之後才是通過算法方案去解決,投入的工程師要幾人月,設備資源性能上的要求,能夠持續多久,可以影響的層面,以及最後的產出估測。最後再綜合考慮,這個投入產出比的情況下,到底是通過小數據分析去形成規則,還是需要通過算法去挖掘特徵,以及方案的可持續性。
大公司裏面資源較豐富,往往這兩者會並行。從某種程度也就嚴格的區分了數據分析和數據算法間的職責邊界;而中小企業資源有限,可能造成分析即算法的現象。
我們發現,供需匹配過程中涉及的算法,基本都是有監督算法,不論是人羣分類、商品召回、需求匹配,都可以通過過去的經驗進行一個初步標籤建立,然後逐步去對劃分的準確性進行校驗和優化。
值得一談的是,在供需的某些場景過程中會並存很多涉及物聯網的知識,譬如物流調度、配送匹配、路線優化、倉庫建設等等供應鏈優化方面的事情,這些場景下除了算法外,還需要去了解下運籌學的內容。
2. 異常識別和診斷異常檢測,在前幾年p2p還沒有暴雷的時候,金融領域裏面遍地都是,主要的場景就是風控,風控的場景細分:
- 信用卡交易反欺詐:分類任務,GBDT算法 / XGBT算法+LR邏輯迴歸;
- 信用卡申請反欺詐:分類任務,GBDT算法 / XGBT算法+LR邏輯迴歸;
- 貸款申請反欺詐:分類任務,GBDT算法 / XGBT算法+LR邏輯迴歸;
- 反洗錢:分類任務,GBDT算法 / XGBT算法+LR邏輯迴歸。
金融領域涉及到風控的幾乎都是GBDT / XGBT+LR,因為在金融行業有一個非常特別的屬性:監管。
對於算法結果必須有非常好的模型解釋,對於LR模型來説,這是天然的優勢,特徵可解釋,特徵工程清晰,每個特徵的貢獻度、相關程度也可以被統計出來。
換了其他深度學習的模型,從最終的模型效果上來看,roc/auc/ks的表現沒差,但是解釋性極差,也就造成了很多應用上的壁壘。換一個通俗點説法,你很高級,然而並不實用,華而不實。
3. 排序排序之所以單拎出來,它的應用場景其實有一定的侷限性,但是怎麼做好排序,客觀、合理,卻是一個值得去考究的事情。常見的排序應用場景有熱點榜單、搜索排序、推薦排序等。
知乎的問題回答排序是一個經典的排序應用場景,既要保證優質高贊內容可以排在前面被用户瀏覽,又要保證新增內容有一定曝光量,同時需要綜合考慮話題熱度及社區調性等多重因素。
故需要將回答贊/踩數量、回答用户該領域權威性、贊/踩用户領域權威性、回答時間、回答爭議性、回答用户的歷史畫像特徵等綜合權重進行算法排序。
4. 預測數值預測與分類預測都屬於預測場景。銷售預測、股票預測、流量預測,這些都是常見的預測場景。11、12年的時候清一色的都會用arima,spss在手天下我有,沒有什麼是時序不能解決的,到後面就變成xgboost、LightGBM了。
5. 知識圖譜2012年的時候google推出了一個叫Knowledge Graph的產品,能夠直觀的看到詞和其背後知識的關係。
很多大公司都已經在知識圖譜的建設上進行佈局了,知識圖譜最早的應用是提升搜索引擎的能力,隨後在輔助智能問答、自然語言理解、大數據分析、推薦計算、物聯網設備互聯、可解釋性人工智能等多個方面展現出豐富的應用價值,這幾年推廣比較成功的應該是AI輔助司法進行案件判決。
- 信息檢索/搜索:搜索引擎中對實體信息的精準聚合和匹配、對關鍵詞的理解以及對搜索意圖的語義分析等;
- 自然語言理解:知識圖譜中的知識作為理解自然語言中實體和關係的背景信息;
- 問答系統:匹配問答模式和知識圖譜中知識子圖之間的映射;
- 推薦系統:將知識圖譜作為一種輔助信息集成到推薦系統中以提供更加精準的推薦選項,知識圖譜+推薦系統;
- 電子商務:構建商品的知識圖譜用於精準匹配用户的購買意願和商品候選集,知識圖譜+推薦系統;
- 金融風控:利用實體之間的關係分析金融活動的風險以提供在風險觸發後的補救措施(如反欺詐等);
- 公安刑偵:分析實體和實體之間的關係獲取案件線索等;
- 司法輔助:法律條文的結構化表示和查詢用於輔助案件的判決等;
- 教育醫療:提供可視化的知識表示,用於藥物分析、疾病診斷等;
- 社交類業務:社交類業務具備高度連接的特點,比如好友關係等,<用户1,關注,用户2>。
我們最近常聽到的一個詞叫“大數據殺熟”,應該是算法在業務上非常常用的一種應用場景。通常來説,算法的產出物有兩種,第一種是算法產出的結果(分羣、分類、預測值),第二種是算法產出的規則。
1. 產出結果- 降維:無論是對數據的分類,還是對數值的預測,對業務應用都可以作為篩選對象,進一步縮小目標,找到清晰的劃分邊界。在一些臨界點上算法會減少人力決策成本,從諸多策略中選擇最優去做嘗試;
- 精細化:把結果作為標籤,結合CRM、廣告系統、營銷系統,幫助業務更便捷、更精準地獲取信息,強化用户感知,製造新奇感引起用户注意,設置規則以提升用户使用黏性;
- 策略:降低成本、提效增益,算法本質上解決的就是這兩件事情,算法產出結果可以有效的支撐策略制定,論證是或否的可行性。
很多時候我們往往只會關注到了結果本身,準確性、精確率、召回率怎麼樣,卻忽略了算法產生的規則層應用。前面提到過的模型可解釋性,其實就是一種規則的具象化。
在關聯分析中,有提到過強相關、弱相關、不相關。作為一名業務,他可以説這個產出結果通過業務經驗也能知道,而作為分析,則需要把所謂“經驗”演繹為規則,這個規則就是通過數字串聯起來的。
於算法而言,在模型解釋時,也會碰到一些特徵具備很強的規則,但往往容易只看數據結果,卻忽略了其在實際業務過程中的意義和因果關係,於是造成了“算法分析出的結果不如根據經驗拍腦袋決策”的現象。
四、為什麼數據分析師需要會機器學習我們先明確一個概念,即數據分析,它既可以作為一個社會中職業人的附加技能存在,也可以作為一個社會中職業人的主幹職業進行發展。
1. 多數情況下,我們僅在迎合這個世界的法則,卻並未去思考它為什麼存在在挖掘分析應用的項目中,算法是核心要素,大部分算法的實現原理,都會涉及一些高等數學知識。
數學本身非常抽象,學的快忘的快,自然而然算法對很多人來説具備某種神秘感。人類的好奇心和上進心,促進了人類的進化與生存,所以我要揭開那層神秘面紗去學習。
同樣人也會經常高估自己的毅力及短期內可取得成果,所以往往是:費勁周折投入大量時間搞明白幾個算法原理實現後,就再也沒有繼續堅持下去。此時可能走向一個極端,只要能使用第三方的算法庫在自己的電腦中成功運行並能輸出結果就可以,效果不好就再換一個算法嘗試。
2. 數據分析為了達成業務目標,可以使用算法來進行快速論證分析師懂算法非常有必要,最近幾年,數據分析師的崗位職責中,或多或少會寫一些算法相關要求。
我的認知是,初級分析師不需要懂算法即可cover大部分的工作內容。但是要想職業更上一層樓,增強分析的科學性嚴謹性和效率性,尤其是涉及算法策略驅動的業務類型中,分析師必須懂一些常用機器學習算法。
其實分析的重點還是聚焦在對目標問題的拆解、論證與實現上,對於絕大多數分析師而言,業務需求特徵大致可歸納為,交付時間短、實現成效快、數據維度豐富、結論支撐足夠、方便報告彙報。
大部分業務分析的場景都可以通過類似杜邦分析的方法進行層層下鑽拆解,而這個過程對數學知識以及算法知識的涉及可能非常少。
業界已經有了非常多成熟的算法應用實踐,有的時候為了做數據論證和探索,就需要用到類似算法,其目的是用最短的時間找到一個可以去下結論的突破點。於是在實際應用時會碰到一個前提,即每種算法都有其合適的應用場景及前置條件,且當具體使用時超級參數的影響也非常大。
所以如果我們不從更高層次去理解和對待算法,那麼在實際運用時,就可能如刻舟求劍,難以取得預想效果或者過早的否掉一個本可以恰當解決當前問題的算法模型,只因為相關的工作沒有足夠的重視(例如數據清洗、特徵選取方式不合理)。
skl包提供了大量簡單函數,為了快速運用這些函數解決實際問題,我們不得不花時間去了解算法的內部原理及實現細節。建築設計師不需要精通製造鋼筋水泥的工藝,但需要了解不同鋼鐵、水泥的性質用途及之間配合關係,道理同樣適用在這個環節。
3. 分析師要更好成長,橫向知識儲備必不可少數據分析師的成長就像一場馬拉松,需要合理分配時間精力。專注力和自制力是一種稀缺資源,需要用在最合適的地方。經常提醒自己的目標是什麼,才能把事情做好,對於分析師來説尤其如此。
不僅僅是算法,在這個大的社會環境下,對於市場、行業、細分領域、垂直領域、崗位、職業、技術、技能、商業很多個方面都需要有所涉獵,因為分析只是一個技能,把它作為職業更需要貼切實際場景下做出相應合理的策略。
五、數據分析師與算法工程師的職責差異1. 數據分析師的要求- 懂業務是前提:視野需要儘可能寬,需要去了解行業大盤、市場動態、公司業務、商業模式、業務流程,建立自己的認知和判別思維,在指定場景下能夠去用科學嚴謹的方法得出合理結論;
- 懂分析是核心:數據分析的基本方法原理、專業高效的數據分析方法論、靈活性的組合技巧運用、結合業務的適用分析方法論、高度的數據敏感性;
- 懂彙報是台階:好的分析離不開好的報告,好的報告離不開好的彙報技巧,在誰的面前怎麼説話,説什麼話,也是一項技術活兒。
- 懂技術是前提:不同的算法可能用不同的時間、空間或效率來完成同樣的任務,算法的運行效能需要具備一定的coding技術支撐。
- 專業極其細分:按照研究方向劃分,主要是視頻算法工程師、圖像處理算法工程師、音頻算法工程師、通信基帶算法工程師、信號算法工程師、NLP算法工程師、生物醫學信號算法工程師等知識深度寬泛。
- 共性:都需要對數據進行探索,發覺數據之間的模式和規律,從而運用一些列的規則和公式來解決實際的問題(都要讀統計學、概率論);
- 區別:數據分析通過一些傳統的方法來解決實際問題,門檻低,人人都是數據分析,實現效果即可忽略性能;算法工程師的門檻相對較高,需要對原有的方法進行一定程度的創新,來解決特定領域中的問題,且需要保證算法的性能、效果、穩定。
實際業務過程中,分析和算法的需求方是存在一定差異的。在協同上,往往有可能不同部門的人,在做同一件事。可能會因為需求導入時的背景、視角不同,造成結論之間存在差異性。
1. 一個案例有一些人總是不及時向電信運營商繳錢,如何發現它們?
- 數據分析:通過對數據的觀察,我們發現不及時繳錢人羣裏的貧困人口占82%。所以結論是收入低的人往往會繳費不及時。結論就需要降低資費;
- 數據算法:通過編寫好的算法自行發現深層次的原因。原因可能是,家住在五環以外的人,由於環境偏遠不及時繳錢。結論就需要多設立一些營業廳或者自助繳費點。
數據算法之前,應該先進行數據的探索分析,通過對業務問題的定位和拆解,找到可用的數據維度特徵,採集數據,形成數據指標進行各種維度組合的統計分析,得出初步結論進行彙報,如上:人均收入低建議降低資費。
在業務信息聚焦過程中,對發現出來無法具象描述出來的課題,組織進行專題研究,通過算法的形式構建數據特徵進行深層次挖掘,得出潛在結論,如上:環境偏遠建議增加駐點。
之後針對算法產出的結論,可以進行可行性分析,基於業務上的實際訴求,分析選址位置、人羣覆蓋、套餐標準等等。
3. 小結分析和算法在某種程度上來説可以混淆在一起,小團隊裏面,1~2個資深的分析也可以hold 。很多事情都是需要自驅進行,但從實際項目的推進上,通常都是先分析,再專題,繼而深度結合業務分析,再分析驅動算法迭代,如此反覆。
七、數據分析師應該掌握的程度綜上,對於一個專業數據分析師來説,在各個層面需要掌握的能力要求可以如下:
- 行業知識 ★★★★
- 業務瞭解 ★★★★★
- 分析思維 ★★★★★
- 數據處理 ★★★★
- 算法原理 ★★★
- coding能力 ★★★
- 報告撰寫 ★★★★★
- 彙報演講 ★★★★
- 歸納總結 ★★★★★
- 資源整合 ★★★★
作者:趙小洛,公眾號:趙小洛洛洛
本文由 @趙小洛 原創發佈於人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基於CC0協議