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