策略產(chǎn)品經(jīng)理深入淺出了解機(jī)器學(xué)習(xí)算法原理(上篇)
機(jī)器學(xué)習(xí)簡(jiǎn)單來(lái)說(shuō)就是機(jī)器從歷史過(guò)去的數(shù)據(jù)、知識(shí)中總結(jié)出規(guī)律經(jīng)驗(yàn),用于提升系統(tǒng)的度量能力。本文作者對(duì)十大機(jī)器學(xué)習(xí)算法的前三個(gè)進(jìn)行了分析介紹,一起來(lái)看一下吧。
今天我們來(lái)講講關(guān)于基礎(chǔ)的機(jī)器學(xué)習(xí)算法與對(duì)應(yīng)的適用場(chǎng)景,幫助策略產(chǎn)品建立起來(lái)最為基礎(chǔ)的“工具方案-問(wèn)題”的認(rèn)知思路,幫助大家更好理解十大機(jī)器學(xué)習(xí)算法的思想和理解對(duì)應(yīng)的應(yīng)用場(chǎng)景。
了解機(jī)器學(xué)習(xí)另一個(gè)重要的點(diǎn)是,在和算法工程師溝通過(guò)的時(shí)候,“知其然更知其所以然”,而不能做“黑盒產(chǎn)品經(jīng)理”,這種甚至都不能被稱(chēng)之為策略產(chǎn)品,無(wú)法為自己的業(yè)務(wù)指標(biāo)和業(yè)務(wù)方向負(fù)責(zé)。
那么,接下來(lái)我們圍繞以下幾個(gè)部分來(lái)給大家介紹一下策略產(chǎn)品必知的十大機(jī)器學(xué)習(xí)算法,幫助大家做簡(jiǎn)單入門(mén),感興趣還是建議大家閱讀專(zhuān)業(yè)的機(jī)器學(xué)習(xí)書(shū)籍,如果有幫助到大家,辛苦大家?guī)兔c(diǎn)個(gè)喜歡、收藏以及評(píng)論一下。
一、機(jī)器學(xué)習(xí)的分類(lèi)
1. 定義本質(zhì)
首先,我們?cè)诮榻B機(jī)器學(xué)習(xí)的分類(lèi)之前,我們需要了解清楚機(jī)器學(xué)習(xí)的本質(zhì)是什么,簡(jiǎn)單來(lái)說(shuō)就是機(jī)器從歷史過(guò)去的數(shù)據(jù)、知識(shí)中總結(jié)出來(lái)規(guī)律經(jīng)驗(yàn)用于提升系統(tǒng)的度量能力。舉個(gè)栗子,我們將“好西瓜”開(kāi)瓜的經(jīng)驗(yàn)以【數(shù)據(jù)】形式傳遞給模型(考慮西瓜蒂、花紋以及敲擊的實(shí)心聲音)給到模型,在面對(duì)新瓜,模型就會(huì)給我們判定是否為“好瓜”的結(jié)論,所以說(shuō)機(jī)器學(xué)習(xí)就是一門(mén)研究“學(xué)習(xí)算法”的學(xué)問(wèn)。
2. 機(jī)器學(xué)習(xí)分類(lèi)及對(duì)應(yīng)關(guān)系
機(jī)器學(xué)習(xí)的算法大致可以分為三類(lèi):監(jiān)督學(xué)習(xí)算法、無(wú)監(jiān)督學(xué)習(xí)算法以及強(qiáng)化學(xué)習(xí)算法。
1)監(jiān)督學(xué)習(xí)算法 – Supervised Algorithms
簡(jiǎn)單來(lái)說(shuō)在監(jiān)督學(xué)習(xí)訓(xùn)練過(guò)程中,可以由訓(xùn)練數(shù)據(jù)集學(xué)到或建立一個(gè)模式(函數(shù) / learning model),并依此模式推測(cè)新的實(shí)例。
在監(jiān)督學(xué)習(xí)當(dāng)中,需要給算法去提供一些解決方案需要的訓(xùn)練數(shù)據(jù),成為所謂的標(biāo)簽和標(biāo)記;簡(jiǎn)單說(shuō)就是要有自變量(X)和因變量(Y),同時(shí)可用來(lái)分類(lèi)和回歸。那么常見(jiàn)的監(jiān)督學(xué)習(xí)算法有:K鄰近、線性回歸、邏輯回歸、支持向量機(jī)(SVM)、決策樹(shù)和隨機(jī)森林、神經(jīng)網(wǎng)絡(luò)。
2)無(wú)監(jiān)督學(xué)習(xí)算法 – Unsupervised Algorithms
無(wú)監(jiān)督學(xué)習(xí)的訓(xùn)練數(shù)據(jù)都是不需要經(jīng)標(biāo)記,算法會(huì)在沒(méi)有指導(dǎo)的情況下自動(dòng)學(xué)習(xí);訓(xùn)練時(shí)候的數(shù)據(jù)是只有自變量但是沒(méi)有對(duì)應(yīng)的因變量。
常見(jiàn)的無(wú)監(jiān)督學(xué)習(xí):聚類(lèi)算法(K-meansK均值、最大期望算法)、關(guān)聯(lián)規(guī)則學(xué)習(xí)(Apriori、Eclat)等;例如京東電商平臺(tái)根據(jù)C端用戶購(gòu)物頻次、平均客單價(jià)、購(gòu)物的筆單數(shù)以及年均消費(fèi)力等,將這些用戶自動(dòng)“聚類(lèi)”為幾個(gè)不同類(lèi)別,然后在進(jìn)行人工標(biāo)記。
3)強(qiáng)化學(xué)習(xí)算法 – Reinforcement Algorithms
主要基于決策進(jìn)行訓(xùn)練,算法根據(jù)輸出結(jié)果(決策)的成功或錯(cuò)誤來(lái)訓(xùn)練自己,以負(fù)面回報(bào)的形式獲得懲罰。它必須自行學(xué)習(xí)什么是最好的策略,從而隨著時(shí)間推移獲得最大的回報(bào)。
例如我們熟悉的“阿爾法狗Alpha Go”就是在和優(yōu)秀棋手中不斷對(duì)弈,通過(guò)輸贏的對(duì)弈起棋局來(lái)訓(xùn)練自己如何走下一步是勝率最大的走法,有一部叫做疑犯追蹤的美劇也是圍繞這個(gè)視角來(lái)描述的,這也是離我們所謂的人工智能最近的一種算法類(lèi)型。
二、基本的機(jī)器學(xué)習(xí)算法分類(lèi)
1. 線性回歸-Linear Regression
首先,理解一個(gè)概念,回歸-Regression和我平時(shí)理解的回歸-return的概念不一樣,這里回歸指代的是“推導(dǎo)”的意思。回歸算法是相對(duì)于分類(lèi)算法而存在的,和我們想要預(yù)測(cè)的因變量y的類(lèi)型相關(guān)。
- 如果y是個(gè)分類(lèi)離散變量,例如預(yù)測(cè)性別男/女,預(yù)測(cè)用戶在推薦位是否點(diǎn)擊,預(yù)測(cè)人外套的顏色紅/綠/黃/黑…,那么我們就需要用分類(lèi)模型的算法訓(xùn)練數(shù)據(jù)并作出對(duì)應(yīng)的預(yù)測(cè);
- 如果y是個(gè)連續(xù)性變量,例如京東購(gòu)物用戶的年齡(25、40、60)、購(gòu)物用戶的年收入水平(30萬(wàn)/50萬(wàn)/100萬(wàn)/1000萬(wàn)…),用戶逛推薦位feeds流的停留時(shí)長(zhǎng)(5s/10s/15s…)這種的我們就需要用到回歸模型的算法去做訓(xùn)練數(shù)據(jù)的預(yù)測(cè);
但是,分類(lèi)問(wèn)題其實(shí)和回歸問(wèn)題是可以相互轉(zhuǎn)化的,例如上面我們說(shuō)的在推薦位feeds發(fā)生點(diǎn)擊行為,如果變成預(yù)測(cè)C端用戶的點(diǎn)擊概率,從10%,11%到100%,轉(zhuǎn)化為大于50%則為預(yù)測(cè)點(diǎn)擊,小于50%則為不點(diǎn)擊,我們就從回歸模型的問(wèn)題變成了一個(gè)分類(lèi)問(wèn)題。
線性回歸算是機(jī)器學(xué)習(xí)入門(mén)型算法,可以用一個(gè)簡(jiǎn)單的二元一次方程來(lái)做概述說(shuō)明,由下圖我們可以得到一個(gè)y = a+bx 的二元一次方程,給定a、b兩個(gè)參數(shù)的時(shí)候,畫(huà)在坐標(biāo)軸最終是一條直線;可以看到圖中有許多的散點(diǎn)圖,我們需要通過(guò)一條直線去盡可能的擬合途中的數(shù)據(jù)點(diǎn),這就叫一元線性回歸。
但是,我們也發(fā)現(xiàn)上面的所有散點(diǎn)圖并不能被一條一元二次方程穿過(guò),就和現(xiàn)實(shí)世界的數(shù)據(jù)一樣,我們只能盡可能的找到規(guī)律,找到一條最合適的直線;所以,不可避免地發(fā)現(xiàn)預(yù)測(cè)理論值Predicted Value和實(shí)際值之間會(huì)存在差別,這個(gè)也就是我們所說(shuō)的“誤差”,所以我們往往在一元二次回歸方程里會(huì)帶上一個(gè)尾巴來(lái)來(lái)進(jìn)行誤差c,也就是y = a+ bx +c。
因?yàn)閿?shù)據(jù)并不是真的落在一條直線上,而是分布再周?chē)晕覀冃枰业揭粋€(gè)合適的a和b,來(lái)找到一條“合適的曲線”,那么為了求得a和b,我們就需要用到損失函數(shù)的概念。
誤差說(shuō)白了就是真實(shí)值和預(yù)測(cè)值之間的差值,也可以理解為距離;我們把上圖當(dāng)中每一個(gè)點(diǎn)單獨(dú)的誤差值求出來(lái),計(jì)算出對(duì)應(yīng)的值:
再把每一個(gè)點(diǎn)做平方后的累加合,這樣就可以完全的量化出來(lái)你和曲線上直線對(duì)應(yīng)的點(diǎn)和實(shí)際值之間的誤差距離,用公式表示如下:
這個(gè)公式是殘差平方和-SSE(Sum of Squares for Error),在機(jī)器學(xué)習(xí)中它是回歸問(wèn)題當(dāng)中使用的損失函數(shù),用于衡量回歸模型誤差的函數(shù),也就是我們要的“直線”的評(píng)價(jià)擬合成都的標(biāo)準(zhǔn)標(biāo)準(zhǔn)。這個(gè)函數(shù)的值越小,說(shuō)明直線越能擬合我們的數(shù)據(jù)。最后如何求的最佳參數(shù)a和b,我們一般需要使用梯度下降法或者最小二乘法求得,后續(xù)展開(kāi)分享,就不再這里贅述了。
2. 邏輯回歸-Logistic Regression
前面給大家介紹了邏輯回歸常常用來(lái)解決分類(lèi)問(wèn)題,業(yè)界常用來(lái)做搜索結(jié)果頁(yè)/推薦信息流當(dāng)中用戶是否點(diǎn)擊、金融系統(tǒng)當(dāng)中判定是否違約客戶等等。
記住一句關(guān)鍵的話:分類(lèi)本質(zhì)上是用邏輯回歸當(dāng)中的目的和結(jié)果,其中間過(guò)程還是回歸性質(zhì)。為什么這么說(shuō),舉個(gè)例子,京東推薦系統(tǒng)當(dāng)中會(huì)把用戶在推薦位對(duì)商品點(diǎn)擊的可能性“概率”歸一到(0,1),然后給可能性在加一個(gè)閾值0.5,比方說(shuō)點(diǎn)擊預(yù)測(cè)的可能性是0.5以上,預(yù)測(cè)判定為會(huì)被點(diǎn)擊,小于0.6則預(yù)測(cè)為不會(huì)被點(diǎn)擊。
由此可見(jiàn),所有實(shí)際點(diǎn)值都落在了y = 1 和y = 0上了(縱坐標(biāo)非0即1),如果用一個(gè)單一的一元二次線性方程擬合效果會(huì)比較差,只有少數(shù)的點(diǎn)才被落在了直線上。
實(shí)際上,邏輯回歸一般會(huì)采用sigmoid的函數(shù)去做擬合,sigmoid函數(shù)在本身是一個(gè)s型曲線函數(shù),在取值范圍之間(-∞,+∞)會(huì)在y = 0 和y = 1之間會(huì)有平滑過(guò)渡,用來(lái)表示預(yù)測(cè)的概念,也就是事件發(fā)生的“可能性”。
多元一次方程一般的形式為可以表現(xiàn)為如下圖,一般可以簡(jiǎn)寫(xiě)成為矩陣形式Y(jié) = Xβ:
將特征加權(quán)求和Xβ帶入,領(lǐng)所有預(yù)測(cè)為正例得概率P(Y = 1),例如在京東推薦系統(tǒng)當(dāng)中,預(yù)測(cè)這一次行為時(shí)被點(diǎn)擊,那么邏輯回歸的形式就變成了如下的條件公式預(yù)測(cè):
整個(gè)邏輯回歸的函數(shù)就構(gòu)造完成了,下面就是通過(guò)梯度下降法來(lái)求解β獲得最佳位置參數(shù)去構(gòu)建最佳函數(shù)去擬合所有的點(diǎn),關(guān)于梯度下降法我們單獨(dú)起一篇文章來(lái)進(jìn)行介紹;
3. K鄰近算法KNN-KNearestNeighbor
KNN是比較入門(mén)級(jí)的機(jī)器學(xué)習(xí)分類(lèi)算法,整體思路比較的簡(jiǎn)單,核心就是的思維就是中國(guó)古代中的“近朱者赤近墨者黑”的思想。其中KNN當(dāng)中的K指代的就是最近的K個(gè)點(diǎn)的個(gè)數(shù)來(lái)預(yù)測(cè)位置的數(shù)據(jù)點(diǎn),其中選擇K值就是預(yù)測(cè)精準(zhǔn)度的一個(gè)關(guān)鍵性質(zhì)的因素。
KNN做的就是選出距離目標(biāo)點(diǎn)Predicted點(diǎn)位距離最近的k個(gè)點(diǎn),看這k個(gè)點(diǎn)的大多數(shù)顏色是什么形狀。這里我們可以通過(guò)歐氏距離來(lái)度量和計(jì)算預(yù)測(cè)Predicted點(diǎn)位和K個(gè)點(diǎn)之間的距離。
- case 1:當(dāng)我們把K設(shè)為1的時(shí)候,可以看出來(lái),預(yù)測(cè)點(diǎn)位距離黃色的“+”最近,那么我們?cè)谂卸c(diǎn)的類(lèi)型的時(shí)候會(huì)把預(yù)測(cè)點(diǎn)位判定成為“+”
- case 2:當(dāng)我們把K設(shè)為5的時(shí)候,可以看出來(lái)距離最近的點(diǎn)位有1個(gè)“+”,1個(gè)“O”,還有3個(gè)“△”,那么我們召會(huì)將預(yù)測(cè)Predict的點(diǎn)位會(huì)判定成為“△”
結(jié)論:由此我們可以知道K的選擇不同,對(duì)于得到的結(jié)果大相徑庭,所以選擇K值也就成為了KNN算法的關(guān)鍵。
KNN的分類(lèi)邊界是非線性的,K越小越容易過(guò)擬合,我們看到到K = 1的時(shí)候,這個(gè)時(shí)候只會(huì)根據(jù)最近的單個(gè)點(diǎn)進(jìn)行預(yù)測(cè),如果最近的一個(gè)點(diǎn)是相反的噪點(diǎn),這個(gè)時(shí)候就預(yù)測(cè)出錯(cuò),這個(gè)時(shí)候無(wú)形之中增加了計(jì)算的復(fù)雜度,魯棒穩(wěn)健性比較差。但是如果K取得比較大(例如K = 100)的時(shí)候,這個(gè)時(shí)候又會(huì)欠擬合,模型計(jì)算非常簡(jiǎn)單,并且分類(lèi)的邊界也會(huì)比較的平滑。
所以,我們找到合適的K的過(guò)程,就是一個(gè)不斷的調(diào)參過(guò)程,比較經(jīng)典合適的方法就是N折交叉驗(yàn)證法,下圖展示的是5折交叉驗(yàn)證,講一直到的樣本集合分為5各等分,其中四份作為訓(xùn)練集,1份作為驗(yàn)證集,設(shè)定 參數(shù),做出5個(gè)等分。
具體來(lái)說(shuō):
- 第一步:把樣本集分成5個(gè)小的子集,編號(hào)為train1、train2、train3、train4、train5;
- 第二步:先用train1、train2、train3、train4建模,得到model1,并在train5上計(jì)算誤差error1;
- 第三步:在用train1、train2、train3、train5建模,得到model2,并在train4上計(jì)算誤差error2;
- ……..
- 重復(fù)以上步驟,建立5個(gè)model模型,將5個(gè)誤差值相加后除以5得到平均誤差。
做完交叉驗(yàn)證之后,我們就設(shè)置超參數(shù)從k=1開(kāi)始嘗試,計(jì)算K=1時(shí)的平均誤差值,每次K增加2,最終能選到產(chǎn)生最小誤差值的K(因?yàn)殡S著K變大,誤差值會(huì)先變小后變大嘛)。
這里有個(gè)主意的點(diǎn),我們一般都對(duì)K會(huì)取奇數(shù)而不取偶數(shù),因?yàn)榕紨?shù)有一定的可能會(huì)導(dǎo)致點(diǎn)打平(例如有4個(gè)點(diǎn)其中2個(gè)黃色“+”,2個(gè)“O”),這樣就無(wú)法判斷Predict 點(diǎn)位究竟是屬于黃色“+”,還是“O”,所以盡量避免這種問(wèn)題。
最后還要注意的點(diǎn)就是點(diǎn)位需要做“標(biāo)準(zhǔn)化”,如果不做標(biāo)準(zhǔn)化,可能會(huì)因?yàn)辄c(diǎn)位會(huì)受到點(diǎn)位影響嚴(yán)重,一般會(huì)采用極差法消除兩級(jí)或者是標(biāo)準(zhǔn)差標(biāo)準(zhǔn)法。
KNN本身是沒(méi)有訓(xùn)練過(guò)程的,也沒(méi)有模型的參數(shù),所以再驗(yàn)證過(guò)程中是和已知的樣本點(diǎn)的距離來(lái)學(xué)習(xí)。
KNN的優(yōu)點(diǎn)就在于原理簡(jiǎn)單也比較號(hào)實(shí)現(xiàn),對(duì)于非線性規(guī)則分類(lèi)效果是要更加優(yōu)于先行分類(lèi)器;缺點(diǎn)也十分明顯:需要存儲(chǔ)全部的數(shù)據(jù)集、而且需要計(jì)算每一個(gè)預(yù)測(cè)Predict和已知點(diǎn)的距離比較耗時(shí),并且不太適合于特征空間維度比較高的場(chǎng)景類(lèi)型。
三、小結(jié)回顧
今天我們先簡(jiǎn)單了解一下機(jī)器學(xué)習(xí)十大算法中的前三個(gè),對(duì)于策略產(chǎn)品經(jīng)理來(lái)說(shuō),知道其算法原理邏輯思考和應(yīng)用場(chǎng)景是非常有必要的,策略產(chǎn)品在解決業(yè)務(wù)場(chǎng)景時(shí)候需要抽象化分類(lèi)思考具體的問(wèn)題,對(duì)癥下藥看碟夾菜,這樣才能實(shí)實(shí)在在提升自己解決問(wèn)題的能力。
像是線性回歸,我們即用來(lái)做線性預(yù)測(cè),比方說(shuō)預(yù)測(cè)信用卡用戶的生命周期,通過(guò)收入、年齡以及居住小區(qū)等來(lái)給用戶評(píng)級(jí);例如邏輯回歸,我們就用來(lái)預(yù)測(cè)推薦系統(tǒng)用戶的點(diǎn)擊行為,通過(guò)用戶的畫(huà)像、在線/離線行為記錄來(lái)預(yù)測(cè)用戶是否會(huì)點(diǎn)擊。了解了內(nèi)核實(shí)質(zhì),其實(shí)就是工具場(chǎng)景的應(yīng)用了。
本文由 @策略產(chǎn)品Arthur 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
交流歡迎關(guān)注我主頁(yè)