解決機器學習問題的一般流程
本期將針對機器學習的新朋友,為大家講解解決機器學習問題的一般思路:
很多部落格、教程中都對機器學習、深度學習的具體方法有很詳細的講解,但卻很少有人對機器學習問題的流程進行總結,而瞭解解決機器學習問題的一般流程對於新手而言還是非常必要的,所以本文是非常適合機器學習入門者的一篇文章,它會讓你對機器學習的整個流程有很好的理解。
當我們拿到一個機器學習問題時,通常處理的流程分為以下幾步,如圖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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- IT職場:用TRIZ解決實際問題的一般流程是什麼?
- 解決機器學習問題有通法機器學習
- 帶您瞭解TRIZ理論解決問題的流程
- IE7.0 訪問ORACLE EBS 出現問題一般的解決方法Oracle
- 關於資料庫連線問題的一般解決方法資料庫
- 如何解決機器學習樹整合模型的解釋性問題機器學習模型
- 解決「問題」,不要解決問題
- 機器學習 | 八大步驟解決90%的NLP問題機器學習
- 機器學習無法解決自然語言理解問題 - thegradient機器學習
- 五大CRM系統流程解決企業問題
- 解決問題
- 基本操作能解決的問題,不必勞煩機器學習機器學習
- 流程工業ERP面臨的問題與解決方案初探(轉)
- 發現問題,解決問題
- 【問題解決】單機搭建dataguard的問題
- Google研究主管:非技術專家如何利用機器學習解決問題Go機器學習
- 黑蘋果的問題解決蘋果
- 遇到問題的解決方法
- display:flex解決的問題Flex
- 解決bigdecime的問題
- oracle 鎖問題的解決Oracle
- vpd碰到的問題解決
- 驢解決不了的問題
- 解決github訪問慢的問題Github
- 解決 github 訪問不了的問題Github
- yum問題解決
- sqlitedabaseislocked問題解決SQLite
- dump 解決問題
- Xcode匯出App一般問題及其解決方法(開發者協議變更及Bundle Id過期問題)XCodeAPP協議
- 解決Redmine建立&更新問題時很慢的問題
- 解決問題的方法和途徑-問題管理
- 提升解決問題能力的思考
- JAR衝突問題的解決JAR
- 01揹包問題的解決
- 解決localdb中文智慧的問題
- 今天解決的兩個問題
- **PHPNotice:Undefinedindex:…問題的解決方法PHPUndefinedIndex
- 【轉】css解決相容的問題CSS