數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法30:系列總結(jié)與感悟
Python機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)
Author:louwill
Machine Learning Lab
? ? ?
? ? ?終于到了最后的總結(jié)。從第一篇線性回歸的文章開(kāi)始到現(xiàn)在,已經(jīng)接近有兩年的時(shí)間了。當(dāng)然,也不是純寫這30篇文章用了這么長(zhǎng)時(shí)間,在第14篇Ridge回歸之后中間斷更了10個(gè)多月,好在今年抽出時(shí)間把全部補(bǔ)齊了。
一點(diǎn)總結(jié)
? ? ?整個(gè)系列對(duì)常用的、主流的機(jī)器學(xué)習(xí)模型與算法進(jìn)行了梳理,主題只有兩個(gè),一個(gè)是數(shù)學(xué)推導(dǎo),一個(gè)手寫實(shí)現(xiàn)。因?yàn)闄C(jī)器學(xué)習(xí)原理大多都是由數(shù)學(xué)支撐,基本的機(jī)器學(xué)習(xí)數(shù)學(xué)公式推導(dǎo)對(duì)于深入掌握機(jī)器學(xué)習(xí)十分重要;另一方面,通過(guò)手寫實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法,深入理解算法細(xì)節(jié),進(jìn)一步提高算法實(shí)現(xiàn)的代碼能力。
? ? ?在完成這項(xiàng)工作的過(guò)程中,很多朋友都有問(wèn)過(guò)我,所有的算法是否都是我自己寫的。當(dāng)然不是,作為一名普通的學(xué)習(xí)者,不可能獨(dú)自閉門造車的完成這項(xiàng)工作,在公式推導(dǎo)和代碼實(shí)現(xiàn)過(guò)程中,筆者曾大量參考借鑒了各種博客、教材和GitHub相關(guān)倉(cāng)庫(kù),總體而言也是一項(xiàng)集成性的工作。還有一個(gè)問(wèn)題就是很多朋友也會(huì)問(wèn),說(shuō)好的手寫呢,怎么你LightGBM調(diào)了包了呢。其實(shí)不光是LightGBM調(diào)了包,筆者在寫支持向量機(jī)的時(shí)候調(diào)用了cvxopt求解二次規(guī)劃,貝葉斯網(wǎng)絡(luò)用了pgmpy,CatBoost調(diào)用了原生的catboost庫(kù),最大熵模型也調(diào)用了maxentropy等。一方面是中間確實(shí)偷了懶,一方面也是因?yàn)椴糠炙惴ㄏ到y(tǒng)過(guò)于復(fù)雜,一部分未完成的工作會(huì)留到下半年繼續(xù)。
? ? ?全部模型和算法整理成思維導(dǎo)圖如下:

? ? ?按照模型類型分為監(jiān)督學(xué)習(xí)模型、無(wú)監(jiān)督學(xué)習(xí)模型和概率模型三大類:

監(jiān)督模型

無(wú)監(jiān)督模型

概率模型
全部30講如下:
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法1:線性回歸
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法2:邏輯回歸
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法3:k近鄰
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法4:決策樹之ID3算法
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法5:決策樹之CART算法
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法6:感知機(jī)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法7:神經(jīng)網(wǎng)絡(luò)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法8:線性可分支持向量機(jī)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法9:線性支持向量機(jī)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法10:線性不可分支持向量機(jī)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法11:樸素貝葉斯
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法12:貝葉斯網(wǎng)絡(luò)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法13:Lasso回歸
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法14:Ridge嶺回歸
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法15:GBDT
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法16:Adaboost
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法17:XGBoost
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法18:LightGBM
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法19:CatBoost
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法20:隨機(jī)森林
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法21:最大熵模型
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法22:EM算法
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法23:CRF條件隨機(jī)場(chǎng)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法24:HMM隱馬爾可夫模型
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法25:kmeans聚類
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法26:PCA降維
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法27:LDA線性判別分析
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法28:奇異值分解SVD
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法29:馬爾可夫鏈蒙特卡洛
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法30:系列總結(jié)與感悟
下一步的工作
? ? ?下一步,筆者將在30講的基礎(chǔ)上繼續(xù)進(jìn)行完善和梳理,在深度上進(jìn)行挖掘,并將系列整理改寫為書稿,預(yù)計(jì)于明年年初成稿。完整版的代碼將繼續(xù)在我的GitHub進(jìn)行更新完善,感謝各位關(guān)注。GitHub地址如下或者閱讀原文:
https://github.com/luwill/machine-learning-code-writing
? ? ?另外,對(duì)本系列接下來(lái)的改寫有建議和想法的朋友可以直接加我微信溝通。
喜歡您就點(diǎn)個(gè)在看!

