今年是我工作的第四年,一路走來磕磕絆絆,想把自己的學習和工作路徑做一份總結,也希望這份總結能夠幫助那些想成為算法工程師的同學。 這一次不是21天,也不是3個月速成班,而是需要三年! 我是以一個一線互聯(lián)網公司對算法工程師的要求寫的這份總結和指南,如果你只是想渾水摸魚,急功近利,那么我寫的東西肯定是不適合你的。 在這三年里,我面試了大大小小互聯(lián)網公司15家左右,收割了包括bat在內的大部分offer。當然,有幾份offer是面試多次才獲取的,比如百度,阿里等。 剛畢業(yè)的時候去面試死的很慘,到后期能力提升上來了,面試也就容易了,也形成了一套自己的面試套路:刷題! 因此這篇文章皆在表達以下幾個目的:
需要說明的是:文章表達的只是我個人的理解,如果你的理解與我的有出入,那么純屬“不巧合”,以我為準(捂臉???♀?)! 同時,我是假設你與我一樣的基礎:沒有數學和計算機基礎,但是至少有本科學歷 這樣的前提條件下來寫的。 此處我不想針對學歷做任何討論,現(xiàn)實的世界就是沒有學歷你將寸步難行,找工作尤為明顯。 我規(guī)劃的學習路線并不是嚴格按照我當初自學的方法來進行的,因為我當初走了很多彎路,踩了很多坑。在閱讀這份總結前需要一點備注信息:
我們把整個學習路徑分為三部分:
一、夯實基礎 算法工程師兩把斧,一把是數學,一把是計算機知識。所謂的算法無非就是應用計算機工具將數學知識應用到業(yè)務中。 但數學和計算機的知識包羅萬象,普通人即使終其一生也不可能學完或者學精整個學科。 對于算法工程師來說,我們只挑選最核心的知識來學習即可!下面直擊要害 數學
計算機
英文 至少要是大學六級的水平,雅思6.5分,閱讀小分6.5才算合格 我先來說英文,據我所觀察,英文是區(qū)分一個程序員是否優(yōu)秀的重要標志。你英文好不一定就能成為優(yōu)秀的程序員,但是英文不好很大概率上你不可能成為優(yōu)秀的程序員。 算法這個行業(yè)發(fā)展太快速了,日新月異,大部分資料都是英文的,發(fā)表的paper也肯定都是英文的。中文的翻譯書籍往往還沒出版,英文的版本就已經迭代好幾次了。英文不好,你上不了Google,上不了github,上不了stackoverflow,上不了這個星球上任何優(yōu)秀的程序員網站。 很大程度上,英文能力會對你的學習工作視野產生決定性影響。說到這,很多同學都寒心了,“我就是英文不好,咋辦”。 其實大部分城學員英文都“不好”,包括那些你看到的優(yōu)秀程序員! 但是有一點他們肯定很厲害,就是英文閱讀的能力。沒錯,對于大部分程序員來說,只要閱讀過關,英文就夠用了,如果聽力還過關,那基本上足夠用了,如果寫作業(yè)過關,那就很厲害了,如果口語也過關,那就忽略我寫的這一段,你將會體驗英文給你帶來的巨大優(yōu)勢! 數學 數學是算法的“靈魂”! 數學學不好會比英文還糟糕,英文是錦上添花,數學是你能力的上限!其實發(fā)展到今天,機器學習等知識涉及到是數學知識實在是太多了,我自身也沒有完全搞清楚或者說將全部的知識弄明白,只能結合自己學習過的以及身邊一些案例來給大家做一個推薦 統(tǒng)計概率 統(tǒng)計學和概率論經常被放在一起使用,直到現(xiàn)在還有很多人在區(qū)分機器學習和統(tǒng)計學,有所謂的“統(tǒng)計派”和“計算機派”(參考吳恩達以及他的恩師喬丹,不是打籃球的那個)。 統(tǒng)計學涉及的回歸分析是機器學習里最簡單的線性模型,概率論里面的概率分布和概率計算是機器學習演算的一個核心。機器學習模型對樣本進行預測的都是給出一個概率值,表達不確定性! 如果你是文科生,數學又很弱的話,我推薦你學習《商務與經濟統(tǒng)計》。這本書淺顯易懂,不會像國內教材那樣枯燥乏味,每一章節(jié)都會含有一個具體的商業(yè)案例,大量的習題(雖然習題很弱)。每天學習1-1.5個小時,差不多30天能學完。最難的章節(jié)屬于假設檢驗以及線性回歸那里,單也僅僅是相對的難而已,比起機器學習,它毛都不算! 如果你是理科生或者數學功底不錯的話,我推薦你學習陳希孺的《概率論與數理統(tǒng)計》。很傳統(tǒng)很經典的中國式教材,但是寫的內容實在是好,前后銜接的恰到好處,由淺入深,概念解釋的直白明了,涵蓋了以后機器學習所需要的幾乎全部概率知識。缺點就是純教科書班的書籍,讀起來略微枯燥。 推薦星級 《商務與經濟統(tǒng)計》 五星 《概率論與數理統(tǒng)計》 四星 建議學習周期:40天 微積分 我只推薦一本書《普林斯頓微積分讀本》和一門簡單的課程《微積分的本質》。我看過很多微積分的教材,包括同濟的《微積分》以及《托馬斯微積分》,但是都沒有《普林斯頓微積分讀本》更能吸引我的注意力。這本書淺顯易懂,書籍看起來很厚,但是學習起來并不費力,作者的寫作觀點很友好,風格較為輕松卻又不失嚴謹。建議如果基礎較差的同學可以“重頭來過”,好好的跟學一遍!我對泰勒展開式那一章節(jié)尤為記憶深刻,作者先是引入了一個及簡單的案列,接著就此案列進行了深入的講解,一目了然。 《微積分的本質》是三藍一棕出品的簡短視頻,通過酷炫的動態(tài)PPT演示了微積分的過程。但是真的僅僅是入門級別的視頻,就當做課外“讀物”學一學吧 推薦星級 《普林斯頓微積分讀本》 四星 《微積分的本質》 四星 建議學習周期:60天 線性代數 線性代數到底怎么學,我真的一直沒有找到很好的方法。我看過很多的書籍和視頻,包括同濟的那一本很薄的書,我一度以為那是本很好的教材,直到我在網易云課堂上學習了MIT的線性代數課程,像是打開了新世界的大門,原來線性代數背后的理論并不是憑空記憶而來的。后來又學習了《線性代數的本質》這套課程,那令人震驚的動畫演示線性變換至今令我記憶猶新! 推薦星級 《MIT線性代數》 五星 《線性代數的本質》 五星 建議學習周期:20天 計算機技能 PYTHON 如果你想入門計算機,首先應該先學一門語言,它會是你使用最多的一個工具。而PYTHON幾乎是最簡單的最適合新手學習的一門語言。我個人認為學習PYTHON需要包含以下幾個方面:
任何一門語言的學習都離不開語法本身,Python也不列外,但相對于其他語言,Python語法就簡潔明了。我看過很多PYTHON入門的書籍,要說好的我就只推薦兩個,一本是《LEARN PYTHON THE HERD WAY》,另一本是《PYTHON編程:從入門到實踐》。如果你每天抽出兩個小時來學習,一般兩個星期就能搞定PYTHON語法。 接下來我推薦學習的可能與你在其他地方看到的不一樣,我希望你能學習一些計算編程思維,再直白一點就是學習一點數據結構和算法。 隨著我自己工作經歷的增長,越來越發(fā)現(xiàn)編程思維(數據結構和算法)對于工作以及思考問題的重要性,所以直到現(xiàn)在我仍然在不斷的惡補之前落下的數據結構和算法。因此你不妨在一開始學習階段就來彌補一些! 我給你推薦的是一本書以及這本書配套的課程,這是我看過的最好的教程: 《PYTHON編程導論》以及EDX上開設的專門的對應視頻課程。這套教程除了講解PYTHON基礎知識外,還會講解常用的編程算法,包括查找,排序,搜索等等,可以說是相當好的入門計算機課程。 PYTHON是一門非常綜合的語言,被發(fā)明出來也不是為數據挖掘或者數據分析專用的。PYTHON能夠成為“AI第一語言”得益于它眾多的第三方庫,因此我們還需要學習一下專門用來進行數據處理的第三方庫:pandas、numpy、matplotlib。唯一推薦的書籍就是pandas作者寫的《利用PYTHON進行數據分析》,這本書介紹了幾乎三個庫主流的用法,相當實用。唯一的缺點就是編排比較亂,學的很零散,所以需要你自己好好的總結一番! 推薦星級 《PYTHON編程:從入門到實踐》 四星 《PYTHON編程導論》 五星 《利用PYTHON進行數據分析》4星 建議學習周期:30天 機器學習 我們宗旨是成為一名算法工程師,現(xiàn)代意義上算法工程師一般就是指機器學習工程師。在第一年的夯實基礎階段,我們并不能完全深入的學習完機器學習的知識,但是入門還是一定要具備的。機器學習數學基礎三板斧:微積分、線性代數、統(tǒng)計概率! 所以你可以看出來,為什么我花了很大篇幅和你講要認真學習這三門課! 那么入門階段該怎么做呢? 很簡單,一門課一本書。 一門課 吳恩達《MACHINE LEARNING》公開課 這真的是地球上最好的機器學習入門課程了!我無法用文字來推薦它,總之你就記得學習機器學習看著門課程就絕對錯不了。網上一大堆關于這門課的資料、評價、筆記等等,數不勝數! 一本書 《Introduction to Data Mining》(數據挖掘導論) 很遺憾,我并沒有推薦周老師的書,也沒有推薦韓老師的書(如果你不認識兩位老師,那就忽略這句話)。 數據挖掘導論是我學習過的最好的入門級別的教材,與其它一上來就開始講解模型的書籍相比,這本書會從最開始的數據準備,數據處理講解,給與新手最好的入門方式。其內容板塊安排的又是相當的合理,尤其是決策樹和異常檢測這兩章,我覺得是相當的精彩,手把手教你推導一個決策樹!有一個章節(jié)我覺得可以不學,就是關聯(lián)分析,似乎可能好像仿佛大約已經沒人使用這種技術了,雖然我當初仔細的學習過,而且這本書寫的也相當的好,但是真的沒應用過,都快忘記的差不多了。請君自行判斷~
|
|
來自: 昵稱42427018 > 《算法與培訓》