跟著吳恩達老師學習機器學習,Python筆記分享!
- 2020 年 12 月 25 日
- AI
譯者:AI研習社(成語風)
雙語原文鏈接:A Full-Length Machine Learning Course in Python for Free
吳恩達在斯坦福大學講授的機器學習課程堪稱Coursera上最具人氣的課程。我之前試聽了好幾門別的機器學習課程但我覺得他的在拆解概念使之變得易於理解方面做得最好。
但是我想說這裡有一個問題,那就是這門課程的所有作業和演示都是用Matlab做的。我是一個Python使用者而且我不想學Matlab.因此我只在課上學習概念然後自己用Python實現這些演算法。
我用自己的方式解釋所有的演算法(以我能做到的最簡潔的水平)然後演示之前幾篇文章的幾乎所有演算法開發過程。我覺得我可以把它們全部總結到一頁紙的篇幅,這樣可以讓學的人更容易跟上一點。有時這點點幫助會起很大的作用。
如果你想要聽吳恩達的機器學習課程,你是可以免費旁聽完整課程想多少次就多少次的。
我們開始吧!
線性回歸
最簡單的機器學習演算法。此演算法是基於一個高中講的很基本的直線公式:
Y = AX + B
沒忘吧?忘了也無所謂。這是一個很簡單的公式。這是解釋為什麼這個簡單公式可以被用來做預測的完整文章。
上面這篇文章只在單個變數的數據集上有用。但是在現實生活中絕大多數數據集有多個變數。使用同一個簡單公式你可以開發出多變數的演算法。
多項式回歸
這個是線性回歸的姊妹。但是多項式回歸能夠更精準地找出輸入變數和輸出變數之間的關係,甚至是在這個關係不是線性的時候、
對數回歸(羅吉斯回歸)
對數回歸是在線性回歸基礎上開發的。他也用到了同一個簡單的直線方程。這就是一個廣泛使用的、強大的、流行的機器學習演算法了。這可以用來預測分類變數。以下文章逐步解釋了對數回歸用於二分類問題的開發過程。
基於二分類的概念,我們就可以開發出用於多分類任務的對數回歸。同時,Python有一些優化函數可以讓你快速完成計算。在下文中我從這兩個思路出發完成了一個數字識別數據集的多分類任務。
神經網路
神經網路如今變得越來越流行。你都讀到這篇文章了,我猜你肯定聽說過它。
一個神經網路在更複雜的數據集上解決的快得多。這也涉及了同一個直線方程但是這個演算法的開發要比前幾個要複雜的多。如果你聽了吳恩達的課,你應該已經了解了這些概念。不然,我會盡量細地拆解這個概念。希望能幫到你:
學習曲線
如果你把全部的時間了開發演算法上但是它卻不按你設想的那樣去解決問題怎麼辦。你該怎麼修好它?首先你需要找到問題出在哪裡。是演算法有錯,還是數據不足以訓練模型還是你需要更多特徵?看起來問題好多哦是不是?但如果你不首先解決問題在哪,然後朝著正確的方向前進,你將會浪費無數時間。以下是如何找出問題的幫助:
另一方面如果數據集偏斜太厲害,那又是另一個挑戰。比如你試圖解決一個分類問題,95%是陽性結果只有5%是陰性結果。這麼一搞你就算是瞎猜所有的預測是陽性你也有95%的準確率。另一方面,如果這個ML演算法看起來有90%準確率那可真是夠低效的吧?連瞎猜都比它准。下文就是幾個處理這種問題的點子:
K均值聚類
最老牌的流行無監督學習演算法。這個演算法不想前面幾個一樣做出預測。他只是基於數據內部的相似性進行歸類。這更像是試圖更有效地理解當前的數據。然後當演算法收到新數據的時候,基於它的特性,它會決定這個新數據被歸類到哪一個簇。本演算法還有別的重要應用。他可以用來給圖片降維。
為啥我們要給圖片降維?
你想啊,當我們需要輸入大量圖片進入演算法來訓練一個圖片分類模型的時候。超高解析度的圖片會輸入沉重的負擔並且拖慢整個訓練過程(認出這是什麼圖哪需要這麼高解析度!)。這種情況下一個維度更低的圖片就可以讓我們更快處理完。這只是舉一個例子。你或許可以想見很多同樣原因的別的用途。
下文是一個開發K均值聚類演算法的完整教程,以及如何使用這個演算法來給圖片降維。
異常檢測
這又是一個機器學習核心任務。用於信用卡欺詐檢測,製造缺陷品檢測,甚至是癌細胞檢測。用高斯分布(正態分布)辦法或者簡單到一個概率公式就可以搞定。下文是一個完整的逐步指導文章:用高斯分布的概念來開發異常檢測演算法。
如果你需要小小複習一下高斯分布法,看這篇文:
推薦系統
推薦系統無處不在。如果你在1688買了什麼東西,它就會給你推薦一些你可能會喜歡的別的產品。B站也會給你推薦你可能會喜歡的影片,QQ會給你推薦你可能認識的人。你看是不是到處都有。
吳恩達的課程教你如何用那在線性回歸裡面用的同一個直線方程開發一個推薦系統。這就是逐步演示怎麼開發一個電影推薦系統的演算法:
結語
希望這些文章能幫到一些人機器學習起步,最好的學習辦法是跟著做,絕大多數演算法都是基於一個非常簡單的公式。我看到有人講機器學習或者人工智慧需要很重度的編程知識或者困難的數學,這倒未必。用簡單的程式碼,基礎數學和統計學知識你就可以做到很多事了。同時不停地提高你的編程水平從而勝任更複雜的任務。
如果你對機器學習感興趣就花一點時間,在這上面花點功夫。
AI研習社是AI學術青年和AI開發者技術交流的在線社區。我們與高校、學術機構和產業界合作,通過提供學習、實戰和求職服務,為AI學術青年和開發者的交流互助和職業發展打造一站式平台,致力成為中國最大的科技創新人才聚集地。
如果,你也是位熱愛分享的AI愛好者。歡迎與譯站一起,學習新知,分享成長。


