【機器學習PAI實戰】—— 玩轉人工智能之你最喜歡哪個男生?
摘要: 分類問題是生活中最常遇到的問題之一。普通人在做出選擇之前,可能會猶豫不決,但對機器而言,則是唯一必選的問題。我們可以通過算法生成模型去幫助我們快速的做出選擇,而且保證誤差最小。充足的樣本,合適的算法可以透過表象的類別,進而挖掘其內在的聯系、區別,找出最佳的的屬性來區分每個樣本的類別。
模型訓練與在線預測服務、推薦算法四部曲、機器學習PAI實戰、更多精彩,盡在開發者分會場
【機器學習PAI實戰】—— 玩轉人工智能之綜述
【機器學習PAI實戰】—— 玩轉人工智能之商品價格預測
【機器學習PAI實戰】—— 玩轉人工智能之美食推薦
【機器學習PAI實戰】—— 玩轉人工智能之利用GAN自動生成二次元頭像
前言
分類問題是生活中最常遇到的問題之一。普通人在做出選擇之前,可能會猶豫不決,但對機器而言,則是唯一必選的問題。我們可以通過算法生成模型去幫助我們快速的做出選擇,而且保證誤差最小。充足的樣本,合適的算法可以透過表象的類別,進而挖掘其內在的聯系、區別,找出最佳的的屬性來區分每個樣本的類別。所以說學習和應用機器學習的算法,要求我們必須非常了解數據實例,每個樣本數據有多少個特征,哪些特征是敏感的,特征分布如何。只有充分了解數據,才能選擇最合適的算法。
場景描述
單身王女士經常逛某相親網站,前前後後瀏覽了1000個男生,並給他們打標了,不喜歡、一般喜歡、很喜歡三個類別。該相親網站的工程師,決定開發一個算法推薦模型,給王女士依次推薦很喜歡,一般喜歡的男生。並可以將這個算法模型應用到網站,吸引更多的單身青年註冊使用,並可以找到自己喜歡的男/女朋友。
數據分析
首先將離線數據導入到odps表中。我們主要介紹使用散點圖和箱線圖來直觀的觀測分析數據。然後根據上面的具體案例來學會如何看,理解這個圖形。數據選自《機器學習實戰》一書。
散點圖
詳情
- 拖拽統計分析-散點圖。如圖所示,選擇觀測的特征。
- 右鍵查看分析報告
- 散點圖介紹
1,反對角線上的三個方形,在方形左上角表明三個特征的名稱。而且這個三個圖像與其他圖形不相同,橫縱坐標都是一個特征,則對角直線就代表該特征在不同類別下分布密度。比如Play這個方形,我們發現黃色部分集中在下方,藍色部分主要分布在中間,綠色主要分布在中上方。
2,除了反對角線上的三個方形,其他方形則是反映了兩兩特征之間的分布情況。比如第一排第一列(1,1),橫坐標為play,縱坐標為mileage。從這個方形上可以直觀觀測出不同顏色的散點集中分布在不同區域。
3,關於反對角線對稱的兩個方形,則是兩個特征交換縱橫坐標的散點圖。
4,在整個散點圖的下方,可以勾選你希望對比的特征。
- 通過上面散點圖,我們可以比較清晰得出幾個結論。
1,ice_cream特征對分類不敏感。從圖(1,2),(2,2)我們可以直觀看出,ice_cream在所有類別中幾乎都是均勻分布。
2,mileage,play 特征可以將類別明顯的劃分成三個區域。說明這兩個特征絕大程度上決定了類別的劃分。
- 散點圖進階使用
在任意個方形內,拖拽一個方形區域,可以選出滿足這些特征的樣本,更加直觀的觀測,這些樣本在不同方形內的分布。如上圖所示,我們選中了圖(3,3)內一個方形區域,可以看出這些樣本在ice_cream特征下是均勻分布,在其他兩個特征下,都可以通過一個超平面劃分。
箱線圖
詳情
- 拖拽統計分析-箱線圖。如圖所示,選擇觀測的特征。
- 箱線圖介紹
1,箱線圖組件分兩個tab分別顯示箱線圖和擾動點圖,在左上角都可以選擇觀測不同的特征。右側顯示該特征下,每個類別的分布情況。
2,箱線圖介紹,每個類別的箱線圖,從上到下一共有5條橫線。
3,內限不是樣本的最上限,外限也是不最下限,超過內限和外限的樣本為異常樣本。
4,結合擾動點圖,我們可以發現觀測到異常樣本的大致數量多少。
- 箱線圖分析
1,通過上面的圖,我們可以關註paly屬性在不同類別下的分布。對比ice_cream特征
我們發現paly特征的屬性值在不同類別下有明顯有傾向性分布。而ice_cream在不同類別下分布幾乎是一樣的,這也驗證了我們通過散點圖得出的結論。
場景抽象化
現在回到我們一開始遇到的問題。如何用算法幫助工程師為王女士推薦其他她可以喜歡的男生呢。其實這是一個簡單的問題,就是把所有的男生分為三類,不喜歡,一般喜歡,很喜歡。對於一個沒有標簽的男生(x),我們分出其最可能屬於哪個類別的概率(p)。
在這種情況下,我們就選出這個男生屬於類別A。如何計算這個概率,不同算法有不同的計算方法。比如K緊鄰算法,選出離這個樣本點最近的K個樣本,通過屬於A的樣本個數除以K就可以得出屬於A的概率。隨機森林,則是通過投票的方式,票數多的類別就是樣本最終劃分的類別。
模型選擇
通過前面數據分析,我們知道了數據的一些特性。
1,mileage數值比其他兩個特征大很多,在計算特征間的距離時,所在權重就比較大。所有選擇K近鄰可以會造成較大誤差。
2,AdaBoost算法,隨機森林以及邏輯回歸算法都可以處理數值型數據,所以這三種算法我們都會嘗試,並評估者三個算法的準確率。
數據處理
我們可以使用統計分析-全表統計觀測數據是否有空值,以及一些方差等的統計信息。在本案例中我僅做缺失值檢測。
模型訓練
我們分別選擇了三個分類算法,隨機森林、AdaBoost、K近鄰算法。分別做了訓練,預測和算法評估。在下面我們會通過測試評估來選擇合適的方案。
模型測試
- 隨機森林算法
- AdaBoost算法
- K近鄰算法
通過上面的混淆矩陣,可以很直觀的看出,在算法準確度層面,AdaBoost>隨機森林>K近鄰。也驗證了我們前面通過數據分析得出的結論,在某個特征的值過大時,K近鄰算法容易出現較大的誤差。當然我們可以通過歸一化來處理這些特征值,只是這樣做在服務測試時,輸入的數據就必須是歸一化的值而不是真實數據,在實際使用中會有一些麻煩。
模型部署和測試
模型的部署和測試參見【玩轉人工智能—基於PAI的機器學習實戰系列二】商品價格預測
總結
AdaBoost之所以有如此好的效果,其功勞要歸功於集成算法的提出和應用。集成算法通過組合多個分類器的結果,並賦予不同的權重值,而獲得了比任一個分類器都要好的結果。當然這也做也有一定風險,比如說有可能加深了分類器的過擬合問題。
在分類問題上,我們最常遇到的問題就樣本分布不均衡的問題。就是說正樣本多與負樣本,某個類別的樣本多與其他類別的樣本。這樣的數據集在大部分分類器上都會存在問題,通常情況下,我們可以通過欠抽樣或者過抽樣來解決這類問題,但是在實際操作中,我們需要註意下,如何才能在盡可能不影響實際真實性的情況下做到很好的抽樣。
本文作者:伊逍
原文鏈接
本文為雲棲社區原創內容,未經允許不得轉載。
【機器學習PAI實戰】—— 玩轉人工智能之你最喜歡哪個男生?