AI 模型構建的過程 模型構建主要包括 5 個階段,分別為模型設計、特征工程、模型訓練、模型驗證、模型融合。
模型設計 ??????
??在模型設計環節,產品經理要考慮的問題就是,在當前業務下,這個模型該不該做,我們有沒有能力做這個模型,目標變量應該怎么設置、數據源應該有哪些、數據樣本如何獲取,是隨機抽取還是分層抽樣。 ????????
在模型設計階段最重要的就是定義模型目標變量,以及抽取數據樣本。 ???????
?不同的目標變量,決定了這個模型應用的場景,以及能達到的業務預期。 ?????
???接著,我們再來說說數據樣本的抽取。模型是根據我們選擇的樣本來進行訓練的,所以樣本的選取決定了模型的最終效果。換句話說,樣本是用來做模型的基礎。在選取樣本的時候,你需要根據模型的目標、業務的實際場景來選擇合適的樣本。
特征工程 ?????
???我們可以把整個模型的構建理解為:從樣本數據中提取可以很好描述數據的特征,再利用它們建立出對未知數據有優秀預測能力的模型。 ???????
?在模型的構建過程中,特征工程是一個非常重要的部分。特征挑選得好,不僅可以直接提高模型的性能,還會降低模型的實現復雜度。
無論特征和數據過多或過少,都會影響模型的擬合效果,出現過擬合或欠擬合的情況。
當選擇了優質的特征之后,即使你的模型參數不是最優的,也能得到不錯的模型性能,你也就不需要花費大量時間去尋找最優參數了,從而降低了模型實現的復雜度。
數據和特征決定了機器學習的上限,而模型和算法只是逼近這個上限而已。 ???
?????算法工程師們花費在特征工程建立上面的時間,基本上占整個模型構建的 60%。 ??
??????那什么是特征工程?對一個模型來說,因為它的輸入一定是數量化的信息,也就是用向量、矩陣或者張量的形式表示的信息。所以,當我們想要利用一些字符串或者其他類型的數據時,我們也一定要把它們先轉換成數量化的信息。像這種把物體表示成一個向量或矩陣的過程,就叫做特征工程(Feature Engineering)。 ???????
?那什么是建立特征工程呢?比較常見的,我們可以通過一個人的年齡、學歷、工資、信用卡個數等等一系列特征,來表示這個人的信用狀況,這就是建立了這個人信用狀況的特征工程。同時,我們可以通過這些特征來判斷這個人的信用好壞。 ?????
更具體點來說,建立特征工程的流程是,先做數據清洗,再做特征提取,之后是特征篩選,最后是生成訓練 / 測試集。
1. 數據清洗
????????在建立特征工程的開始階段,算法工程師為了更好地理解數據,通常會通過數據可視化(Data Visualization)的方式直觀地查看到數據的特性,比如數據的分布是否滿足線性的?數據中是否包含異常值?特征是否符合高斯分布等等。然后,才會對數據進行處理,也就是數據清洗,來解決這些數據可能存在的數據缺失、有異常值、數據不均衡、量綱不一致等問題。
數據缺失
在數據清洗階段是最常見的問題。在遇到數據缺失問題時,算法工程師可以通過刪除缺失值或者補充缺失值的手段來解決它。
至于數值異常的問題,可以選擇的方法就是對數據修正或者直接丟棄,當然如果你的目標就是發現異常情況,那就需要保留異常值并且標注。
對于數據不均衡的問題,因為數據偏差可能導致后面訓練的模型過擬合或者欠擬合,所以處理數據偏差問題也是數據清洗階段需要考慮的。
針對量綱不一致的問題,也就是同一種數據的單位不同,比如金額這個數據,有的是以萬元為單位,有的是以元為單位,我們一般是通過歸一化讓它們的數據單位統一。
2. 特征提取? ? ? ??
????????一般提取出的特征會有 4類常見的形式,分別是數值型特征數據、標簽或者描述類數據、非結構化數據、網絡關系型數據。 數值型特征數據
數據一般包含大量的數值特征。
這類特征可以直接從數倉中獲取,操作起來非常簡單
一系列聚合函數也可以去描述特征,比如總次數、平均次數,當前次數比上過去的平均次數等等。
標簽或描述類數據
這類數據的特點是包含的類別相關性比較低,并且不具備大小關系。
這類特征的提取方法也非常簡單,一般就是將這三個類別轉化為特征,讓每個特征值用0、1 來表示,如有房 [0, 1]、有車 [0, 1] 等等。
非結構化數據(處理文本特征)
非結構化數據一般存在于 UGC(User Generated Content,用戶生成內容)內容數據中。比如我們的用戶流失預測模型用到了用戶評論內容,而用戶評論都是屬于非結構化的文本類數據。
提取非結構化特征的一般做法就是,對文本數據做清洗和挖掘,挖掘出在一定程度上反映用戶屬性的特征。
網絡關系型數據
前三類數據描述的都是個人,而網絡關系型數據描述的是這個人和周圍人的關系。
提取這類特征其實就是,根據復雜網絡的關系去挖掘任意兩人關系之間的強弱,像是家庭關系、同學關系、好友關系等等。
3. 特征選擇
????特征選擇簡單來說,就是排除掉不重要的特征,留下重要特征。
算法工程師會對希望入模的特征設置對應的覆蓋度、IV 等指標,這是特征選擇的第一步。
然后,再依據這些指標和按照經驗定下來的閾值對特征進行篩選。
最后,還要看特征的穩定性,將不穩定的特征去掉。
4. 訓練 / 測試集
這一步也是模型正式開始訓練前需要做的,簡單來說,就是算法同學需要把數據分成訓練集和測試集,他們會使用訓練集來進行模型訓練,會使用測試集驗證模型效果。
模型訓練
模型訓練是通過不斷訓練、驗證和調優,讓模型達到最優的一個過程。
決策邊界是判斷一個算法是線性還是非線性最重要的標準。
上圖就是三種算法的決策邊界。決策邊界的形式無非就是直線和曲線兩種,并且這些曲線的復雜度(曲線的平滑程度)和算法訓練出來的模型能力息息相關。一般來說決策邊界曲線越陡峭,模型在訓練集上的準確率越高,但陡峭的決策邊界可能會讓模型對未知數據的預測結果不穩定。
模型訓練的目標就是找到擬合能力與泛化能力的平衡點。擬合能力代表模型在已知數據上表現得好壞,泛化能力代表模型在未知數據上表現得好壞。它們之間的平衡點,就是我們通過不斷地訓練和驗證找到的模型參數的最優解,因此,這個最優解繪制出來的決策邊界就具有最好的擬合和泛化能力。這是模型訓練中“最優”的意思,也是模型訓練的核心目標。
一般情況下,算法工程師會通過交叉驗證(Cross Validation)的方式,找到模型參數的最優解。
模型驗證
????????模型驗證主要是對待驗證數據上的表現效果進行驗證,一般是通過模型的性能指標和穩定性指標來評估。 模型性能 ????????可以理解為模型預測的效果,你可以簡單理解為“預測結果準不準”,它的評估方式可以分為兩大類:分類模型評估和回歸模型評估?。
分類模型評估? ? ???? ??????
??分類模型解決的是將一個人或者物體進行分類,例如在風控場景下,區分用戶是不是“好人”,或者在圖像識別場景下,識別某張圖片是不是包含人臉。對于分類模型的性能評估,我們會用到包括召回率、F1、KS、AUC?這些評估指標。
回歸模型評估
????????回歸模型解決的是預測連續值的問題,如預測房產或者股票的價格,所以我們會用到方差和 MSE?這些指標對回歸模型評估。? ?????? ????????對于產品經理來說,我們除了要知道可以對模型性能進行評估的指標都有什么,還要知道這些指標值到底在什么范圍是合理的。雖然,不同業務的合理值范圍不一樣,我們要根據自己的業務場景來確定指標預期,但我們至少要知道什么情況是不合理的。 模型穩定性 ????????我們可以使用 PSI 指標來判斷模型的穩定性,如果一個模型的 PSI > 0.2,那它的穩定性就太差了,這就說明算法同學的工作交付不達標。 ? ?
模型融合 ????
????同時訓練多個模型,再通過模型集成的方式把這些模型合并在一起,從而提升模型的準確率。簡單來說,就是用多個模型的組合來改善整體的表現。????????
模型部署? ??????
一般情況下,因為算法團隊和工程團隊是分開的兩個組織架構,所以算法模型基本也是部署成獨立的服務,然后暴露一個 HTTP API 給工程團隊進行調用,這樣可以解耦相互之間的工作依賴,簡單的機器學習模型一般通過 Flask 來實現模型的部署,深度學習模型一般會選 TensorFlow Serving?來實現模型部署。
編輯:黃飛
?
評論
查看更多