這一個月,從對機器學習充滿好奇與畏懼,到對各種算法稍有理解以及圍繞推薦場景的編碼實踐,算是對機器學習有了一個入門的體驗。但是中間也踩過不少坑,比如啃過線性代數的教材、看過無聊的機器學習課程、追過高端的機器學習書籍、陷入一個算法無法自拔(最后也沒整明白)...其實,學習機器學習沒有那么難,也很容易走偏。謹以此文,作為ML入門小白的一個小小的參考...
本篇雖不是這一個月的流水賬,但是基本按照下面的思路對着一個月做了一次總結:
- 什么是機器學習?
- 機器學習都有什么算法?
- 個人對機器學習的三種境界理解
- 推薦的學習路線
- 推薦資源
希望讀者有所收獲,另外,如果文中有任何理解上的錯誤,還望指正!
什么是機器學習?
之前在沒有具體接觸到機器學習前,我大概對他有一個概念上的認識,覺得是一種很高級的算法,能讓機器學會很多的事情,就像...《我的機器人女友》里那樣!
或者是《機械公敵》里的智能機器人?...
但是,這些其實都是對機器學習的一種誤解。機器學習並不是讓機器像人一樣會學習,而是通過一種固定的編程模式,對數據進行處理。按照百度的定義,它是這樣的:
專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。
其實機器學習就是通過一些前人總結的數據公式,幫我們簡化了很多手工操作很麻煩甚至無法操作的事情。就舉個身邊很常見的例子,當你在淘寶搜索了某個寶貝后,之后的商品頁面會為你推薦跟這個搜索相關的商品;再比汽車在經過司機的一段駕駛后,汽車自己能基於道路狀況自動調整方向盤以及車速,實現無人駕駛;再如,家里的熱水器會記錄你使用熱水的時間,提前一段時間燒水,而在其他時間不加熱,以節省水電。這些都是機器學習,都是身邊已經出現或者即將出現的場景,所以,機器學習其實就在我們身邊。
機器學習都有哪些算法?
在機器學習中,算法可以按照多種維度進行分類,比如監督學習、無監督學習、強化學習等...讓人看着就眼暈。
記得有一篇文章總結的就非常易懂,他認為機器學習其實可以分成三類,分類、回歸、聚類。
- 分類聽着名字就很容易理解了,比如給你一筐水果,水果里面有蘋果、香蕉,需要把它們分成兩類。
- 回歸來源於單詞regression,它可以理解成是一種預測,比如線性回歸,他可以根據樣本數據學習出一個線性的公式,比如y=ax,當你給定一個x的值時,可以推算出對應的y值。當然具體的場景中,就不是簡單的一維了...
- 聚類,跟前面的分類有些不同,比如一筐水果,你都不知道里面裝的是什么,需要通過味道、顏色、形狀、大小等多個屬性,把它們進行歸類。
結合到算法里面:
- 分類相關的算法有:K-近鄰算法、決策樹、朴素貝葉斯、邏輯回歸、支持向量機等
- 回歸相關的算法有:線性回歸、樹回歸等
- 聚類相關的算法有:K-均值算法、Apriori等
如果看過一遍《機器學習實戰》,應該就會對上述的算法有一定的了解。不需要到公式推導級別,先能了解他們的用法即可,比如:
K-近鄰
就是已知幾個分類,判斷新的節點屬於哪個分類時,只需要看距離它一定范圍內,哪個分類的數據多。有點像近朱者赤近墨者黑的意思。決策樹
就是通過一大堆的問題,判斷屬於哪個分類。比如,相親的時候,會問“你是做什么的?”“有沒有房?”“有沒有車?”——最后判斷,是否繼續交往。朴素貝葉斯
看着名字高大上,其實就是根據概率選擇,屬於哪個分類的概率大,就歸屬這個分類邏輯回歸
它是把線性回歸的結果映射到01區間線性回歸
可以簡單的理解成y=ax,但是其實在多維空間比這個復雜得多K-均值
就是一大堆散落的點,隨機幾個中心,這些點按照距離選擇他們最近的中心組成一個類別Apriori
只要說一個啤酒與尿布
,大家就應該明白了。
這么多算法其實只是機器學習中的一部分....
機器學習的應用場景
機器學習的應用還是很廣泛的,比如無人駕駛、機器人等等高大上的東西,以及咱們身邊的拼車算法、電商的個性化推薦、婚戀網站的快速配偶等等。只要是涉及到數據之間的關系,都可以使用機器學習來達到很好的效果。
個人理解的機器學習的三種境界
這三種境界純粹是個人的胡亂設定,僅僅是為了給自己的學習定下一個目標!
第一層 了解算法的過程和作用
這種一般是那些自學機器學習的朋友,在看過幾本機器學習相關的書籍后,對所有的算法都有一點了解。能跟別討論一些機器學習的算法和用途,並且能理解相關技術分享大致過程。
第二層 能把算法運用到實踐中
這一層可以認為是對某個機器學習的庫比較熟悉,能真正的利用機器學習來解決一些問題。比如可以使用Spark MLLib中的某個算法解決實際的問題,如基於物品或者用戶的協同過濾算法。這就好像是使用現代的機械工具蓋房子,而不是像過去純人工搬石頭壘長城,效率和產出上都要好的多。
第三層 對算法的推導融會貫通
這種可以說是集數學與計算機功底於一身,是倚天劍與屠龍刀的合體。對數學公式推導了如指掌,各種模型的優化也深諳其道。其實機器學習使用某個庫出一個簡單的效果很簡單,但是想要對算法模型進行優化卻很難,大多時候都是盯着算法結果,目瞪口呆,不知道下一步該怎么辦。如果對算法了解的很深,對實際的業務又很熟悉,那么就能結合兩點對算法模型進行優化,改進機器學習的結果。
個人學習機器學習的路線規划
經過不到一個月的學習,對機器學習也算是初步有了一定的了解,最起碼知道機器學習能干什么了,所以現在還在處於上面的第一個境界....
這期間也走了不少的彎路,浪費了不少的時間。所以在這里總結一下,也給大家當做一個參考:
- 1 最快的入門方式,就是先百度、必應一下,了解下機器學習的概念。
- 2 推薦閱讀《機器學習實戰》了解下機器學習相關的算法。我之前也看過機械工業出版社的《機器學習》、也看過點周志華老師的《機器學習》,前一本概念太多,后一本公式也挺多。《機器學習實戰》相對來說要好得多,先介紹點理論背景,在基於python介紹下算法的實現以及一兩個案例。
- 3 很多人都覺得機器學習需要很好的數學功底,於是學習機器學習前,先捧着高數、線代、概率論看,結果看了兩天,覺得枯燥無味,就打算放棄。其實沒必要的,結合上面的《機器學習實戰》,遇到什么公式,進行相應的復習就行了,這也是為什么把數學放在第三個步驟。其實機器學習里面能理解高數的求導、線代的矩陣以及向量、概率的期望方差等就差不多了,其他有需要的話針對學習就行。
- 4 學習機器學習肯定是要看吳恩達老師的公開課了,公開課的地址,我剛看了兩集,感覺還是非常不錯的。
- 5 學習Spark MLLib相關的算法實現,如果有時間的話,可以看看源碼。
通過上面的學習,暫時可以到達第二個層次了。我想一般搞計算機的,應該很少有能對各種算法推導融會貫通的。所以第三種境界,就留給其他人吧....
推薦資源
1 《機器學習實戰》
- 推薦指數:★★★★★
- 推薦理由: 理論、算法都有,比較好懂
- 推薦指數:★★★★☆
- 推薦理由:權威大拿帶你飛,還有什么理由不上車?
3 《推薦系統實踐》
- 推薦指數:★★★☆☆
- 推薦理由:如果是想做個性化推薦,那么必須要看看這本書!
4 Spark MLLib官方文檔以及example代碼樣例
- 推薦指數:★★☆☆☆
- 推薦理由:官方文檔大體上知道有什么內容就行,主要是推薦看看example里面提供的代碼,能幫助少走不少彎路。