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

2021-08-18 03:55:27 字數 1612 閱讀 4575

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

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

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

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

當我們處理好資料之後,就可以選擇合適的機器學習模型進行資料的訓練了。常見的機器學習模型我們在本章第二小節已經給出,每種模型詳細的介紹和用法,同樣可以參閱sklearn官方手冊:

。可以看到可供選擇的機器學習模型有很多,每個模型都有自己的適用場景,那麼如何選擇合適的模型呢?

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

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

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

機器學習專案的一般流程

將實際問題抽象為機器學習能處理的數學問題,理解實際業務場景問題是機器學習的第一步。機器學習的特徵工程和模型訓練通常都是一件非常耗時的過程,胡亂嘗試時間成本是非常高的。深入理解要處理的問題,能避免走很多彎路。理解問題,包括明確可以獲得什麼樣的資料,機器學習的目標是乙個分類 回歸還是聚類。如果都不是的話...

機器學習實踐一般流程(監督學習)

觀察資料集,正負樣本是否均衡 看正負樣本資料量是否差別過大 不均衡 under sample 隨機取樣 或者over sample 利用imblearn中的smote演算法 觀察缺失值,進行補全,要是標籤缺失,直接drop 資料歸一化處理 觀察可以合併的資料集,將多個特徵變為乙個 例如特徵裡有公分和...

安裝numpy 機器學習的一般流程與NumPy安裝

美麗生靈 生日快樂 人工智慧現在越來越火熱,逐漸走進人們的視野中,利用人工智慧由自動駕駛 語音識別 影象處理等,這些火熱的發展也離不開硬體的發展,也離不開機器學習的計算機演算法 讓機器模擬人 思考 學習 實現演算法最主要的是用到python語言,就要用到numpy pandas以及matplotli...