解決機器學習問題的一般流程

磐創AI發表於2018-10-11

本期將針對機器學習的新朋友,為大家講解解決機器學習問題的一般思路:

很多部落格、教程中都對機器學習、深度學習的具體方法有很詳細的講解,但卻很少有人對機器學習問題的流程進行總結,而瞭解解決機器學習問題的一般流程對於新手而言還是非常必要的,所以本文是非常適合機器學習入門者的一篇文章,它會讓你對機器學習的整個流程有很好的理解。

當我們拿到一個機器學習問題時,通常處理的流程分為以下幾步,如圖1所示:

解決機器學習問題的一般流程

圖1 機器學習的一般流程

  • 資料收集

業界有一句非常著名的話:“資料決定了機器學習的上界,而模型和演算法只是逼近這個上界。”由此可見,資料對於整個機器學習專案至關重要。通常,我們拿到一個具體的領域問題後,可以使用網上一些具有代表性的、大眾經常會用到的公開資料集。相較於自己整理的資料集,顯然大眾的資料集更具有代表性,資料處理的結果也更容易得到大家的認可。此外,大眾的資料集在資料過擬合、資料偏差、數值缺失等問題上也會處理的更好。但如果在網上找不到現成的資料,那我們只好收集原始資料,再去一步步進行加工、整理,這將是一個漫長的過程,需要我們足夠細心。

  • 資料預處理與特徵工程

即使我們能夠拿到大眾認可度比較高的代表性資料集,該資料集也會或多或少存在資料缺失、分佈不均衡、存在異常資料、混有無關緊要的資料等諸多資料不規範的問題。這就需要我們對收集到的資料進行進一步的處理、包括資料的清洗、資料的轉換、資料標準化、缺失值的處理、特徵的提取、資料的降維等方面。我們把對資料的這一系列的工程化活動,叫做“特徵工程”。我們通常使用sklearn庫來處理資料、提取特徵,sklearn是機器學習中最常見的一個第三方模組,裡邊封裝了大量特徵處理的方法,詳細方法請參閱sklearn官方手冊:http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing。

  • 模型的選擇與訓練

當我們處理好資料之後,就可以選擇合適的機器學習模型進行資料的訓練了。常見的機器學習模型我們在本章第二小節已經給出,每種模型詳細的介紹和用法,同樣可以參閱sklearn官方手冊:http://scikit-learn.org。可以看到可供選擇的機器學習模型有很多,每個模型都有自己的適用場景,那麼如何選擇合適的模型呢?

首先我們要對處理好的資料進行分析,判斷訓練資料有沒有類標,若是有類標則應該考慮監督學習的模型,否則可以劃分為非監督學習問題。其次分析問題的型別是屬於分類問題還是迴歸問題,當我們確定好問題的型別之後再去選擇具體的模型。在模型的實際選擇時,通常會考慮嘗試不同的模型對資料進行訓練,然後比較輸出的結果,選擇最佳的那個。此外,我們還會考慮到資料集的大小。若是資料集樣本較少,訓練的時間較短,通常考慮樸素貝葉斯等一些輕量級的演算法,否則的話就要考慮SVM等一些重量級演算法。

  • 模型的評估與優化

之前我們大概介紹了一些模型評估的指標和方法。例如:我們可以選擇查準率、查全率、AUC指標表現更好的模型;還可以通過的交叉驗證法用驗證集來評估模型效能的好壞;當然,也可以針對一種模型採用多種不同的方法,每種方法給予不同的權重值,來對該模型進行綜合“評分”。在模型評估的過程中,我們可以判斷模型的“過擬合”和“欠擬合”。若是存在資料過度擬合的現象,說明我們可能在訓練過程中把噪聲也當作了資料的一般特徵,可以通過增大訓練集的比例或是正則化的方法來解決過擬合的問題;若是存在資料擬合不到位的情況,說明我們資料訓練的不到位,未能提取出資料的一般特徵,要通過增加多項式維度、減少正則化引數等方法來解決欠擬合問題。最後,為了使模型的訓練效果更優,我們還要對所選的模型進行調參,這就需要我們對模型的實現原理有更深的理解。

此外,在實際專案中,我們還會對機器學習的模型進行模型的融合,根據模型的重要程度對每個模型設定不同的權重等,以調高模型的準確率。


解決機器學習問題的一般流程


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555081/viewspace-2216042/,如需轉載,請註明出處,否則將追究法律責任。

相關文章