機器學(xué)習(xí)算法歸納
記憶力越來越差了(是不是要癡呆了abab),老是翻筆記找不到想要的,心血來潮寫篇專欄供隨時查閱(脖子好癢,好像要長腦子了.jpg? >w<)?錯誤之處,歡迎指正。

機器學(xué)習(xí)的學(xué)習(xí)方式主要分為4大類:監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)、強化學(xué)習(xí)

監(jiān)督學(xué)習(xí)(Supervised learning)
監(jiān)督學(xué)習(xí):訓(xùn)練含有很多特征的數(shù)據(jù)集,不過數(shù)據(jù)集中的樣本都有一個標(biāo)簽或目標(biāo)(粗略地說,監(jiān)督學(xué)習(xí)算法是給定一組輸入x和輸出y的訓(xùn)練集,學(xué)習(xí)如何關(guān)聯(lián)輸入和輸出。在許多情況下,輸出 y 很難自動收集,必須由人來提供 ‘‘監(jiān)督’’)
監(jiān)督學(xué)習(xí)分為分類和回歸兩大類
分類:將輸入數(shù)據(jù)劃分到合適的類別(即標(biāo)識對象所屬的類別),預(yù)測的是離散值(例:預(yù)測天氣情況,判斷賬號是否被盜,手寫數(shù)字的自動識別等)?
程序需要指定某些輸入屬于類中的哪一類,學(xué)習(xí)算法會輸出一個函數(shù):
? {
}?(
即n維實數(shù)集)
當(dāng)時,模型會將向量
所代表的輸入分類到
所屬的類別
回歸:依據(jù)輸入數(shù)據(jù)預(yù)測與對象關(guān)聯(lián)的連續(xù)值屬性(即根據(jù)先前觀察的數(shù)據(jù)預(yù)測數(shù)值),預(yù)測的是連續(xù)值(例:房價變化預(yù)測,股價預(yù)測等)
程序需要對給定輸入預(yù)測數(shù)值,學(xué)習(xí)算法同樣會輸出函數(shù):
當(dāng)時,模型會依據(jù)向量
所代表的輸入值,輸出
的值

