行業熱詞解釋
機器學習基本術語
假如我們有一組天氣數據,是來自全世界不同國家和地區的每日天氣,內容包括最高溫度、最低溫度、平均溼度、風速之類的相關數據,例如數據的一部分是這樣的:
城市 |
最高溫度 |
最低溫度 |
相對溼度 |
某時刻風速 |
A市 |
36℃ |
28℃ |
58% |
16.7km/h |
B市 |
28℃ |
17℃ |
86% |
/ |
C市 |
34℃ |
29℃ |
39% |
20.4km/h |
在這組數據中,我們將稱A市、B市、C市等市以及其情況的總和稱爲數據集(data set)。表格中的每一行,也就是某城市和它的情況被稱爲一個樣例(sample/instance)。表格中的每一列(不包括城市),例如最高溫度、最低溫度,被稱爲特徵(feature/attribute),而每一列中的具體數值,例如36℃ 、28℃,被稱爲屬性值(attribute value)。數據中也可能會有缺失數據(missing data),例如B市的某時刻風速,我們會將它視作缺失數據。
如果我們想預測城市的天氣,例如是晴朗還是陰雨天,這些數據是不夠的,除了特徵以外,我們還需要每個城市的具體天氣情況,也就是通常語境下的結果。在機器學習中,它會被稱爲標籤(label),用於標記數據。值得注意的是,數據集中不一定包含標籤信息,而這種區別會引起方法上的差別。我們可以給上述示例加上一組標籤:
城市 |
天氣 |
A市 |
晴朗 |
B市 |
陰雨 |
C市 |
晴朗 |
視具體情況,用來進行機器學習的一個數據集往往會被分爲兩個數據集——訓練數據(training data)和測試數據(testing data)。 顧名思義,訓練數據在機器學習的過程中使用,目的是找出一套機器學習的方法;而測試數據用於判斷找出的方法是否足夠有效。如果在訓練的過程中需要確定方法的準確度,有時會將訓練數據分成訓練集(training set)和驗證集(validation set)——驗證集合測試數據不同的地方在於驗證集在訓練過程中使用,而測試數據事實上是在模型建立後才被使用的。
機器學習的整體流程
機器學習的過程就是一個數據流轉、分析以及得到結果的過程,在使用的過程中很多
人花了很多時間在算法的選擇或者調優上,但其實機器學習的每一個步驟都是至關重要的,其中特徵工程部分尤其重要,甚至直接決定了機器學習項目的成敗!
不會做特徵工程的 AI 研究員不是好數據科學家!
http://www.sohu.com/a/217650404_114877
http://www.sohu.com/a/218158264_114877
(1)需求分析。場景解析就是先把整個業務邏輯想清楚,把自己的業務場景進行一個
抽象,例如我們做一個廣告點擊預測,其實是判斷一個用戶看到廣告是點擊還是不點擊,這就可以抽象成二分類問題。然後我們根據是不是監督學習以及二分類場景,就可以進行算法的選擇。總的來說,場景抽象就是把業務邏輯和算法進行匹配。
(2)數據預處理。數據預處理主要進行數據的清洗工作,針對數據矩陣中的空值和亂
碼進行處理,同時也可以對整體數據進行拆分和採樣等操作,也可以對單字段或者多字段進行歸一化或者標準化的處理。數據預處理階段的主要目標就是減少量綱和噪音數據對於訓練數據集的影響。
(3)特徵工程。特徵工程是機器學習中最重要的一個步驟,這句話一點都沒有錯。
特別是目前隨着開源算法庫的普及以及算法的不斷成熟,算法質量並不一定是決定結果的最關鍵因素,特徵工程的效果從某種意義上決定了最終模型的優劣。通過一個例子說明一下特徵工程的作用,2014 年某互聯網巨頭舉辦了一場大數據競賽,參賽隊伍
在 1000 個以上,到最後,這裏面幾乎所有的參賽隊伍都用了相同的一套算法,因爲算法的優劣是比較容易評判的,不同算法的特性是不一樣的,而且可供選擇的算法種類是有限的。但是特徵的選取和衍生卻有極大的不定性,100 個人眼中可能有 100 種不同的特徵,所以這種大賽到了後期,往往大家比拼的就是特徵選取的好壞。在算法相對固定的情況下,可以說好特徵決定了好結果。
(4)模型訓練。“邏輯迴歸二分類”表示的是算法訓練過程,訓練數據經過了數據預處理和特徵工程之後進入算法訓練模塊,並且生成模型。在“預測”中,讀取模型和預測集數據進行計算,生成預測結果。
(5)模型評估。機器學習算法的計算結果一般是一個模型,模型的質量直接影響接下來的數據業務。對於模型的成熟度的評估,其實就是對於整套機器學習流程的評估。
(6)離線/在線服務。在實際的業務運用過程中,機器學習通常需要配合調度系統來使用。具體的案例場景如下:每天用戶將當日的增量數據流入數據庫表裏,通過調度系統啓動機器學習的離線訓練服務,生成最新的離線模型,然後通過在線預測服務(通常通過Restful API,發送數據到服務器的算法模型進行計算,然後返回結果)進行實時的預測。如圖:
機器學習算法分類
機器學習算法包含了聚類、迴歸、分類和文本分析等幾十種場景的算法,常用的算法種類爲 30 種左右,而且還有很多的變形,我們將機器學習分爲 4 種,分別是監督學習、無監督學習、半監督學習和增強學習(強化學習)。
(1)監督學習。監督學習(Supervised Learning),是指每個進入算法的訓練數據樣本都有對應的期望值也就是目標值,進行機器學習的過程實際上就是特徵值和目標隊列映射的過程。例如,我們已知一隻股票的歷史走勢以及它的一些公司盈利、公司人數等信息,想要預測這隻股票未來的走勢。那麼在訓練算法模型的過程中,就是希望通過計算得到一個公式,可以反映公司盈利、公司人數這些信息對於股票走勢的影響。通過過往的一些數據的特徵以及最終結果來進行訓練的方式就是監督學習法。監督學習算法的訓練數據源需要由特徵值以及目標隊列兩部分組成。
如圖所示,ifhealth 是目標隊列,age、sex 和cp 爲特徵隊列,這就是一個典型的監督學習的訓練數據集。因爲監督學習依賴於每個樣本的打標,可以得到每個特徵序列映射到的確切的目標值是什麼,所以常用於迴歸以及分類場景。
監督學習的一個問題就是獲得目標值的成本比較高。例如,我們想預測一個電影的好壞,那麼在生成訓練集的時候要依賴於對大量電影的人工標註,這樣的人力代價使得監督學習在一定程度上是一種成本比較高的學習方法。如何獲得大量的標記數據一直是監督學習面臨的一道難題。
(2)無監督學習。無監督學習(Unsupervised Learning),學習上面講的監督學習的概念之後,其實無監督學習就比較好理解了。無監督學習就是指訓練樣本不依賴於打標數據的機器學習算法(自己學習)。既然是沒有目標隊列,也就缺少了特徵環境下的最終結果,那麼這樣的數據可能對一些迴歸和分類的場景就不適合了。無監督學習主要是用來解決一些聚類場景的問題,因爲當我們的訓練數據缺失了目標值之後,能做的事情就只剩下比對不同樣本間的距離關係。
相較於監督學習,無監督學習的一大好處就是不依賴於打標數據,在很多特定條件下,
特別是打標數據需要依靠大量人工來獲得的情況下可以嘗試使用無監督學習或者半監督學習來解決問題。
(3)半監督學習。半監督學習(Semi-supervised Learning),是最近幾年逐漸開始流行的一種機器學習種類。上文中也提到,在一些場景下獲得打標數據是很耗費資源的,但是無監督學習對於解決分類和迴歸這樣場景的問題又有一些難度。所以人們開始嘗試通過對樣本的部分打標來進行機器學習算法的使用,這種部分打標樣本的訓練數據的算法應用,就是半監督學習。目前很多半監督學習算法都是監督學習算法的變形。其實目前半監督算法已經有很多的應用了,大家感興趣的話可以課下去深入瞭解。
(4)強化學習。強化學習(Reinforcement Learning),是一種比較複雜的機器學習種類,強調的是系統與外界不斷地交互,獲得外界的反饋,然後決定自身的行爲。強化學習目前是人工智能領域的一個熱點算法種類,典型的案例包括無人汽車駕駛和阿爾法狗下圍棋。分詞算法隱馬爾科夫就是一種強化學習的思想。
上面就是關於監督學習、無監督學習、半監督學習和強化學習的一些介紹。監督學習
主要解決的是分類和迴歸的場景,無監督學習主要解決聚類場景,半監督學習解決的是一些打標數據比較難獲得的分類場景,強化學習主要是針對流程中不斷需要推理的場景
- SparkMLlib中支持的機器學習算法
https://ifeve.com/spark-mllib/
- 分類算法
- 基本分類算法
- 決策樹分類:DecisionTreeClassifier
- 支持向量機:LinearSVC
- 樸素貝葉斯:NaiveBayes
- 邏輯迴歸:LogisticRegression
- 其他算法:MultilayerPerceptronClassifier、OneVsRest
- 集成分類算法:基於決策樹之上的算法
- 梯度提升樹:GBTClassifier
- 隨機森林:RandomForestClassifier
- 迴歸算法
- 基本回歸算法
- 線性迴歸:LinearRegression
- 其他算法:IsotonicRegression、AFTSurvivalRegression、AFTRegression
- 決策樹迴歸:DecisionTreeRegressor
- 保存迴歸:
- 集成迴歸算法
- 梯度提升數:GBTRegressor
- 隨機森林:RandomForestRegressor
- 聚類算法
- 聚類算法:KMeans、BisectingKMeans、GaussianMixture、LDA
- 降維算法:PCA
- 推薦算法
- 協同過濾算法:ALS
- 關聯規則:AssociationRules、FPGrowth
機器學習結果評估問題
二分類問題
衡量結果精度的有一些相關術語,首當其衝的是準確率(Accuracy)、精確率(Precision)和召回率(Recall)。這三個詞彙應用於二分類問題:將數據分爲正例(Positive Class)和反例(Negative Class)
一張形象的維基百科圖:
也就是說,準確率是預測和標籤一致的樣本在所有樣本中所佔的比例;精確率是你預測爲正類的數據中,有多少確實是正類;召回率是所有正類的數據中,你預測爲正類的數據有多少。這三個數據往往用來衡量一個二分類算法的優劣。
迴歸問題
迴歸問題往往會通過計算誤差(Error)來確定模型的精確性。誤差由於訓練集和驗證集的不同,會被分爲訓練誤差(Training Error)和驗證誤差(Validation Error)。但值得注意的是,模型並不是誤差越小就一定越好,因爲如果僅僅基於誤差,我們可能會得到一個過擬合(Overfitting)的模型;但是如果不考慮誤差,我們可能會得到一個欠擬合(Underfitting)的模型,用圖像來說的話大致可以這樣理解:
如果模型十分簡單,往往會欠擬合,對於訓練數據和測試數據的誤差都會很大;但如果模型太過於複雜,往往會過擬合,那麼訓練數據的誤差可能相當小,但是測試數據的誤差會增大。
欠擬合(underfitting),也稱爲高偏差(high bias)
過擬合(overfitting),也稱爲高方差(high variance)
好的模型應當平衡於這兩者之間:
聚類問題
聚類問題的標準一般基於距離:簇內距離(Intra-cluster Distance)和簇間距離(Inter-cluster Distance)。根據常識而言,簇內距離是越小越好,也就是簇內的元素越相似越好;而簇間距離越大越好,也就是說簇間(不同簇)元素越不相同越好。
機器學習在大數據項目中的位置
擴展補充:
大數據平臺的數據源集中來源於三個方面:
60%來源於關係數據庫的同步遷移: 大多數公司都是採用MySQL和Oracle,就拿電商平臺來說,這些數據大部分是用戶基本信息,訂單交易數據以及商品數據。
30%來源於平臺埋點數據的採集:渠道有PC、Wap、安卓和IOS,通過客戶端產生請求,採集用戶行爲數據,經過日誌服務器服務器處理,再進Kafka接受數據並解碼,最後到Spark Streaming劃分爲離線和實時清洗。
10%來源於第三方數據:做電商還可能會整合第三方數據源,大體有競品公司商品數據(爬蟲),用戶徵信信息(支付寶、京東白條等業務需要)等等
機器學習的基礎知識暫且回顧到這裏,感興趣的同學課下再多去複習回顧
接下來開始用戶畫像系統算法挖掘標籤部分的開發!