自從Alpha圍棋占據(jù)人類棋類智力頂峰以來,人工智能、機器學(xué)習(xí)等概念的熱度變越來越高,機器在各大領(lǐng)域的應(yīng)用大放異彩。 ·全球首個“AI合成主播”上崗,以假亂真 ·OpenAIDOTA5v5 AI大戰(zhàn)人類團隊,大獲全勝 ·谷歌Duplex代替人類自動接打電話,驚艷四座 但大多數(shù)人會將人工智能、機器學(xué)習(xí)、深度學(xué)習(xí)等概念混淆,甚至以為這些概念是一個意思,實際上,機器學(xué)習(xí)只是人工智能的一個分支。 機器學(xué)習(xí)整個知識體系可總結(jié)如下: 雖然機器學(xué)習(xí)一直都被認(rèn)為是一個較難的領(lǐng)域,但經(jīng)過對學(xué)習(xí)體系的分解,按照學(xué)習(xí)路徑一步一步的學(xué)習(xí),普通人也可以成長為機器學(xué)習(xí)大神。 接下來我們分別從每一個部分展開,講講具體應(yīng)該學(xué)什么、怎么學(xué),以及各個部分主要的知識點進行結(jié)構(gòu)化地展示,并有針對性地推薦學(xué)習(xí)資源。 機器學(xué)習(xí)基礎(chǔ)知識 想要步入機器學(xué)習(xí)領(lǐng)域,數(shù)學(xué)基礎(chǔ)是第一個,也是最大的一個門檻。 如果你在學(xué)習(xí)機器學(xué)習(xí)過程中遭遇挫折,多半是由于數(shù)學(xué)知識的阻礙。 機器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)知識有哪些?這是準(zhǔn)備入門機器學(xué)習(xí)的學(xué)習(xí)者們面臨的共同問題。 微積分和線性代數(shù)很重要,大部機器學(xué)習(xí)是對機器的模型擬合,微積分作為基礎(chǔ)中的基礎(chǔ),在大多數(shù)數(shù)據(jù)場景當(dāng)中都有應(yīng)用; 在模型使用時一般最先考慮的是線性模型,你需要用線性代數(shù)來簡潔清晰的描述問題,為分析求解奠定基礎(chǔ)。 概率論也少不了,涉及數(shù)據(jù)的問題,不確定性幾乎是不可避免的,引入隨機變量順理成章,相關(guān)理論、方法、模型非常豐富。 優(yōu)化基礎(chǔ)和信息論也需要一定的了解,因為它們會在你面對復(fù)雜問題時為你提供思路。 推薦數(shù)學(xué)基礎(chǔ)書籍和資源: 《概率論:科學(xué)的邏輯》 http:///R0MzVAA 《信息論、推理與學(xué)習(xí)算法》http:///EqirC5g 在線數(shù)學(xué)教材匯總 http:///7yiJV 免費數(shù)學(xué)教材 http:///RvltCtQ MIT在線教材 http:///EIhFPc5 除了數(shù)學(xué)基礎(chǔ),機器學(xué)習(xí)的另一個準(zhǔn)入門檻是一點簡單的編程知識。 學(xué)習(xí)機器學(xué)習(xí)不一定要精通一門編程語言,但你需要一些基礎(chǔ)知識,在這里我推薦使用python,因為python語言簡單易用,即使沒有計算機基礎(chǔ)的人也能快速上手。 而且python當(dāng)中包含很多基礎(chǔ)庫,直接調(diào)用就可以幫你做大多數(shù)事情。 推薦python學(xué)習(xí)資源: 《Learn Python the Hard Way》 https:///nhx5V5WF Python 科學(xué)計算入門 http:///2cXycM Python 文檔 https:///18rdithb 推薦Pandas文檔: 十分鐘入門Pandas http:///EVTGis7 Pandas中文文檔 https://www./ 推薦Numpy文檔: Nump快速入門 http:///ypHr Numpy中文文檔 https://www./ 推薦matplotlib文檔: matplotlib中文文檔 https://www./ 有一個說法是:機器學(xué)習(xí)是被美化的統(tǒng)計學(xué)。 當(dāng)然,機器學(xué)習(xí)不只是統(tǒng)計學(xué)的美化,但是我們也能看出機器學(xué)習(xí)與統(tǒng)計學(xué)深有淵源,統(tǒng)計學(xué)注定成為機器學(xué)習(xí)基礎(chǔ)中不可或缺的一部分。 推薦統(tǒng)計學(xué)習(xí)資源: 《統(tǒng)計學(xué)習(xí)元素》 https:///SAc2gXl4 《統(tǒng)計學(xué)習(xí)方法》 http:///ddj4 機器學(xué)習(xí)算法 機器學(xué)習(xí)算法通常被分為兩大類,有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)。 監(jiān)督學(xué)習(xí):有訓(xùn)練樣本,帶有屬性標(biāo)簽,也可以理解成樣本有輸入有輸出。 無監(jiān)督學(xué)習(xí):無監(jiān)督學(xué)習(xí)(Unsupervised learning)就是聚類,事先不知道樣本的類別,通過某種辦法,把相似的樣本放在一起歸為一類。 無論是有監(jiān)督學(xué)習(xí)還是無監(jiān)督學(xué)習(xí),我們需要掌握的最重要的一點就是算法。 所有的回歸算法和分類算法都屬于監(jiān)督學(xué)習(xí)。回歸(Regression)和分類(Classification)算法區(qū)別在于輸出變量的類型,連續(xù)變量預(yù)測稱為回歸;離散變量預(yù)測成為分類。 無監(jiān)督學(xué)習(xí)的兩種常見用例是探索性分析和降維。常見的無監(jiān)督學(xué)習(xí)還有隨機森林(Random forests)、K均值聚類(K-means clustering)等方法。 推薦算法資源 斯坦福課程 http:///aMVF6 監(jiān)督學(xué)習(xí)十大算法 http:///aMVF3 算法選擇圖譜 http:///aMVF4 數(shù)據(jù)特征與模型優(yōu)化 機器學(xué)習(xí)的一般遵循“數(shù)據(jù)采集-數(shù)據(jù)預(yù)處理-特征工程-模型評估-模型優(yōu)化-預(yù)測”的流程,預(yù)測是機器學(xué)習(xí)的最終目的。 1.原始數(shù)據(jù)的采集 機器學(xué)習(xí)的第一步是進行原始數(shù)據(jù)的采集,原始數(shù)據(jù)的數(shù)量和質(zhì)量直接決定了預(yù)測模型的好壞。 數(shù)據(jù)采集前需要明確哪些數(shù)據(jù)對最后的結(jié)果預(yù)測有幫助?數(shù)據(jù)從哪些渠道進行采集?運用什么方式來采集? 原始數(shù)據(jù)通過各種渠道收集而來,公開數(shù)據(jù)源是獲取有效數(shù)據(jù)的捷徑,這些數(shù)據(jù)大多經(jīng)過相關(guān)機構(gòu)的收集和整理并經(jīng)過分類再公布出來,數(shù)據(jù)來源可靠,信息豐富。 另外一個采集原始數(shù)據(jù)的渠道是通過爬蟲爬取,到這里你可能就會知道為什么先修基礎(chǔ)當(dāng)中會要求一定的python基礎(chǔ)。 最后,在數(shù)據(jù)采集的過程當(dāng)中,你可能還需要注意以下幾點: 收集完整的數(shù)據(jù),我們無法預(yù)先知道哪些屬性哪些信息對于模型預(yù)測是真正有價值的,因此需要收集完整的數(shù)據(jù)集以確保模型預(yù)測的有效性。 對數(shù)據(jù)進行標(biāo)記,在監(jiān)督學(xué)習(xí)的場景當(dāng)中,例如,情感分析模型需要用標(biāo)簽標(biāo)記,來幫助算法理解人類使用的俚語或諷刺挖苦的表達(dá)方式。 有時數(shù)據(jù)標(biāo)記的工作往往非常耗時耗力,在某些場景中,這類工作不僅對人的專業(yè)背景要求高,而且完成標(biāo)記所需的周期長。 推薦數(shù)據(jù)匯總資源: 數(shù)據(jù)獲取方式匯總 https:///Q44MsDkH 2.數(shù)據(jù)預(yù)處理 在機器學(xué)習(xí)中有一句名言:數(shù)據(jù)和特征決定了機器學(xué)習(xí)的上限,而模型和算法的應(yīng)用只是讓我們逼近這個上限。 這個說法形象深刻的說明了前期數(shù)據(jù)處理的重要性。 機器學(xué)習(xí)的數(shù)據(jù)預(yù)處理一般包括數(shù)據(jù)采樣、數(shù)據(jù)清洗和數(shù)據(jù)標(biāo)準(zhǔn)化。 ·數(shù)據(jù)采樣 當(dāng)機器學(xué)習(xí)中樣本比例不平衡時,通常會采取數(shù)據(jù)采樣的方法,對數(shù)據(jù)進行采樣可以有針對性地改變數(shù)據(jù)中樣本的比例。 采樣一般有兩種方式 ·over-sampling :增加樣本數(shù)較少的樣本,其方式是直接復(fù)制原來的樣本 ·under-sampling:減少樣本數(shù)較多的樣本,其方式是丟棄這些多余的樣本 通常來說,當(dāng)總樣本數(shù)目較多的時候考慮 under-sampling,而樣本數(shù)數(shù)目較少的時候考慮 over-sampling。 ·數(shù)據(jù)清洗 采集到的原始數(shù)據(jù)往往比較粗糙或伴隨有噪音,此時我們需要進行數(shù)據(jù)清洗,清洗的對象是缺失值、錯誤值、重復(fù)值和不一致的數(shù)據(jù)。 ·數(shù)據(jù)標(biāo)準(zhǔn)化 與普通的數(shù)據(jù)挖掘不同,機器學(xué)習(xí)的數(shù)據(jù)還需要進行數(shù)據(jù)標(biāo)準(zhǔn)化。 包括與樣本尺度歸一化、逐樣本的均值相減、標(biāo)準(zhǔn)化等,這些工作簡單可復(fù)制,經(jīng)過標(biāo)準(zhǔn)化的數(shù)據(jù)能夠更好地幫助我們進行特征處理。 另外,在預(yù)處理階段,我們還需要將數(shù)據(jù)分為三種數(shù)據(jù)集。 包括用來訓(xùn)練模型的訓(xùn)練集、開發(fā)過程中用戶調(diào)參的驗證集以及測試時所使用的測試集。 3.特征工程 特征是數(shù)據(jù)中抽取出來的對結(jié)果預(yù)測有用的信息,可以是文本或者數(shù)據(jù)。 特征工程的目的是篩選出更好的特征,獲取更好的訓(xùn)練數(shù)據(jù)。 ·特征處理:特征總體分為數(shù)值型、類別型、時間型、文本型等幾個類型 ,特征處理需要將這些類型的特征進行歸一化、標(biāo)準(zhǔn)化等處理。 ·特征選擇:從多個特征中,挑選出一些對結(jié)果預(yù)測最有用的特征。 ·特征降維: 當(dāng)特征選擇完成后,可以直接訓(xùn)練模型了,但是可能由于特征矩陣過大,導(dǎo)致計算量大,訓(xùn)練時間長的問題,因此降低特征矩陣維度也是必不可少的。 常見的降維方法有主成分分析法(PCA)、線性判別分析(LDA),以及多維尺度分析。 ·PCA:即主成分分析方法,是一種使用最廣泛的數(shù)據(jù)降維算法。 ·LDA:PCA和LDA總是同時談到,它們都是非常有效的數(shù)據(jù)降維算法。 ·MDS:即多維尺度分析,是根據(jù)具有很多維度的樣本或變量之間的相似性(距離近)或非相似性(距離遠(yuǎn),即通過計算其距離)來對其進行分類的一種統(tǒng)計學(xué)研究方法。 推薦特征工程資源: 《機器學(xué)習(xí)模型的特征工程》 http:///ddvz PCA文檔 http:///ddki LDA視頻 http:///ddls MDS https://Multidimensional 4.模型評估 模型評估是準(zhǔn)確預(yù)測的關(guān)鍵。 評估指標(biāo)是把'尺子',用來評判模型優(yōu)劣水平的算法,不同的機器學(xué)習(xí)模型有著不同的'尺子'。 同時同一種機器學(xué)習(xí)模型也可以用不同的尺子來評估,只是每個尺子的的著重點不同而已。 通過訓(xùn)練集產(chǎn)生的模型,利用測試數(shù)據(jù)來進行模型效果的評估,混淆矩陣、roc曲線等一系列評估指標(biāo)將幫助判斷模型是否可行以及是否滿足業(yè)務(wù)目標(biāo)。 -分類評估指標(biāo) ·對數(shù)損失函數(shù):在分類輸出中,若輸出不再是0-1,而是實數(shù)值,即屬于每個類別的概率,那么可以使用Log-loss對分類結(jié)果進行評價。 ·精確率-召回率(Precision-Recall):精確率-召回率其實是兩個評價指標(biāo),但是它們一般都是同時使用。 精確率是指分類器分類正確的正樣本的個數(shù)占該分類器所有分類為正樣本個數(shù)的比例。 召回率是指分類器分類正確的正樣本的個數(shù)占所有的正樣本個數(shù)的比例。 ·混淆矩陣:混淆矩陣顯示了分類模型相對數(shù)據(jù)的真實輸出(目標(biāo)值)的正確預(yù)測和不正確預(yù)測數(shù)目。 ·ROC曲線:越遠(yuǎn)離對角線,說明模型效果越好,ROC曲線下的區(qū)域面積即為AUC值,AUC值越接近1模型的效果越好。 隨著閾值的減小,Sensitivity和1-Specificity也相應(yīng)增加,所以ROC曲線呈遞增態(tài)勢。 理想情況下,曲線快速爬向左上,表示模型準(zhǔn)確預(yù)測數(shù)據(jù)。紅色斜對角線表示隨機模型。 ·AUC(Area Under the ROC Curve)指標(biāo):AUC是曲線下面積。 在模型評估階段常被用作最重要的評估指標(biāo)來衡量模型的準(zhǔn)確性,橫坐標(biāo)為其中隨機分類的模型AUC為0.5,所以模型的AUC基線值大于0.5才有意義。 -回歸評價指標(biāo) ·RMSE(root mean square error平方根誤差):回歸模型中最常用的評價模型。 ·Quantiles of Errors --誤差的分位數(shù):為了改進RMSE的缺點,提高評價指標(biāo)的可行性,使用誤差的分位數(shù)來代替,如中位數(shù)來代替平均數(shù)。 推薦模型評估資源: 模型選擇與評估公開課 http:///ddwy 《評估機器學(xué)習(xí)模型》 http:///ddx8 5.模型優(yōu)化 機器學(xué)習(xí)模型建立過程是一個參數(shù)學(xué)習(xí)與調(diào)優(yōu)的過程,模型的應(yīng)用是循環(huán)迭代的過程,只有通過持續(xù)調(diào)整和調(diào)優(yōu)才能適應(yīng)在線數(shù)據(jù)和業(yè)務(wù)目標(biāo)。 調(diào)參是機器學(xué)習(xí)中的一項大工程,大多數(shù)人知道有調(diào)參這個步驟,卻并不知道調(diào)參的目的是什么?到底要調(diào)哪些東西? 調(diào)參的過程是一種基于數(shù)據(jù)集、模型、和訓(xùn)練過程細(xì)節(jié)的實證過程。 參數(shù)可以分為兩類,一類是不需要手動設(shè)置、在訓(xùn)練過程中可以自動被調(diào)整的參數(shù); 另一類是超參數(shù),即需要在訓(xùn)練前手動設(shè)置的參數(shù),例如樹的數(shù)量或深度、學(xué)習(xí)率、k均值聚類中的簇數(shù)…… 超參數(shù)的種類多,調(diào)節(jié)范圍大,需要先進行簡單的測試確定調(diào)參范圍。 交叉驗證在這里提出,是因為它可作為一種確定超參數(shù)的方法。 對訓(xùn)練集再次進行切分,得到訓(xùn)練集以及驗證集,通過訓(xùn)練集訓(xùn)練得到的模型,在驗證集驗證,從而確定超參數(shù)。(選取在驗證集結(jié)果最好的超參數(shù)) 推薦模型優(yōu)化資源: 模型優(yōu)化文檔 http:///ddzl 超參數(shù)文檔 http:///ddpm 交叉驗證文檔 http:///ddpd 集成學(xué)習(xí):集成學(xué)習(xí)(Ensemble learning)是使用一系列學(xué)習(xí)器進行學(xué)習(xí),并使用某種規(guī)則把各個學(xué)習(xí)結(jié)果進行整合,從而獲得比單個學(xué)習(xí)器顯著優(yōu)越的泛化性能。 它不是一種單獨的機器學(xué)習(xí)算法,而更像是一種優(yōu)化策略,因此將它列入模型優(yōu)化當(dāng)中。 推薦集成學(xué)習(xí)資源: 使用sklearn進行集成學(xué)習(xí) http:///aMVFH 細(xì)分進階 如果通過上面的學(xué)習(xí)你已經(jīng)具備了機器學(xué)習(xí)的基礎(chǔ),并且能夠?qū)崿F(xiàn)一個完整的機器學(xué)習(xí)流程。 那么接下來你可以嘗試進行一些更為深入的領(lǐng)域。比如深度學(xué)習(xí)和強化學(xué)習(xí)。 ·強化學(xué)習(xí):又稱再勵學(xué)習(xí)、評價學(xué)習(xí),是一種重要的機器學(xué)習(xí)方法,在智能控制機器人及分析預(yù)測等領(lǐng)域有許多應(yīng)用。 ·深度學(xué)習(xí):深度學(xué)習(xí)是機器學(xué)習(xí)研究中的一個新的領(lǐng)域,其動機在于建立、模擬人腦進行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它模仿人腦的機制來解釋數(shù)據(jù),例如圖像,聲音和文本。 推薦細(xì)分進階資源: 《強化學(xué)習(xí)》 http:///ddon 強化學(xué)習(xí)課程 http:///ddod 深度學(xué)習(xí)資源 http:///ddny 以上就是機器學(xué)習(xí)完整的學(xué)習(xí)路徑,這個框架確實有一些龐大和復(fù)雜,因為它需要強大的數(shù)學(xué)知識做支撐,并包含了大量的算法和理論。 但沒有必要感到困難和可怕,因為我們是站在巨人的肩膀上來學(xué)習(xí),前人已經(jīng)給出了我們一套完整的方法,我們只需要去學(xué)習(xí)就能夠達(dá)到工程師的高度。 END |
|