本篇内容主要是面向機器學習初學者,介紹常見的機器學習算法,當然,歡迎同行交流。

哲學要回答的基本問題是從哪裡來、我是誰、到哪裡去,尋找答案的過程或許可以借鑒機器學習的套路:組織資料->挖掘知識->預測未來。組織資料即為設計特征,生成滿足特定格式要求的樣本,挖掘知識即模組化,而預測未來就是對模型的應用。
特征設計依賴于對業務場景的了解,可分為連續特征、離散特征群組合高階特征。本篇重點是機器學習算法的介紹,可以分為監督學習和無監督學習兩大類。
無監督學習算法很多,最近幾年業界比較關注主題模型,lsa->plsa->lda為主題模型三個發展階段的典型算法,它們主要是模組化假設條件上存在差異。lsa假設文檔隻有一個主題,plsa假設各個主題的機率分布不變(theta都是固定的),lda假設每個文檔和詞的主題機率是可變的。
lda算法本質可以借助上帝擲骰子幫助了解,詳細内容可參加rickjin寫的《lda資料八卦》文章,淺顯易懂,順便也科普了很多數學知識,非常推薦。
監督學習可分為分類和回歸,感覺器是最簡單的線性分類器,現在實際應用比較少,但它是神經網絡、深度學習的基本單元。
線性函數拟合資料并基于門檻值分類時,很容易受噪聲樣本的幹擾,影響分類的準确性。邏輯回歸(logistic regression)利用sigmoid函數将模型輸出限制在0到1之間,能夠有效弱化噪聲資料的負面影響,被廣泛應用于網際網路廣告點選率預估。
邏輯回歸模型參數可以通過最大似然求解,首先定義目标函數l(theta),然後log處理将目标函數的乘法邏輯轉化為求和邏輯(最大化似然機率 -> 最小化損失函數),最後采用梯度下降求解。
相比于線性分類去,決策樹等非線性分類器具有更強的分類能力,id3和c4.5是典型的決策樹算法,模組化流程基本相似,兩者主要在增益函數(目标函數)的定義不同。
線性回歸和線性分類在表達形式上是類似的,本質差別是分類的目标函數是離散值,而回歸的目标函數是連續值。目标函數的不同導緻回歸通常基于最小二乘定義目标函數,當然,在觀測誤差滿足高斯分布的假設情況下,最小二乘和最大似然可以等價。
當梯度下降求解模型參數時,可以采用batch模式或者stochastic模式,通常而言,batch模式準确性更高,stochastic模式複雜度更低。
上文已經提到,感覺器雖然是最簡單的線性分類器,但是可以視為深度學習的基本單元,模型參數可以由自動編碼(auto encoder)等方法求解。
深度學習的優勢之一可以了解為特征抽象,從底層特征學習獲得高階特征,描述更為複雜的資訊結構。例如,從像素層特征學習抽象出描述紋理結構的邊緣輪廓特征,更進一步學習獲得表征物體局部的更高階特征。
俗話說三個臭皮匠賽過諸葛亮,無論是線性分類還是深度學習,都是單個模型算法單打獨鬥,有沒有一種集百家之長的方法,将模型處理資料的精度更進一步提升呢?當然,model ensembel就是解決這個問題。bagging為方法之一,對于給定資料處理任務,采用不同模型/參數/特征訓練多組模型參數,最後采用投票或者權重平均的方式輸出最終結果。
boosting為model ensemble的另外一種方法,其思想為模型每次疊代時通過調整錯誤樣本的損失權重提升對資料樣本整體的處理精度,典型算法包括adaboost、gbdt等。
不同的資料任務場景,可以選擇不同的model ensemble方法,對于深度學習,可以對隐層節點采用dropout的方法實作類似的效果。
介紹了這麼多機器學習基礎算法,說一說評價模型優劣的基本準則。欠拟合和過拟合是經常出現的兩種情況,簡單的判定方法是比較訓練誤差和測試誤差的關系,當欠拟合時,可以設計更多特征來提升模型訓練精度,當過拟合時,可以優化特征量降低模型複雜度來提升模型測試精度。
特征量是模型複雜度的直覺反映,模型訓練之前設定輸入的特征量是一種方法,另外一種比較常用的方法是在模型訓練過程中,将特征參數的正則限制項引入目标函數/損失函數,基于訓練過程篩選優質特征。
模型調優是一個細緻活,最終還是需要能夠對實際場景給出可靠的預測結果,解決實際問題。期待學以緻用!
<a href="https://mp.weixin.qq.com/s/fe612rbyl9tokhypzmasma">原文連結</a>