初識(shí)語(yǔ)言
學(xué)習(xí)計(jì)算機(jī)語(yǔ)言就像學(xué)一門自然語(yǔ)言,首先要有交流/應(yīng)用的動(dòng)力,其次是要掌握基本的語(yǔ)法規(guī)則和語(yǔ)匯,之后是情景中不斷演練和改進(jìn)。語(yǔ)言能力無(wú)止境,編程藝術(shù)也是這樣。
雖然我是個(gè)地地道道的理科生,卻一直對(duì)碼代碼這種事情特別懼怕,曾經(jīng)有C++的一門課,常常是想了半天,湊出了幾行,一按編譯鍵,又是各種bug,就這樣留下了些心理障礙。從大一到了現(xiàn)在大四,終于有一種“紙上得來(lái)終覺(jué)淺,絕知此事要躬行”的感悟,下定決心要學(xué)會(huì)一門編程語(yǔ)言。
大四上學(xué)期,學(xué)校的事情已經(jīng)不多了,便咬咬牙修了一門名叫《統(tǒng)計(jì)方法選講》的課,名字很無(wú)辜,內(nèi)容卻是實(shí)實(shí)在在的Statistical Learning, 而且還要將上課學(xué)到的算法自己寫程序?qū)崿F(xiàn)。統(tǒng)計(jì)方面一般會(huì)選擇R,不過(guò)在Statistical/Machine Learning領(lǐng)域會(huì)更多地用到Matlab。幸好是從R這樣一個(gè)入門難度極低的工具入手,我也得以發(fā)出“由也升堂矣,未入于室也”這樣的感慨,不然,可能連“升堂”的機(jī)會(huì)都沒(méi)有。
可以說(shuō),這個(gè)學(xué)期學(xué)習(xí)R的過(guò)程還是很愉快,也很有成就感的。于此同時(shí),我也感覺(jué)到國(guó)內(nèi)大學(xué)對(duì)于編程教學(xué)還有相當(dāng)程度的缺失,一般理科會(huì)教C/C++,文科教VB,相對(duì)會(huì)在各類研究和工作中用到的Matlab, Python, R等來(lái)說(shuō)并不太實(shí)用。而這些工具呢,又大多只能靠學(xué)生自學(xué)掌握。我想,對(duì)于編程類內(nèi)容,自我實(shí)踐、探索確實(shí)相當(dāng)重要,但可能會(huì)花費(fèi)更多的時(shí)間,或者停留在低水平而難以進(jìn)步,因此希望寫個(gè)帖子,把我的一些經(jīng)驗(yàn)分享給大家,也希望能得到大家的一點(diǎn)建議,共同進(jìn)步。
學(xué)習(xí)資源介紹
RStudio/ R Markdown
為什么把它們放在第一個(gè)呢,是因?yàn)镽Studio可以提供更優(yōu)良的編程環(huán)境,R Markdown(必須有RStudio才可以實(shí)現(xiàn))可以方便的將你的代碼、運(yùn)算結(jié)果及文字說(shuō)明輸出成HTML, PDF等文件格式。這兩者相當(dāng)于提供了一個(gè)良好的學(xué)習(xí)環(huán)境,有事半功倍的效果。《統(tǒng)計(jì)建模與R軟件》薛毅 陳立萍 編著
看這本書作為學(xué)習(xí)R語(yǔ)言的入門指南真是再好不過(guò),最好能拿著紙質(zhì)書,便于翻閱查看。大致把這本書過(guò)一遍,能夠掌握R基本語(yǔ)法和語(yǔ)匯,社會(huì)科學(xué)對(duì)統(tǒng)計(jì)的應(yīng)用可以滿足。
這本書的優(yōu)點(diǎn)有這幾個(gè):
條理清晰,章節(jié)分布合理,不會(huì)出現(xiàn)看不明白的地方,便于自學(xué)。
內(nèi)容包含比較全面,主成分分析、聚類分析、蒙特卡洛模擬等方法也都會(huì)提到。
看過(guò)這本書的人多,習(xí)題遇到困難能很方便得到解答。An Introduction to Statistical Learning with Application in R
這本是統(tǒng)計(jì)學(xué)習(xí)方面入門級(jí)別的書,即使數(shù)學(xué)基礎(chǔ)一般也能容易看懂。The Elements of Statistical Learning
這本是統(tǒng)計(jì)學(xué)習(xí)方面較為高級(jí)別的書,部分內(nèi)容數(shù)學(xué)要求比較高。好在它有一個(gè)網(wǎng)站,書中所用的數(shù)據(jù)都可以在該網(wǎng)站上下載到,如果要深入學(xué)習(xí)此書,最好能邊學(xué)邊練,結(jié)合書上所講算法寫程序,對(duì)比書中結(jié)果。Coursera專項(xiàng)課程:Data Science Specialization
這個(gè)專項(xiàng)課程是由約翰霍普金斯大學(xué)開設(shè)的,一共分了九門小課程,優(yōu)缺點(diǎn)都比較突出(可以說(shuō)優(yōu)缺點(diǎn)其實(shí)是對(duì)立的):
優(yōu)點(diǎn):每門都只有一個(gè)月,容易堅(jiān)持學(xué)完,也方便注冊(cè)學(xué)習(xí)新的課程(時(shí)間自由度很好)。
缺點(diǎn):分成九門課之后內(nèi)容比較散,其中有幾門課相對(duì)比較無(wú)趣和倉(cāng)促。
作為R語(yǔ)言入門,我跟了一個(gè)月的R Programming(第二門),后來(lái)因?yàn)樯险n學(xué)到機(jī)器學(xué)習(xí)的內(nèi)容所以又學(xué)了一門Practical Machine Learning(第八門),中間跳掉了這么多門確實(shí)感覺(jué)基礎(chǔ)不夠,之后還打算把Getting and Cleaning Data, Exploratory Data Analysis, Developing Data Products這三門也學(xué)一下,這樣估計(jì)可以從獲取整理數(shù)據(jù)、繪制圖表、建模及最終做出產(chǎn)品有一個(gè)完整的了解,也算為大四下能好好寫一篇畢業(yè)論文打個(gè)基礎(chǔ)吧。
PS:這個(gè)專項(xiàng)課程專門開發(fā)了一套叫swirl的R package,用一句話概況就是用R來(lái)學(xué)R語(yǔ)言,通過(guò)交互方式介紹R函數(shù)用法和一些非常好用的包(比如繪圖里的ggplot2等等),專項(xiàng)課程里將此作為補(bǔ)充和加分內(nèi)容,但不上課也可以下載下來(lái)使用學(xué)習(xí),具體方法點(diǎn)鏈接進(jìn)去看即可。
Coursera: Data Analysis and Statistical Inference
這門課在MOOC上的評(píng)價(jià)很好。或者說(shuō)上面那個(gè)Data Science專項(xiàng)課程經(jīng)常受到吐槽,不夠我已經(jīng)覺(jué)得學(xué)到了很多東西(條件是每星期的Quiz認(rèn)真做,Project積極完成,研究Peer寫的程序),想必這個(gè)評(píng)分超高的課程一定在課程設(shè)計(jì)上更有趣味性吧。這門課從名字上來(lái)說(shuō)就是統(tǒng)計(jì)推斷的內(nèi)容,鑒于我自己的統(tǒng)計(jì)知識(shí)和應(yīng)用能力也不夠好,有空的時(shí)候我也打算學(xué)習(xí)一下這門課。Coursera: Machine Learning
Coursera上元老級(jí)別課程,會(huì)講更多機(jī)器學(xué)習(xí)的理論知識(shí),編程要求用Matlab, 這里就不做過(guò)多介紹。我還打算更多地學(xué)習(xí)這個(gè)領(lǐng)域的知識(shí),已計(jì)劃跟12月28日馬上開班的課程,持續(xù)兩個(gè)多月時(shí)間。
嗯,不知不覺(jué)已經(jīng)寫了這么多了,現(xiàn)在編程還不算溜,但興趣很大,希望未來(lái)一年里可以掌握R, Matlab, Python這三把利器。不多說(shuō)了,學(xué)習(xí)去了!