機(jī)器學(xué)習(xí)在很多眼里就是香餑餑,因?yàn)闄C(jī)器學(xué)習(xí)相關(guān)的崗位在當(dāng)前市場(chǎng)待遇不錯(cuò),但同時(shí)機(jī)器學(xué)習(xí)在很多人面前又是一座大山,因?yàn)榘l(fā)現(xiàn)它太難學(xué)了。在這里我分享下我個(gè)人入門機(jī)器學(xué)習(xí)的經(jīng)歷,希望能對(duì)大家能有所幫助。
這篇文章不會(huì)有太多機(jī)器學(xué)習(xí)方面的專業(yè)知識(shí)
更多的只是學(xué)習(xí)經(jīng)歷與經(jīng)驗(yàn)分享
機(jī)器學(xué)習(xí)工程師到底值幾斤幾兩呢
入門之前先來讓大家心里看個(gè)數(shù)據(jù),機(jī)器學(xué)習(xí)工程師在市場(chǎng)上到底值幾斤幾兩呢?我們?cè)诶淳W(wǎng)上搜索機(jī)器學(xué)習(xí)關(guān)鍵字,得到了下面的結(jié)果:
可以看出來,這個(gè)待遇在當(dāng)前 IT 行業(yè)中還是很不錯(cuò)的,究其原因,是由于這個(gè)市場(chǎng)目前是供不應(yīng)求,人才緊缺,自然而然與之相關(guān)的崗位待遇會(huì)相對(duì) IT 行業(yè)中的其他崗位較高。
我是如何入門的呢
入門前的基礎(chǔ)
先來分享下在開始入門前我的基礎(chǔ)吧,先羅列下當(dāng)時(shí)我所掌握掌握的知識(shí)吧。
掌握了 Java SE
本科所學(xué)的微積分,線性代數(shù),概率論中的知識(shí)忘得所剩無幾
看了上面兩點(diǎn),你會(huì)發(fā)現(xiàn),當(dāng)時(shí)的我其實(shí)除了掌握 Java SE 之外,連 Python 也不會(huì),此外,微積分,線性代數(shù),概率論中的知識(shí)我也基本上全都還給了大學(xué)老師了。
這時(shí)你再想想你當(dāng)前的情況,你是不是發(fā)現(xiàn)你的情況跟我很像,甚至?xí)任业那闆r還好呢。
像我這樣的條件都可以入了門,你們有什么理由無法入門呢?
入門過程中
首先說明一點(diǎn),我個(gè)人在入門過程中經(jīng)過了有看過視頻、也有看過書,看過博客,也有直接做一些項(xiàng)目,這些過程是交互進(jìn)行的,現(xiàn)在我將這些按照相對(duì)順序來介紹下。
聊聊Python
在當(dāng)時(shí)Python在機(jī)器學(xué)習(xí)領(lǐng)域已經(jīng)使用非常多了,另外Python除了也可做機(jī)器學(xué)習(xí)外,還可以做后端(如Django/Flask等)。所以我首先學(xué)習(xí)的是 Python,在準(zhǔn)備學(xué)習(xí)它的時(shí)候,我最開始采取的方式是看教學(xué)視頻,但是發(fā)現(xiàn)太耗時(shí)了,所以看了兩節(jié)之后果斷放棄,進(jìn)而我發(fā)現(xiàn)了廖雪峰關(guān)于Python的教程,看博客或者看書的方式會(huì)相對(duì)比看視頻快很多,由于我個(gè)人有 Java 編程的基礎(chǔ),所以在看廖雪峰關(guān)于 Python 的教程時(shí)相對(duì)容易點(diǎn)。這里建議如果沒有任何編程基礎(chǔ),建議還是選個(gè)Python的入門視頻來學(xué)習(xí)。
如果說單純的學(xué)習(xí)一門語(yǔ)言的話,這水其實(shí)是很深的,但對(duì)于我們大多數(shù)人來說,尤其是入門的時(shí)候,我們并不需要將Python的方方面面都學(xué)會(huì),我們只需要有重點(diǎn)的掌握Python我們所需要的幾個(gè)部分就好,剩下的我們可以在之后工作項(xiàng)目中進(jìn)步學(xué)習(xí)和加深。
對(duì)于要入門機(jī)器學(xué)習(xí)的同學(xué)們,我這里整理下前期Python所需要學(xué)習(xí)的部分:
Python語(yǔ)法基礎(chǔ),包括數(shù)據(jù)類型和變量、條件控制語(yǔ)句(if else、for、while)、列表(list)、集合(set)、字典(dict)、元組(tuple)等
面向?qū)ο蟛糠郑ê瘮?shù)的使用、函數(shù)的多種參數(shù)、匿名函數(shù)、類和實(shí)例、繼承和多態(tài)等
Python高級(jí)特性,包括切片、迭代、列表生成式、字典生成式、迭代器、生成器等
IO操作及異常處理,包括讀寫文本文件、讀寫二進(jìn)制文件、異常捕獲和處理等
常用的內(nèi)置模塊,包括 datetime、os、system、re等
除了以上的關(guān)于Python的基礎(chǔ)外,還有一些第三方模塊我們需要掌握的。由于在使用機(jī)器學(xué)習(xí)算法時(shí),經(jīng)常需要處理數(shù)據(jù)以及可視化結(jié)果。在這里推薦以下幾個(gè)第三方模塊:
pandas,數(shù)據(jù)分析必備神器,功能眾多,前期我們只需要掌握它的一些基本用法就OK
matplotlib,Python中眾多數(shù)據(jù)數(shù)據(jù)可視化的一個(gè)基礎(chǔ)庫(kù),能夠使用它繪制基本圖形即可
對(duì)于我來說,這些第三方模塊都是在工作的時(shí)候?qū)W習(xí)的,并不是剛開始就學(xué)習(xí)的。以我的經(jīng)驗(yàn)給大家指出一個(gè)陷阱,在我們?nèi)腴T階段,不建議大家剛開始就深入學(xué)習(xí)這些模塊的底層,我的原則是:先學(xué)會(huì)使用,再研究原理。以 pandas 為例,pandas 底層用到了 numpy、scipy、matplotlib,如果你要先系統(tǒng)地把這些底層所有的知識(shí)學(xué)習(xí)一遍,你會(huì)發(fā)現(xiàn)在你有限的時(shí)間內(nèi),你根本學(xué)不完,即便你有這么多時(shí)間去學(xué)完,你會(huì)發(fā)現(xiàn)學(xué)了后面,忘了前面。
聊聊機(jī)器學(xué)習(xí)算法課程
在掌握了 Python的基本用法后,我開始尋找學(xué)習(xí)機(jī)器學(xué)習(xí)的資料,當(dāng)時(shí)的情況是市面上并沒有眾多關(guān)于這方面的培訓(xùn)機(jī)構(gòu),經(jīng)過各種搜集,最后選擇了吳恩達(dá)在 Coursera 上的機(jī)器學(xué)習(xí)課程。雖說課程語(yǔ)音是英文,但有中文字幕,所以看起來還是很方便的。在將吳恩達(dá)課程學(xué)完之后,你會(huì)對(duì)常用的機(jī)器學(xué)習(xí)算法有一個(gè)基本的了解。
這里列舉出課程中所講解的一些常用算法和內(nèi)容:
線性回歸
邏輯回歸
支持向量機(jī)
非監(jiān)督學(xué)習(xí)
降維、異常檢測(cè)
推薦系統(tǒng)
應(yīng)用機(jī)器學(xué)習(xí)建議
看了上面的各種算法,你可能會(huì)問,這么多聽起來很牛逼是算法,我的數(shù)學(xué)基礎(chǔ)(微積分、線性代數(shù)、概率論)不好,能聽的懂么?
在入門的時(shí)候,不建議大家將所有的數(shù)學(xué)知識(shí)全都學(xué)一遍,再來學(xué)習(xí)機(jī)器學(xué)習(xí)算法。一是時(shí)間長(zhǎng),而是學(xué)了不用就忘了。 選擇一個(gè)好的視頻教程,你可以事半功倍,,吳恩達(dá)老師課程的一個(gè)優(yōu)點(diǎn)就在于他是專門針對(duì)我們這類的人群的,他的視頻中不會(huì)有很多數(shù)學(xué)公式推導(dǎo),但是仍然可以將這個(gè)算法跟你講解清楚。
此外,***大學(xué)林軒田教授也有專門的機(jī)器學(xué)習(xí)視頻(包括兩部分:基石與技法)。這個(gè)視頻在國(guó)內(nèi)評(píng)價(jià)也較高,有興趣的也可以跟著這個(gè)視頻來學(xué)習(xí)。
關(guān)于吳恩達(dá)以及林軒田的機(jī)器學(xué)習(xí)相關(guān)的視頻課程,之前已經(jīng)有過分享,需要下載的請(qǐng)見:資源 | 2018年,你想要的機(jī)器/深度學(xué)習(xí)資料在這里
聊聊機(jī)器學(xué)習(xí)書籍
在學(xué)習(xí)了吳恩達(dá)老師的課程后,可以再讀一些相關(guān)的書籍來加強(qiáng)對(duì)機(jī)器學(xué)習(xí)的理解,當(dāng)時(shí)我買了挺多的書籍,有一本書叫做《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》,在這本書里會(huì)教你使用 Python 來實(shí)現(xiàn)常用的一些算法,當(dāng)時(shí)按照書上的講解手動(dòng)敲了一些算法的實(shí)現(xiàn),當(dāng)你手動(dòng)實(shí)現(xiàn)后,你會(huì)發(fā)現(xiàn)你對(duì)它的理解會(huì)更深了。
在實(shí)現(xiàn)書本上的一些算法時(shí),會(huì)遇到某些算法的原理不太明白的地方,由于自己的數(shù)學(xué)知識(shí)(微積分、線性代數(shù)、概率論)基本上都還給了大學(xué)老師了,系統(tǒng)的去學(xué)習(xí)每個(gè)模塊是非常耗時(shí)的,這時(shí)候采取的策略是“缺啥補(bǔ)啥”,也就是說發(fā)現(xiàn)哪方面的知識(shí)和公式不太明白,就去查閱與之相關(guān)的資料。
在當(dāng)前,如果你想購(gòu)買相關(guān)書籍,我可以再推薦兩本給你,一本是周志華的《機(jī)器學(xué)習(xí)》(通常也叫西瓜書),這本書在我學(xué)習(xí)的時(shí)候還沒出版;另一本是李航的《統(tǒng)計(jì)學(xué)習(xí)方法》。
聊聊如何通過工作/比賽提高水平
在掌握了Python的基本用法以及對(duì)機(jī)器學(xué)習(xí)有了基本了解之后,當(dāng)時(shí)的實(shí)習(xí)工作有一部分是使用機(jī)器學(xué)習(xí)算法來去識(shí)別用戶的評(píng)論是否違法,也就是一個(gè)二元分類問題。最開始的時(shí)候同閱讀同事實(shí)現(xiàn)的Python代碼,試圖去搞明白每一行的含義,也就是在這個(gè)時(shí)候,自己開始查閱pandas 和 sklearn相關(guān)的文檔,這樣最后不僅搞明白了同事的代碼,自己對(duì) pandas 和 sklearn 基本的用法也有了一個(gè)認(rèn)識(shí)。
這里多說兩句,掌握了 pandas 后,在處理小數(shù)據(jù)量的時(shí)候會(huì)非常得心應(yīng)手(如果數(shù)據(jù)量大的話,會(huì)非常慢);sklearn 是一個(gè)非常優(yōu)秀的開源的機(jī)器學(xué)習(xí)Python庫(kù),這個(gè)庫(kù)實(shí)現(xiàn)了很多機(jī)器學(xué)習(xí)算法,并且提供了非常詳細(xì)的官方文檔,認(rèn)真閱讀官方文檔可以收獲很多。如果你英文不太好的話,可以閱讀相應(yīng)的中文文檔。
如果說自己沒有實(shí)習(xí)或工作機(jī)會(huì),我推薦你去參加kaggle比賽,kaggle 是一個(gè)提供數(shù)據(jù)挖掘相關(guān)的比賽平臺(tái),在這里會(huì)有很多相對(duì)接近現(xiàn)實(shí)生活的比賽,此外,也會(huì)有很多大神分享自己的思路、做法和代碼,通過閱讀這些代碼也能快速的提高自己的水平。
入門后的體驗(yàn)
在入門了機(jī)器學(xué)習(xí)之后,在實(shí)際工作中,絕大多數(shù)的情況下你并不需要去創(chuàng)造一個(gè)新的算法。另外,大多數(shù)時(shí)間你也不是在去研究別人的算法時(shí)如何寫出來的,而是處理數(shù)據(jù),運(yùn)用現(xiàn)有的第三方庫(kù)去跑模型、調(diào)參數(shù)。聽完我說的這些,你是不是很震驚,高大上的機(jī)器學(xué)習(xí)工程師在實(shí)際工作中大多數(shù)時(shí)間竟然是去洗數(shù)據(jù),調(diào)參數(shù)。但事實(shí)就是如此,除非你在一線互聯(lián)網(wǎng)公司,而且還是某些部門,你可能會(huì)需要自己重新去實(shí)現(xiàn)某個(gè)算法,否則其他公司的情況大多都是差不多的。
入門后再來聊一聊數(shù)學(xué)知識(shí)在機(jī)器學(xué)習(xí)中的作用,雖說你數(shù)學(xué)知識(shí)不好,一樣可以調(diào)用第三方庫(kù)的模型。但是如果你想要深入理解算法,數(shù)學(xué)的底子還必須是有一點(diǎn)的。如果你要入研究這個(gè)領(lǐng)域,你必須要撿起來你忘掉的數(shù)學(xué)知識(shí)。此外,在面試時(shí),這些算法的原理相關(guān)的知識(shí)還是必問的。
有時(shí)候并不是你的能力不夠,也并不是你不夠努力,只是缺少了一個(gè)正確的引導(dǎo)而已。
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8428瀏覽量
132835 -
python
+關(guān)注
關(guān)注
56文章
4801瀏覽量
84861
原文標(biāo)題:我是如何入門機(jī)器學(xué)習(xí)的呢
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論