print('Hello World!')
我一直相信惕它, 興趣是最好的老師!所以對(duì)新事物開(kāi)始的學(xué)習(xí)婿脸,我總喜歡以問(wèn)題為導(dǎo)向咽弦,“所學(xué)的東西到底能幫我們解決什么問(wèn)題?”來(lái)引導(dǎo)我不斷學(xué)習(xí)新知識(shí)胎挎,等有一定理解后再深入學(xué)習(xí)會(huì)事半功倍沟启∫浼遥《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》以平鋪直敘的表述和直接上手的簡(jiǎn)單例子,來(lái)幫助沒(méi)有太多基礎(chǔ)的人入門(mén)美浦,也是我選擇作為第一本入門(mén)書(shū)籍的原因弦赖。帶著這是什么,可以用來(lái)做什么浦辨,為什么要這么做和該怎么做的思路蹬竖,開(kāi)始我的學(xué)習(xí)旅程!這是一個(gè)小白的起步流酬,可能其中很多理解有誤的地方币厕,也歡迎大家指正,一起學(xué)習(xí)芽腾!
第一章 – 什么是機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí)旦装,本質(zhì)通俗解釋為將無(wú)序的數(shù)據(jù)轉(zhuǎn)換為有用的信息。這里的數(shù)據(jù)理解為源數(shù)據(jù)摊滔,即通過(guò)各種渠道第一時(shí)間接受到的并且沒(méi)有經(jīng)過(guò)處理的數(shù)據(jù)阴绢,如我們?nèi)粘I钪械膫鞲衅鳎瑢?shí)現(xiàn)了數(shù)據(jù)采集(Data Acquisition)的功能艰躺,大多源數(shù)據(jù)是無(wú)序的呻袭。然后通過(guò)對(duì)數(shù)據(jù)進(jìn)行“加工”處理,經(jīng)過(guò)分析提煉可以得到對(duì)我們了解事物或者決策有用的信息腺兴。
專業(yè)術(shù)語(yǔ)
起步前需要理解一些專業(yè)術(shù)語(yǔ)左电。首先是學(xué)習(xí),學(xué)習(xí)就是一個(gè)“訓(xùn)練(training)”過(guò)程页响,打個(gè)比方篓足,通過(guò)告訴智能程序已知的問(wèn)題和答案,訓(xùn)練他自己來(lái)摸索所給問(wèn)題和對(duì)應(yīng)答案的規(guī)律及聯(lián)系闰蚕,然后你再出一個(gè)問(wèn)題給他栈拖,他就套用剛才的“規(guī)律”告訴你計(jì)算的答案。但實(shí)際情況遠(yuǎn)遠(yuǎn)比這復(fù)雜的多陪腌,如果將問(wèn)題建模處理辱魁,其中可能大多參數(shù)是不確定的,且不是人為確定的诗鸭,這時(shí)就用一大堆已知的條件來(lái)“訓(xùn)練”程序染簇。使得計(jì)算機(jī)計(jì)算的參數(shù)和實(shí)際誤差最小,這就是訓(xùn)練的目的强岸。
其中锻弓,我們已知的條件就稱為訓(xùn)練集(train set),是訓(xùn)練機(jī)器學(xué)習(xí)算法的數(shù)據(jù)樣本集合蝌箍。而訓(xùn)練樣本(training examples)是訓(xùn)練集的子集青灼,是已經(jīng)分好類(lèi)(貼了標(biāo)簽)的數(shù)據(jù)樣本暴心。訓(xùn)練樣本的特征(features),也叫屬性(attributes),直觀來(lái)看就是訓(xùn)練樣本的列杂拨,他們是獨(dú)立測(cè)量得到的結(jié)果专普,多個(gè)特征聯(lián)系在一起共同組成一個(gè)訓(xùn)練樣本。訓(xùn)練樣本中的目標(biāo)變量必須是已知的弹沽,才能發(fā)現(xiàn)特征和目標(biāo)變量的關(guān)系檀夹。目標(biāo)變量(target variable),目標(biāo)變量是機(jī)器學(xué)習(xí)算法的預(yù)測(cè)結(jié)果策橘,也就是我們說(shuō)的類(lèi)(或者標(biāo)簽)炸渡,好比紅嘴鷗和鳥(niǎo),當(dāng)一種飛禽具有了紅嘴鷗的特征丽已,我們就把這種動(dòng)物歸為鳥(niǎo)類(lèi)蚌堵,因?yàn)榧t嘴鷗是鳥(niǎo)。在分類(lèi)算法(等下會(huì)講)中目標(biāo)變量的類(lèi)型通常是離散型的沛婴, 而在回歸算法中通常是連續(xù)型的吼畏。分類(lèi)問(wèn)題中的目標(biāo)變量被稱為類(lèi)別, 并假定分類(lèi)問(wèn)題只存在有限個(gè)數(shù)的類(lèi)別嘁灯。
訓(xùn)練集作為算法的輸入宫仗,其他還有驗(yàn)證集和測(cè)試集。訓(xùn)練集用來(lái)建立數(shù)據(jù)模型旁仿,驗(yàn)證集(validation set)用來(lái)確定網(wǎng)絡(luò)結(jié)構(gòu)或者控制模型復(fù)雜程度的參數(shù),而測(cè)試集(test set)則檢驗(yàn)最終選擇最優(yōu)的模型的性能如何孽糖,輸入測(cè)試樣本時(shí)并不提供測(cè)試樣本的目標(biāo)變量枯冈, 由程序決定樣本屬于哪個(gè)類(lèi)別。最后办悟,比較測(cè)試樣本預(yù)測(cè)的目標(biāo)變量值與實(shí)際樣本類(lèi)別之間的差別尘奏, 就可以得出算法的實(shí)際精確度。
學(xué)習(xí)方式
監(jiān)督學(xué)習(xí)(Supervised Learning)通過(guò)發(fā)現(xiàn)數(shù)據(jù)屬性和類(lèi)別屬性之間的關(guān)聯(lián)模式病蛉,并通過(guò)利用這些模式來(lái)預(yù)測(cè)未知數(shù)據(jù)實(shí)例的類(lèi)別屬性炫加。這類(lèi)算法必須知道預(yù)測(cè)什么,即知道目標(biāo)變量的分類(lèi)信息铺然。其中俗孝,分類(lèi)和回歸屬于監(jiān)督學(xué)習(xí)。分類(lèi)(classification)就是將實(shí)例數(shù)據(jù)劃分到合適的分類(lèi)中魄健。分類(lèi)問(wèn)題是用于將事物打上一個(gè)標(biāo)簽赋铝,通常結(jié)果為離散值。例如判斷一幅圖片上的動(dòng)物是一只貓還是一只狗沽瘦。分類(lèi)并沒(méi)有逼近的概念革骨,最終正確結(jié)果只有一個(gè)农尖,錯(cuò)誤的就是錯(cuò)誤的,不會(huì)有相近的概念良哲。最常見(jiàn)的分類(lèi)方法是邏輯回歸盛卡,或者叫邏輯分類(lèi)≈欤回歸(regression)是對(duì)真實(shí)值的一種逼近預(yù)測(cè)滑沧。回歸問(wèn)題通常是用來(lái)預(yù)測(cè)一個(gè)數(shù)值型數(shù)據(jù)漏健。如預(yù)測(cè)房?jī)r(jià)嚎货、未來(lái)的天氣情況等等,例如一個(gè)產(chǎn)品的實(shí)際價(jià)格為500元蔫浆,通過(guò)回歸分析預(yù)測(cè)值為499元殖属,我們認(rèn)為這是一個(gè)比較好的回歸分析。一個(gè)比較常見(jiàn)的回歸算法是線性回歸算法(LR)瓦盛。監(jiān)督學(xué)習(xí)包含算法:k-鄰近算法洗显、線性回歸、樸素貝葉斯算法原环、局部加權(quán)線性回歸挠唆、支持向量機(jī)、Ridge回歸嘱吗、決策樹(shù)玄组、Lasso最小回歸系數(shù)估計(jì)等。
非監(jiān)督學(xué)習(xí)(Unsupervised Learning)中數(shù)據(jù)并不被特別標(biāo)識(shí)谒麦,學(xué)習(xí)模型是為了推斷出數(shù)據(jù)的一些內(nèi)在結(jié)構(gòu)俄讹。此時(shí)數(shù)據(jù)沒(méi)有類(lèi)別信息, 也不會(huì)給定目標(biāo)值绕德。如果數(shù)據(jù)的類(lèi)別存在并且已知患膛,則我們可以應(yīng)用監(jiān)督學(xué)習(xí)。但在一些應(yīng)用中耻蛇,數(shù)據(jù)的類(lèi)別屬性是缺失的踪蹬,用戶希望通過(guò)瀏覽數(shù)據(jù)來(lái)發(fā)現(xiàn)其中的某些內(nèi)在 結(jié)構(gòu)。聚類(lèi)(Clustering)就是一種發(fā)現(xiàn)這種內(nèi)在結(jié)構(gòu)的技術(shù)臣咖。聚類(lèi)把全體數(shù)據(jù)實(shí)例組織成一些相似組跃捣,這些相似組被稱作聚類(lèi)(cluster),這就是非監(jiān)督學(xué)習(xí)的應(yīng)用亡哄。密度估計(jì)(density estimation)枝缔,即用統(tǒng)計(jì)值來(lái)描述數(shù)據(jù),比如根據(jù)已有的結(jié)果,給每個(gè)值在未來(lái)出現(xiàn)在結(jié)果中的概率打個(gè)分愿卸。非監(jiān)督學(xué)習(xí)的另一個(gè)用途是將含有多個(gè)屬性或特征的數(shù)據(jù)降維灵临。非監(jiān)督學(xué)習(xí)包含算法:K-均值、最大期望算法趴荸、DBSCAN儒溉、Parzcn窗設(shè)計(jì)。
監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)的區(qū)別與聯(lián)系匯總:
有監(jiān)督學(xué)習(xí)方法必須要有訓(xùn)練集與測(cè)試樣本发钝。在訓(xùn)練集中找規(guī)律顿涣,而對(duì)測(cè)試樣本使用這種規(guī)律;而非監(jiān)督學(xué)習(xí)沒(méi)有訓(xùn)練集這一說(shuō)酝豪,只有一組數(shù)據(jù)涛碑,在該組數(shù)據(jù)集內(nèi)尋找規(guī)律。
有監(jiān)督學(xué)習(xí)方法的目的就是識(shí)別事物孵淘,識(shí)別的結(jié)果表現(xiàn)在給待識(shí)別數(shù)據(jù)加上了分類(lèi)標(biāo)號(hào)蒲障。因此訓(xùn)練樣本集必須由帶分類(lèi)標(biāo)號(hào)的樣本組成。而非監(jiān)督學(xué)習(xí)方法只有要分析的數(shù)據(jù)集本身瘫证,預(yù)先沒(méi)有什么標(biāo)號(hào)揉阎。如果發(fā)現(xiàn)數(shù)據(jù)集呈現(xiàn)某種聚集性,則可按自然的聚集性分類(lèi)背捌,但不以與某種預(yù)先的分類(lèi)標(biāo)號(hào)對(duì)上號(hào)為目的毙籽。
非監(jiān)督學(xué)習(xí)方法在尋找數(shù)據(jù)集中的規(guī)律性,這種規(guī)律性并不一定要達(dá)到劃分?jǐn)?shù)據(jù)集的目的毡庆,也就是說(shuō)不一定要“分類(lèi)”坑赡。這一點(diǎn)是比有監(jiān)督學(xué)習(xí)方法的用途要廣泛。譬如分析一堆數(shù)據(jù)的主分量么抗,或分析數(shù)據(jù)集有什么特點(diǎn)都可以歸于非監(jiān)督學(xué)習(xí)方法的范疇垮衷。
用什么算法:
首先分析我們要使用算法的目的:如果想要預(yù)測(cè)目標(biāo)變量的值, 則可以選擇監(jiān)督學(xué)習(xí)算法乖坠, 否則可以選擇非監(jiān)督學(xué)習(xí)算法。其次是觀察數(shù)據(jù)的特征刀闷, 是離散型變量還是連續(xù)型變量熊泵, 特征值中是否存在缺失的值等。根據(jù)多方面因素考慮最適合最有效的算法解決問(wèn)題,j具體問(wèn)題具體分析甸昏。
開(kāi)發(fā)學(xué)習(xí)應(yīng)用程序的步驟
收集數(shù)據(jù)
準(zhǔn)備輸入數(shù)據(jù)(list或matrix)
分析輸入數(shù)據(jù)(可能人工分析)
訓(xùn)練算法
測(cè)試算法(評(píng)測(cè)結(jié)果)
使用算法
以上步驟我們將在接下來(lái)的實(shí)例中一一驗(yàn)證顽分,在此不贅述。
Python的安裝我比較推薦使用Anaconda施蜜,這個(gè)集成了很多需要計(jì)算的包和模塊卒蘸。可以讓我們更關(guān)注于問(wèn)題本身,不會(huì)浪費(fèi)時(shí)間的同時(shí)缸沃,也不會(huì)讓我們失去信心和耐心恰起!第一章稍微會(huì)講的比較詳細(xì)是在于理論知識(shí)必須掌握牢靠。道趾牧、術(shù)和器的修煉必須同時(shí)進(jìn)行检盼,一個(gè)都不能落。
我自己的博客地址為:謝雨熹的學(xué)習(xí)博客
歡迎大家來(lái)交流翘单!
Talk is cheap, show me your code!