1.5 萬 Star!熱門機(jī)器學(xué)習(xí)算法的數(shù)學(xué)原理
【導(dǎo)語】:本文推薦的 GitHub 項目用 Python 實現(xiàn)流行的機(jī)器學(xué)習(xí)算法,還包括算法實現(xiàn)背后的解析。每個算法都有交互式 Jupyter Notebook 演示,你可以使用它來訓(xùn)練數(shù)據(jù)和算法配置,并實時在瀏覽器中查看結(jié)果、圖表和預(yù)測。
簡介
Homemade Machine Learning 這個項目的目標(biāo),并不是通過使用第三方庫一行實現(xiàn)機(jī)器學(xué)習(xí)算法,而是從零開始實現(xiàn),并且能更好地理解每個算法背后的數(shù)學(xué)原理。這就是為什么所有的算法實現(xiàn)都被叫做“homemade”,并且這些算法并不打算用于實際生產(chǎn)中。
(前哨君提示:由于微信不支持外鏈,下文中的??數(shù)學(xué)、???代碼 和????演示,需要在項目主頁跳轉(zhuǎn)查看。)
本項目地址:?
https://github.com/trekhleb/homemade-machine-learning
監(jiān)督式學(xué)習(xí)
在監(jiān)督式學(xué)習(xí)中,我們將一組訓(xùn)練數(shù)據(jù)作為輸入,每個訓(xùn)練組中,一組標(biāo)簽或者“正確答案”作為輸出。然后,我們訓(xùn)練我們的模型(機(jī)器學(xué)習(xí)算法參數(shù))將輸入映射到正確的輸出中(正確的預(yù)測)。最終的目標(biāo)是找到一個模型參數(shù),這個模型參數(shù)能夠做到,即使是一個新的輸入例,也能保持持續(xù)正確的輸入->輸出映射(預(yù)測)。
回歸
在回歸問題中,我們做實值預(yù)測。最基本的,我們嘗試沿著訓(xùn)練給出的例子,畫一個線/平面/n維平面。
使用示例:股票價格預(yù)測,銷售分析,任何數(shù)字依賴等。
線性回歸

??數(shù)學(xué) | 線性回歸?- 理論和延申閱讀的鏈接
???代碼 | 線性回歸- 實現(xiàn)示例
???演示 | 單變量線性回歸?- 通過經(jīng)濟(jì)GDP預(yù)測國家幸福指數(shù)
???演示| 多元線性回歸?- 通過經(jīng)濟(jì)GDP和自由度指數(shù)來預(yù)測國家幸福指數(shù)
???演示| 非線性回歸?- 通過帶有多項式和正弦特征的線性回歸來預(yù)測非線性依賴
分類
在分類問題中,我們通過某種特征過濾了輸入例。
使用示例:垃圾過濾器,語言探測,尋找相似文檔,手寫文字識別等。
邏輯回歸
? 數(shù)學(xué) | 邏輯回歸 - 理論和拓展閱讀的鏈接
?? 代碼 | 邏輯回歸 - 實現(xiàn)示例
?? 演示| 邏輯回歸(線性邊界) - 基于花瓣長度和寬度預(yù)測鳶尾花
?? 演示 | 邏輯回歸(非線性邊界) - 基于參數(shù)1和參數(shù)2預(yù)測微型芯片的有效性
?? 演示 | 多元邏輯回歸| MNIST - 從28x28像素的圖片中識別手寫數(shù)字
?? 演示 | 多元邏輯回歸| 流行的MNIST - 從28x28像素的圖片中識別衣服類型
非監(jiān)督式學(xué)習(xí)
非監(jiān)督式學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個分支,學(xué)習(xí)使用的測試數(shù)據(jù)沒有被標(biāo)記,分類或歸納。非監(jiān)督式學(xué)習(xí)沒有反饋,而是學(xué)習(xí)識別數(shù)據(jù)中的共性,之后的具體反應(yīng)基于每個數(shù)據(jù)段中存在或不存在的共性。
聚類
在聚類問題中,我們通過未知的特點過濾訓(xùn)練示例。算法本身決定什么樣的特性用于過濾。
使用舉例:市場分割,社會網(wǎng)絡(luò)分析,組織計算集群,天文數(shù)據(jù)處理,圖像壓縮等。
? K-means 算法
? 數(shù)學(xué) | K-means 算法 - 理論和拓展閱讀的鏈接
?? 代碼 | K-means 算法 - 實現(xiàn)示例
?? 演示| K-means 算法- 基于花瓣長度和寬度預(yù)測鳶尾花
異常探測
異常探測(也叫離群探測)是稀有物品、事件或者觀察的鑒別,主要通過比對與主數(shù)據(jù)的顯著不同來提高懷疑特性。
使用示例:入侵檢測,欺詐檢測,系統(tǒng)健康監(jiān)控,還有從數(shù)據(jù)集中刪除異常數(shù)據(jù)等。
? 使用高斯分布進(jìn)行異常探測
? 數(shù)學(xué) | 使用高斯分布進(jìn)行異常探測 - 理論和拓展閱讀的鏈接
?? 代碼| 使用高斯分布進(jìn)行異常探測- 實現(xiàn)用例
?? 演示 | 異常探測 - 找到服務(wù)器操作中的異常,比如潛伏期,臨界值
神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)不是一個算法,而是一個機(jī)器學(xué)習(xí)的算法框架,主要用來處理復(fù)雜的數(shù)據(jù)輸入。
使用示例:通常是所有其他算法的替代品,例如圖像識別,聲音識別,圖像處理(分析具體特征),語言翻譯等。
多層認(rèn)知?(MLP)
? 數(shù)學(xué) | 多層認(rèn)知 - 理論和拓展閱讀的鏈接
?? 代碼| 多層認(rèn)知- 實現(xiàn)用例
?? 演示 | 多層認(rèn)知 | MNIST - 從像素為28x28的圖片中識別手寫筆跡
?? 演示 | 多層認(rèn)知| 流行的MNIST - 從28x28像素的圖片中識別衣服類型
機(jī)器學(xué)習(xí)圖譜

學(xué)習(xí)前提
安裝python
安裝依賴。運行下面的命令,可以安裝本項目需要的所有依賴:
pip install -r requirements.txt
本地啟動Jupyter或者遠(yuǎn)程啟動Jupyter
數(shù)據(jù)集
本項目使用的數(shù)據(jù)集可以在如下鏈接中找到:
https://github.com/trekhleb/homemade-machine-learning/tree/master/data
-?EOF -?
更多優(yōu)秀開源項目(點擊下方圖片可跳轉(zhuǎn))
如果覺得本文介紹的開源項目不錯,歡迎轉(zhuǎn)發(fā)推薦給更多人。
分享、點贊和在看
支持我們分享更多優(yōu)秀開源項目,謝謝!

