隨著人工智能的火熱,學(xué)習(xí)機(jī)器學(xué)習(xí)知識(shí)已經(jīng)迫在眉睫
越來越多的企業(yè)已經(jīng)開始逐步在產(chǎn)品中應(yīng)用機(jī)器學(xué)習(xí)的模型,當(dāng)下人工智能火熱,未來引發(fā)一場(chǎng)技術(shù)革命也說不準(zhǔn)。身為程序員,需要時(shí)刻了解前沿的各種信息,這樣才能保證自己不被時(shí)代所淘汰。
本文將自己在機(jī)器學(xué)習(xí)中的筆記內(nèi)容分享出來,也記錄自己的學(xué)習(xí)過程。
什么是機(jī)器學(xué)習(xí)?
機(jī)器學(xué)習(xí)顧名思義,就是人類教會(huì)計(jì)算機(jī)利用以往的經(jīng)驗(yàn)來完成指定的任務(wù),能夠像人類一樣學(xué)習(xí)。
機(jī)器學(xué)習(xí)有三個(gè)要素:數(shù)據(jù),模型,算法。這三者之間的關(guān)系就是通過數(shù)據(jù)利用一定的算法生成模型,讓機(jī)器可以按照模型去處理或者預(yù)測(cè)新的數(shù)據(jù)。
機(jī)器學(xué)習(xí)常用的算法主要有決策樹,樸素貝葉斯,線性回歸,邏輯回歸,SVM(支持向量機(jī)),神經(jīng)網(wǎng)絡(luò)等算法。此文先用簡單的例子來逐一講解各個(gè)算法概念,后續(xù)會(huì)詳細(xì)介紹具體的原理和推導(dǎo)過程。
決策樹
舉個(gè)例子,我們有一些統(tǒng)計(jì)某些APP的下載情況的數(shù)據(jù),如下圖:
現(xiàn)在我們需要根據(jù)這些數(shù)據(jù)預(yù)測(cè)新用戶會(huì)下載哪類APP,來進(jìn)行精準(zhǔn)的APP廣告投放。
通過分析數(shù)據(jù)得出,我們可以根據(jù)年齡和性別大概判斷不同的用戶會(huì)下載哪類APP。
這就類似我們提出一個(gè)問題,通過判斷,將答案分成兩類,然后重復(fù)以上步驟,繼續(xù)提問回答,最終得到類似樹杈的模型,如下圖所示:
這種預(yù)測(cè)的方式被稱為決策樹。
樸素貝葉斯
我們換個(gè)例子,現(xiàn)在我們需要制作一個(gè)垃圾郵件檢測(cè)分類器,首先我們根據(jù)現(xiàn)有的郵件來手動(dòng)標(biāo)記垃圾郵件,找到垃圾郵件一般含有的特征。比如有100封郵件,我們手工找出垃圾郵件有25封,然后我們發(fā)現(xiàn)垃圾郵件中含有"cheap"這個(gè)單詞有20封,這樣可以推測(cè)如果一封郵件中含有“cheap”單詞,那么它是垃圾郵件的概率為80%.
同理,我們也可以尋找其他的特征來預(yù)測(cè),比如錯(cuò)別字,沒有標(biāo)題等等。這種通過打標(biāo)簽計(jì)算概率來分類事物的方式被稱為樸素貝葉斯。
線性回歸
再來個(gè)??,我們有一些大house,還有一些小居室,分別知道他們的面積和房價(jià)?,F(xiàn)在需要預(yù)測(cè)一個(gè)面積位于他們之間的房子的價(jià)格。
將這些數(shù)據(jù)用坐標(biāo)系表示出來,橫軸代表面積,縱軸代表房價(jià):
然后找到某一條直線能夠擬合所有的數(shù)據(jù),這里尋找這條直線使用梯度下降法(后面會(huì)介紹), 通過找到所有數(shù)據(jù)點(diǎn)到直線距離的平方和的最小值(最小二乘法),來確定最優(yōu)擬合直線。
這種方式被稱為線性回歸。
梯度下降法
上文提到梯度下降法,很容易理解,假設(shè)我們?cè)谀硞€(gè)山頂,目標(biāo)是到達(dá)山底。
該怎么處理呢?一般來說我們會(huì)查看四周下山的路,找到下降距離最大的方向,然后朝這個(gè)方向下山,反復(fù)此步驟,直至到達(dá)山底,這種方式就是梯度下降法。
在現(xiàn)實(shí)中我們可以把山頂想象成要解決的問題,到達(dá)山底可以當(dāng)做對(duì)問題的解答。
邏輯回歸
??是個(gè)好東西,能夠幫助我們理解概念。假設(shè)一所學(xué)校的招生辦,有一些往年學(xué)校招生的成績數(shù)據(jù)?,F(xiàn)在有位學(xué)生申請(qǐng)學(xué)校,入學(xué)考試為7分,在校成績?yōu)?分,需要判斷該學(xué)生是否達(dá)標(biāo)。
觀察往年的招生數(shù)據(jù),我們會(huì)發(fā)現(xiàn)招生和未被招進(jìn)的數(shù)據(jù)大概可以用直線分割,使用最小二乘法找到最擬合的分割線,通過梯度下降法來尋找,找到以后將該學(xué)生成績帶入坐標(biāo)系中來查看結(jié)果。如圖所示:
可以預(yù)測(cè)該學(xué)生可以被錄取,這種算法被稱為邏輯回歸。
神經(jīng)網(wǎng)絡(luò)
還是用上面的例子,假如我們有一名同學(xué)入學(xué)成績是9分,但是在校成績書是1分,按照上面的預(yù)測(cè),該學(xué)生可以入學(xué)。但是實(shí)際上這是不合理的,因?yàn)樵谛3煽兲?,此時(shí)模型已經(jīng)不能覆蓋類似這種數(shù)據(jù)。
這種情況下該如何處理呢?可能實(shí)際錄取學(xué)生的數(shù)據(jù)是這樣的:
此時(shí)一條直線已經(jīng)不能完全將錄取和未被錄取的學(xué)生分割了,可以用兩條直線來區(qū)分這些數(shù)據(jù),這樣會(huì)分成4個(gè)區(qū)域,這樣可以根據(jù)不同的成績來將數(shù)據(jù)寫入坐標(biāo)系,然后判定數(shù)據(jù)在直線上方標(biāo)記為YES,在直線下方標(biāo)記為NO,就可以得到下圖的模型:
最后將該學(xué)生數(shù)據(jù)帶入模型中,入學(xué)成績?yōu)?,在校成績?yōu)?的數(shù)據(jù)應(yīng)該寫在右下方區(qū)域,分別為YES和NO。根據(jù)"和"原則,結(jié)果應(yīng)該為NO,即不能錄取。
這種判斷方式就是神經(jīng)網(wǎng)絡(luò),輸入數(shù)據(jù)根據(jù)"和"原則來判斷輸出結(jié)果為“YES”還是“NO”。
由于和人類的神經(jīng)處理方式極為相似,因此被稱為神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)在很多方面都有應(yīng)用,比如面部識(shí)別,語音識(shí)別,AlphaGo以及無人駕駛。
SVM(支持向量機(jī))
假設(shè)我們有幾個(gè)點(diǎn)的數(shù)據(jù),現(xiàn)在需要使用線條分割這些數(shù)據(jù),從圖中看出我們可以找到至少兩條直線都能將數(shù)據(jù)分割開來。
我們目標(biāo)是找到一條最優(yōu)直線,在這個(gè)過程中,首先需要去掉離直線最遠(yuǎn)的點(diǎn),這些點(diǎn)會(huì)有較大干擾。然后找到剩余的點(diǎn)到直線的距離,查看這些點(diǎn)到哪條直線的最小距離最大,我們的目標(biāo)就是讓這個(gè)最小值盡可能的大,同樣這個(gè)過程也會(huì)使用梯度下降法來找到這條最優(yōu)直線。
從上圖中可以看出,最終黃線的效果要比藍(lán)線的效果好,這種方式被稱為SVM(支持向量機(jī))。
題后話
機(jī)器學(xué)習(xí)并不僅僅局限于上述提到的算法,也并不像所說的那樣簡單,現(xiàn)實(shí)中會(huì)有大量的數(shù)據(jù)和各種問題需要處理,本文總結(jié)的內(nèi)容都盡量避免了數(shù)學(xué)的內(nèi)容,但想搞懂機(jī)器學(xué)習(xí)原理最終都要回歸到數(shù)學(xué)上,例如概率與統(tǒng)計(jì)學(xué),線性代數(shù),微積分這些都是少不了的(大學(xué)欠下的債遲早要還的)。
后續(xù)的文章中我會(huì)盡量用通俗的語言來總結(jié),但是如果想入門機(jī)器學(xué)習(xí),數(shù)學(xué)是一定需要的,這是理解原理必備的理論基礎(chǔ)。
最后,歡迎大家關(guān)注我的公眾號(hào),讓我們一起學(xué)習(xí)分享,努力實(shí)現(xiàn)開掛的人生!
