機器學習流程
人工智慧的浪潮正在席捲全球,諸多詞彙時刻縈繞在我們耳邊:人工智慧(Artificial Intelligence)、機器學習(Machine Learning)、深度學習(Deep Learning)。人工智慧是我們想要達成的目標,而機器學習是想要達成目標的手段,希望機器通過學習方式,他跟人一樣聰明。深度學習則是是機器學習的其中一種方法。簡而言之就是:機器學習是一種實現人工智慧的方法,深度學習是一種實現機器學習的技術。
機器學習可以更快且自動的產生模型,以分析更大,更復雜的資料,而且傳輸更加迅速,結果更加精準——甚至是在非常大的規模中。在現實中無人類干涉時,高價值的預測可以產生更好的決定,和更明智的行為。本文主要對傳統機器學習進行簡單的介紹,對機器學習的基本流程進行簡單的梳理。
一、機器學習
機器學習最基本的做法,是使用演算法來解析資料、從中學習,然後對真實世界中的事件做出決策和預測。與傳統的為解決特定任務、硬編碼的軟體程式不同,機器學習是用大量的資料來“訓練”,通過各種演算法從資料中學習如何完成任務。
這裡有三個重要的資訊:
- 機器學習是模擬、延伸和擴充套件人的智慧的一條路徑,所以是人工智慧的一個子集;
- “機器學習”是要基於大量資料的,也就是說它的“智慧”是用大量資料喂出來的;
- 正是因為要處理海量資料,所以大資料技術尤為重要;“機器學習”只是大資料技術上的一個應用。 常用的10大機器學習演算法有:決策樹、隨機森林、邏輯迴歸、SVM、樸素貝葉斯、K最近鄰演算法、K均值演算法、Adaboost演算法、神經網路、馬爾科夫。
二、機器學習相關技術
機器學習可以主要分為:
- 監督學習
- 半監督學習
- 無監督學習
- 強化學習
2.1、監督學習
定義:根據已有的資料集,知道輸入和輸出結果之間的關係。根據這種已知的關係,訓練得到一個最優的模型。 也就是說,在監督學習中訓練資料既有特徵(feature) 又有標籤(label),通過訓練,讓機器可以自己找到特徵和標籤之間的聯絡,在面對只有特徵沒有標籤的資料時,可以判斷出標籤。 通俗一點,可以把機器學習理解為我們教機器如何做事情。
監督學習分為:
- 迴歸問題(Regression)
- 分類問題(classification)
經典的演算法:支援向量機、線性判別、決策樹、樸素貝葉斯
2.1.1、迴歸問題
迴歸問題是針對於連續型變數的。 迴歸通俗一點就是,對已經存在的點(訓練資料)進行分析,擬合出適當的函式模型$y=f(x)$,這裡y就是資料的標籤,而對於一個新的自變數x,通過這個函式模型得到標籤y。
2.1.2、分類問題
迴歸問題Regression和分類問題Classification的差別就是我們要機器輸出的東西的型別是不一樣。在迴歸問題中機器輸出的是一個數值,在分類問題裡面機器輸出的是類別,和迴歸最大的區別在於,分類是針對離散型的,輸出的結果是有限的。
其中分類問題分為兩種:
- 二分類,輸出是或否。例如判斷腫瘤為良性還是惡性
- 多分類,在多個選項中選擇正確的類別。例如輸入一張圖片判讀是貓是狗還是豬 簡單來說分類就是,要通過分析輸入的特徵向量,對於一個新的向量得到其標籤。
2.2、半監督學習
傳統的機器學習技術分為兩類,一類是無監督學習,一類是監督學習。
無監督學習只利用未標記的樣本集,而監督學習則只利用標記的樣本集進行學習。
但在很多實際問題中,只有少量的帶有標記的資料,因為對資料進行標記的代價有時很高,比如在生物學中,對某種蛋白質的結構分析或者功能鑑定,可能會花上生物學家很多年的工作,而大量的未標記的資料卻很容易得到。這就促使能同時利用標記樣本和未標記樣本的半監督學習技術迅速發展起來。簡而言之,半監督學習就是去減少標籤(label) 的用量。
半監督學習是歸納式的,生成的模型可用做更廣泛的樣本
2.3、無監督學習
定義: 我們不知道資料集中資料、特徵之間的關係,而是要根據聚類或一定的模型得到資料之間的關係。 可以這麼說,比起監督學習,無監督學習更像是自學,讓機器學會自己做事情,是沒有標籤(label)的。
無監督學習使我們能夠在幾乎不知道或根本不知道結果應該是什麼樣子的情況下解決問題。我們可以從不需要知道變數影響的資料中得到結構。我們可以根據資料中變數之間的關係對資料進行聚類,從而得到這種結構。在無監督學習中,沒有基於預測結果的反饋。
經典演算法:聚類K-means演算法(K均值演算法),主成分分析
2.4、強化學習
定義: 強化學習是機器學習的一個重要分支,是多學科多領域交叉的一個產物,它的本質是解決 decision making 問題,即自動進行決策,並且可以做連續決策。
它主要包含四個元素:agent,環境狀態,行動,獎勵
強化學習的目標就是獲得最多的累計獎勵。
強化學習和監督式學習的區別:
- 監督式學習就好比在學習的時候有老師在指導老師怎麼是對的怎麼是錯的,但在很多實際問題中,例如:西洋棋、圍棋有幾千萬種博弈方式的情況,不可能有一個老師知道所有可能的結果。然而強化學習會在沒有任何標籤的情況下,通過先嚐試做出一些行為得到一個結果,通過這個結果是對還是錯的反饋,調整之前的行為,就這樣不斷的調整,演算法能夠學習到在什麼樣的情況下選擇什麼樣的行為可以得到最好的結果。
- 兩種學習方式都會學習出輸入到輸出的一個對映,監督式學習出的是之間的關係,可以告訴演算法什麼樣的輸入對應著什麼樣的輸出,強化學習出的是給機器的反饋,即用來判斷這個行為是好是壞。
- 另外強化學習的結果反饋有延時,有時候可能需要走了很多步以後才知道以前的某一步的選擇是好還是壞,而監督學習做了比較壞的選擇會立刻反饋給演算法。而且強化學習面對的輸入總是在變化,每當演算法做出一個行為,它影響下一次決策的輸入,而監督學習的輸入是獨立同分布的。
- 通過強化學習,一個 agent 可以在探索和開發(exploration and exploitation)之間做權衡,並且選擇一個最大的回報。exploration 會嘗試很多不同的事情,看它們是否比以前嘗試過的更好。exploitation 會嘗試過去經驗中最有效的行為。一般的監督學習演算法不考慮這種平衡。 強化學習和非監督式學習的區別:
非監督式不是學習輸入到輸出的對映,而是模式。例如在向用戶推薦新聞文章的任務中,非監督式會找到使用者先前已經閱讀過類似的文章並向他們推薦其一。而強化學習將通過向用戶先推薦少量的新聞,並不斷獲得來自使用者的反饋,最後構建使用者可能會喜歡的文章的“知識圖”。
主要演算法和分類
從強化學習的幾個元素的角度劃分的話,方法主要有下面幾類:
- Policy based, 關注點是找到最優策略。
- Value based, 關注點是找到最優獎勵總和。
- Action based, 關注點是每一步的最優行動。
三、機器學習的基本流程
3.1、基本流程的簡單描述
一個基本的機器學習流程簡單來說主要分為五大步驟:問題轉化、資料的收集與處理、模型的訓練與調整、上線模型、監控
-
問題轉化:將實際問題轉化為機器學習問題
-
資料的採集與處理:採集我們需要的資料,並對資料進行資料清洗等處理工作
-
模型的訓練與調整:選擇合適的模型,使用處理好的資料進行模型訓練
-
上線模型:將訓練好的的模型部署到線上
-
監控:監控模型的效能,得到新的資料,然後重新進行資料收集與處理,對模型進行新的訓練和調整,以應對新的使用者行為變化
3.2、基本流程的複雜描述
- 資料來源:
機器學習的第一個步驟就是收集資料,這一步非常重要,因為收集到的資料的質量和數量將直接決定預測模型是否能夠建好。我們可以將收集的資料去重複、標準化、錯誤修正等等,儲存成資料庫檔案或者csv格式檔案,為下一步資料的載入做準備。
- 分析:
這一步驟主要是資料發現,比如找出每列的最大、最小值、平均值、方差、中位數、三分位數、四分位數、某些特定值(比如零值)所佔比例或者分佈規律等等都要有一個大致的瞭解。瞭解這些最好的辦法就是視覺化,谷歌的開源專案facets可以很方便的實現。另一方面要確定自變數$(x_1...x_n)$和因變數$y$,找出因變數和自變數的相關性,確定相關係數。
- 特徵選擇:
特徵的好壞很大程度上決定了分類器的效果。將上一步驟確定的自變數進行篩選,篩選可以手工選擇或者模型選擇,選擇合適的特徵,然後對變數進行命名以便更好的標記。命名檔案要存下來,在預測階段的時候會用到。
- 向量化:
向量化是對特徵提取結果的再加工,目的是增強特徵的表示能力,防止模型過於複雜和學習困難,比如對連續的特徵值進行離散化,label值對映成列舉值,用數字進行標識。這一階段將產生一個很重要的檔案:label和列舉值對應關係,在預測階段的同樣會用到。
- 拆分資料集:
需要將資料分為兩部分。用於訓練模型的第一部分將是資料集的大部分。第二部分將用於評估我們訓練有素的模型的表現。通常以8:2或者7:3進行資料劃分。不能直接使用訓練資料來進行評估,因為模型只能記住“問題”。
- 訓練:
進行模型訓練之前,要確定合適的演算法,比如線性迴歸、決策樹、隨機森林、邏輯迴歸、梯度提升、SVM等等。選擇演算法的時候最佳方法是測試各種不同的演算法,然後通過交叉驗證選擇最好的一個。但是,如果只是為問題尋找一個“足夠好”的演算法,或者一個起點,也是有一些還不錯的一般準則的,比如如果訓練集很小,那麼高偏差/低方差分類器(如樸素貝葉斯分類器)要優於低偏差/高方差分類器(如k近鄰分類器),因為後者容易過擬合。然而,隨著訓練集的增大,低偏差/高方差分類器將開始勝出(它們具有較低的漸近誤差),因為高偏差分類器不足以提供準確的模型。
- 評估:
訓練完成之後,通過拆分出來的訓練的資料來對模型進行評估,通過真實資料和預測資料進行對比,來判定模型的好壞。不同任務模型下的評價指標如下:
完成評估後,如果想進一步改善訓練,我們可以通過調整模型的引數來實現,然後重複訓練和評估的過程。
- 檔案整理:
模型訓練完之後,要整理出四類檔案,確保模型能夠正確執行,四類檔案分別為:Model檔案、Lable編碼檔案、元資料檔案(演算法,引數和結果)、變數檔案(自變數名稱列表、因變數名稱列表)。
- 介面封裝:
通過封裝封裝服務介面,實現對模型的呼叫,以便返回預測結果。
- 上線:
將訓練好的的模型部署到線上。
參考連結:
-
https://blog.csdn.net/qq_27567859/article/details/79666969
-
https://zhuanlan.zhihu.com/p/117238854
-
https://www.jianshu.com/p/afa0facbe625