機器學習建模老司機的幾點思考與總結

2021-09-28 14:27:21 字數 3058 閱讀 5969

機器學習現在在很多地方都是十分流行,無論現在的你是否從事建模工作,還是你將來想從事相關工作,對於從業者可以從中看出一些同感與意見,對於未來從業者可以了解這個職業到底是做些什麼。

話不多說,乙個機器學習模型的開發周期一般可以分為:

1、業務需求挖掘(business insight)

2、資料蒐集處理(data curation)

3、模型訓練開發(modeling)

4、部署及測試上線(deployment)

5、模型閉環監控及繼續優化(feedback & improvement)

本文也是按照這個結構來進行展開總結與思考。

當我們接到業務需求的時候,第一件事情需要了解的,就是需求的整體邏輯。乙個合理的產品設計通常都是與業務痛點相掛鉤的。如果業務提出乙個比較空泛的需求,如:

我想要提高一下營銷成功率,幫我搞個模型吧。

這個時候,我們需要沉住氣,,有的時候資料建模師也需要充當起「心理輔導員」,慢慢引導業務說出實際的業務痛點與需求,好讓我們對症下藥(當然靠譜且有經驗的業務是不會犯這種行為的)。在經過若干分鐘的業務了解,其實業務真正想提高的,是最後的審批通過率,而繼續了解,發現是由於最近業務的增長,電銷人員的人手不足,導致審批的效率低下,而真正有意願購買產品的客戶被營銷的可能性降低,導致最終的整體轉換率過低。

了解過後,其實我們會有乙個初步的模型設計思路,那就是可以設計乙個模型對客戶進行意願度的預評估,根據評分對客戶進行營銷優先順序,結合電銷人員的經驗度(營銷成功率)與營銷**時間等等維度的結合,輸出營銷計畫,提高轉化率。

那麼在了解了業務需求後,接下來就需要針對具體的需求,繼續諮詢業務方一些業務知識點,而不是有了一點眉目就馬上開工,畢竟模型還是做出來還是業務在用,事先溝通好一些細節性的問題也是無礙,而且溝通的過程可以讓你對業務有更加深入的了解,對你後面的特徵開發有很好的幫助。

當我們確定了要開發的模型之後,這個時候需要做的是蒐集資料與處理資料了。顧名思義,這一步也就是收集你可以用的資料去訓練模型,而這是我認為是最為重要的一步。而在開始蒐集資料前,需要了解幾點內容:

1、模型應用節點

2、時效性要求

2、有沒有預算,預算有多少

3、專案緊急程度

模型應用節點

模型的應用節點,決定了你有哪些變數是不可以用的,避免說出現「事後變數」或者是無法上線的變數,這往往是和業務邏輯是掛鉤的,在上一步的business insight過程需要了解清楚。比如:乙個模型是打算應用於初審環節(貸款審批流程),因此我們在初審節點後的變數都是不能用的,比如終審環節、門店審核等等,還有一些貸後的變數都是不能用的。

時效性要求

有些模型可能需要應用在實時的審批過程,要求秒級響應,但也有些模型的時效性要求則沒那麼高,小時級別的,次日級別的都會有,了解清楚,這樣子在設計你的模型或者變數的時候,更加地靈活。

預算多少

預算這個東西其實很難說,但是如果能有,那當然是最好的了,因為有了錢,自然可以從第三方機構接一些外部資料來源,類似於外部徵信之類的,這對於我們的模型效果會有很好的提公升。當然,很多時候,我們都會是用公司已經接入的資料來源來開發特徵的了。

專案緊急程度

這個不僅是對於模型開發專案,其實所有的專案都是需要的,了解清楚專案所能給的最大時長,做好專案計畫,馬上開始工作。蒐集資料,不需要等到所有的特徵都蒐集完才開始開發特徵或者訓練模型,有多少資料,就先搞多少資料。

在了解了以上的內容後,你就可以開始蒐集所有相關的資料了,因為你的資料來源會非常多,所以這裡你必須做好資料的歸檔,不然後期會很亂,而且原始資料需要備份乙份不要動,方便後續覆盤使用。具體可以參考我先前的一篇文章內容《分享8點超級有用的python程式設計建議》:

搞到資料後,需要做的事情大概可以分為:

1、消化所有的資料含義、邏輯;

2、對資料進行各種清洗,變成你熟悉的結構;

3、對資料進行質量控制,找出明顯有問題的資料,探尋原因,實在找不到原因就直接剔除不用;

4、對資料衍生的特徵做好備註,方便後面的回溯。

更加細緻的資料探勘過程這裡就不展開,有很多好的書籍和開源**可以參考。

模型訓練開發,這裡指的是已經做完特徵工程的步驟,重點在於篩選變數、選擇演算法、演算法調參、模型評估等等的操作。這裡也有幾點建議分享給大家:

1、變數篩選,盡量多用自動化工具,對你的效率提公升很大。最好還是通過自己總結多方特徵篩選的方法,寫一套自己的方法,方便自己呼叫;2、如果是使用傳統機器學習演算法,如rf、gbdt、xgb等,建議變數個數不要太多,50個以內差不多了。如果是一些深度學習相關的模型演算法就另當別論。3、對於模型演算法的選擇,如果不知道選啥,可以都試試看看效果最直接。但是作為乙個有經驗的模型開發專家,你還是需要了解演算法的原理,根據實際問題的情況來選擇演算法會更加好,比如類別型變數的佔比、資料維度、樣本目標佔比、資料分布等等。4、演算法調參和模型評估的方法太多太成熟了,可以自己試著總結乙份demo**。

關於模型部署,涉及到的步驟就沒那麼多了,主要分成:

1、模型部署常用的就是pmml模型檔案,所以你需要匯出來給到後台開發小哥

2、而在這之前,一般需要我們寫好介面文件,確定好特徵邏輯與部署節點,給到產品經理

3、自己在對應的平台上寫sql,測試對數等,更多地,這一步考驗的是模型開發者的細心程度,當然,熟悉的老司機會總結出合適自己的一套的變數上線套路,彎道超車

4、模型檔案部署到生產環境後,拿一些實際的單子進行ab test,看下實際輸出是否滿足預期,沒有問題就萬事大吉,不然得細心從變數開發的邏輯開始檢查

至於模型上線後,我們並不是就完全不管了,我們需要時刻監控模型的表現,對於排序模型,主要可以從下面幾個角度去監控:

1、排序性情況,比如評分卡模型,各個分組間的badrate是否仍存在單調性

2、分類佔比,也就是各個類別的佔比情況,如果出現與建模時候差異較大的情況,需要有所提示

3、與模型相關的業務指標波動,有些模型會直接影響通過率或者是轉化率的,通過這些指標也是可以看出異常

除此之外,評分卡模型一般一年左右就需要迭代或更換,需要時刻留意效果作出決策。

以上是對機器學習建模的一些總結與思考,歡迎指正!

機器學習建模老司機的幾點思考與總結

機器學習現在在很多地方都是十分流行,無論現在的你是否從事建模工作,還是你將來想從事相關工作,對於從業者可以從中看出一些同感與意見,對於未來從業者可以了解這個職業到底是做些什麼。話不多說,乙個機器學習模型的開發周期一般可以分為 1 業務需求挖掘 business insight 2 資料蒐集處理 da...

關於知識學習的幾點思考

也許是異想天開。沒有章法 都是囈語。渾噩的思緒能否理出簡單的基本規律?能力的發展路徑 知識 見識 認識 膽識。知識的積累是否有跡可循?知識的學習,為何如此之難,是否有更容易的方法?在學習知識的過程中,都是在什麼地方斷掉的?為什麼有些人可以登頂知識巔峰,有些人缺不可以?知識學習和教育體系之間的關係?知...

機器學習定義 機器學習與資料建模 分析的區別

先來看一則開場白 看完這段話,可以發現這裡涉及了很多基於 經驗 而做出的判斷。換句話說就是 通過對經驗的利用,就能對新的情況做出有效的決策。筆者摘錄了兩則,大家批評接受 機器學習它致力於研究如何通過計算手段,利用 經驗 來改善系統自身的效能。計算機裡 經驗 通常以 資料 形式存在,因此機器學習所研究...