1、分類算法
1.1 K近鄰(K-Nearest Neighbor)?算法(又稱KNN算法)
定義:如果?個樣本在特征空間中的個最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某?個類別,則該樣本也屬于這個類別
近朱者赤,近墨者黑
工作機制:
對未知類別的數(shù)據(jù)集中的每個樣本進(jìn)行以下操作:
①計算已知類別數(shù)據(jù)集中的樣本點與當(dāng)前樣本點之間的距離
(距離度量:特征空間中兩個實例點之間的距離是二者相似程度的反應(yīng)。人話翻譯:兩個點越靠近,則我們認(rèn)為這兩個樣本越相似。有多種常見的距離衡量方法。 如歐幾里得距離、曼哈頓距離、閔科夫斯基距離、切比雪夫距離及余弦距離)
②按照距離的遞增關(guān)系進(jìn)行排序;
③選取距離最小的K個樣本;
④根據(jù)這K個樣本的標(biāo)簽進(jìn)行投票,K個樣本中出現(xiàn)最多次的類別為預(yù)測結(jié)果
算法過程:
1)?輸入訓(xùn)練數(shù)據(jù)集:?{
} ,
{
} (
是實例的特征向量,
有
個特征,
是實例的類別,
)
2)?對給定測試樣本實例,選擇訓(xùn)練數(shù)據(jù)集樣本
3)?通過選定的距離度量方法(此處使用歐式距離),計算樣本點之間的距離:
4)?依次計算距離得到距離集合,將集合
從小到大進(jìn)行排序
5)?根據(jù)集合選取最鄰近的k個點
6)?將以測試樣本實例點為中心,周圍涵蓋K個點的鄰域記作
7)?通過多數(shù)分類決策(即“投票法”,少數(shù)服從多數(shù)):
(為指示函數(shù),當(dāng)輸入為True時返回1,輸入為False時返回0)
8)?得到實例所屬的類別
K值的選擇:
近似誤差:對現(xiàn)有訓(xùn)練集的訓(xùn)練誤差
估計誤差:對測試集的測試誤差
過擬合:訓(xùn)練誤差和測試誤差之間的差距太大 ,對訓(xùn)練集的預(yù)測比較準(zhǔn)確,但對未知的測試集的預(yù)測將出現(xiàn)較大誤差
欠擬合:模型不能在訓(xùn)練集上獲得足夠低的誤差,對訓(xùn)練集和測試集的預(yù)測都有較大誤差
1) 選擇較小的K值,就相當(dāng)于用較小的領(lǐng)域中的訓(xùn)練實例進(jìn)行預(yù)測
K值的減小就意味著整體模型變得復(fù)雜,近似誤差減小,估計誤差增大,容易發(fā)生過擬合
取極端最近鄰情況K=1,此時最靠近測試樣本點A的訓(xùn)練樣本點B決定了A的類別,如果B恰好為訓(xùn)練樣本中的噪聲,我們將得出錯誤的結(jié)論,也就是說過小的k值增大了噪聲的影響,產(chǎn)生了偏差
2) 選擇較大的K值,就相當(dāng)于用較大領(lǐng)域中的訓(xùn)練實例進(jìn)行預(yù)測
K值的增大就意味著整體的模型變得簡單,估計誤差減小,近似誤差增大,容易發(fā)生欠擬合
當(dāng)k值過大時,此時距離測試樣本點A非常遠(yuǎn)的訓(xùn)練樣本點C也會對預(yù)測起作用,由于C離A點非常遠(yuǎn),我們可以認(rèn)為C與A不相似,所以同樣會使得預(yù)測產(chǎn)生偏差。
3) K=N(N為訓(xùn)練樣本個數(shù)),那么無論輸入實例是什么,都將簡單地預(yù)測它屬于在訓(xùn)練實例中最多的類,模型過于簡單,忽略了訓(xùn)練實例中大量有用信息。
在實際應(yīng)用中,K值一般取一個比較小的數(shù)值。通常采用交叉驗證法來選取最優(yōu)的k值
K應(yīng)盡量選擇奇數(shù),在二分類問題中,容易防止平局
KD樹
當(dāng)使用KNN算法進(jìn)行預(yù)測時,每預(yù)測一個點,都需要計算訓(xùn)練數(shù)據(jù)集里每個點到這個點的距離,然后選出距離最近的k個點進(jìn)行投票。當(dāng)數(shù)據(jù)集很大時,這個計算成本非常高。(即線性掃描,窮舉搜索)
為了避免每次都重新計算?遍距離,算法會把距離信息保存在?棵樹里,在計算之前從樹里查詢距離信息, 盡量避免重新計算。(如果A和B距離很遠(yuǎn),B和C距離很近,那么A和C的距離也很遠(yuǎn))
構(gòu)造方法:
1)構(gòu)造根結(jié)點,使根結(jié)點對應(yīng)于K維空間中包含所有實例點的超矩形區(qū)域;
2)通過遞歸的方法,不斷地對k維空間進(jìn)行切分,生成子結(jié)點。
①對每個維度的數(shù)據(jù)進(jìn)行方差計算,取最大方差的維度作為分割軸
②對當(dāng)前數(shù)據(jù)按分割軸維度進(jìn)行檢索,找到中位數(shù)數(shù)據(jù),作為切分點
③通過切分點并垂直于分割軸,就可以確定一個超平面,這個超平面就將超矩形中的實例分到了兩個子區(qū)域(子結(jié)點),左子結(jié)點對應(yīng)坐標(biāo)小于切分點的子區(qū)域,右子結(jié)點對應(yīng)坐標(biāo)大于切分點的子區(qū)域
3)上述過程直到子區(qū)域內(nèi)沒有實例時終止(終止時的結(jié)點為葉結(jié)點)
K近鄰算法總結(jié)
適用場景:多分類問題
? ? ? ? ? ? ? ? ? 稀有事件分類問題
? ? ? ? ? ? ? ? ? 文本分類問題
? ? ? ? ? ? ? ? ? 模式識別
? ? ? ? ? ? ? ? ? 聚類分析
? ? ? ? ? ? ? ? ? 樣本數(shù)量較少的分類問題
優(yōu)點:
1)簡單,易于理解,易于實現(xiàn),無需估計參數(shù),無需訓(xùn)練,既可以用來做分類也可以用來做回歸;
2)適合對稀有事件進(jìn)行分類;
3)適合大樣本自動分類,特別適合于多分類問題(multi-modal,對象具有多個類別標(biāo)簽)
缺點:
1)計算量大,尤其是特征數(shù)非常多的時候
2)樣本不平衡的時候,對稀有類別的預(yù)測準(zhǔn)確率低
3)KD樹,球樹之類的模型建立需要大量的內(nèi)存
4)是懶散學(xué)習(xí)方法,基本上不學(xué)習(xí),導(dǎo)致預(yù)測時速度比起邏輯回歸之類的算法慢
5)相比決策樹模型,KNN模型的可解釋性不強

1.2? Logistic回歸算法(Logistic Regression)
未完待續(xù)....