想轉專業機器學習(人工智慧)需要學哪些課程?

電氣專業 想學習數據分析 應該學習哪些課程?需要看哪些書?


利益相關:樓主以應用數學和運籌學的背景轉到博士德國海德堡大學機器學習、計算機視覺這倆個數據分析(人工智慧)的分支里來,希望對想入門數據科學和人工智慧的朋友們有點借鑒作用。

首先如果對人工智慧、數據科學還不是很了解的同學,可參考以下綜述:

大話「人工智慧、數據科學、機器學習」--綜述 - 知乎專欄

先說點寬泛的、上綱上線的東西。(要乾貨的可以直接跳至後半部分)

機器學習,大數據這些新興專業,是隨著工業界與日俱增的需求而隨之出現的(中國最近批准了第一批試點的幾十所高校開設數據科學專業)。其實任何專業都是這樣一個需求導向的過程,包括微電子,計算機,還有什麼房地產專業。。你說幾十年前你們聽說過這些專業么?

自然科學如數學、物理、化學、生物長盛不衰,是有其道理的,這也是為什麼我們初高中我們都在學這些東西。而某些專業,也會隨著市場需求的銳減而減少甚至消失。

這些專業名詞在剛出現的時候往往是「憑空造詣」或者是強加術語,然而知識是需要積累的,不是憑空出現的,也就證明了如大數據、機器學習這樣的東西,其實是科研圈已經研究或者已用了很多年了,然後市場需求強烈,為了順應市場需求,大批學校爭相決定開這個專業,於是喊一幫教授或院士過來拍板,這個專業需要哪些基礎課程,我們就把這些基礎課放進來,這也是我下面的回答要強調的。(因此「需要學哪些課程」這個問題最好的答案,就是去一個名校的數據科學或機器學習項目里看課程設置,這裡我推薦一下UCL的Machine Learning Msc)

本文要講的,不包括資料庫那個方向的大數據。

簡單的說,原理和基礎都在數學這邊,當然有很多偏應用和軟體使用的課程,這些直接大街上報個培訓班就能學會的技術含量不那麼高的東西,不在我的討論範圍內。我要討論的,是如何系統的學習,然後自己能編出這些處理大數據的程序或軟體,我想,這才能稱為一個合格的數據科學家。

-----------------------------------------------

好了,下面是乾貨。(已經過多次私人諮詢過程中,多個名校數據科學/人工智慧碩士、博士項目的先修課程所驗證)

1, 微積分(求導,極限)和線性代數(矩陣表示和運算)是基礎中的基礎;

2, 數據處理當然需要編程了,因此C/C++/Python任選一門(推薦Python,因為目前很多庫和Library都是用python封裝),數據結構可以學學,讓你編程更順手更高效,但是編程不是數據處理的核心,相對而言演算法還來的重要一些,因此建議再上一門演算法課。

當然了,樓主所在的圖像處理界,熟練使用matlab或者Python調用opencv庫是必要條件,但是again他們只是工具,業餘時間自學,多練練就沒問題。有同學一直提問用R行不行,樓主補充一點,用什麼編程語言很大部分取決於你的核心演算法會調用什麼已有的庫函數,比如樓主的科研裡面核心演算法往往是MIP(混合整數規劃)問題需要調用Cplex庫函數,因此C/C++/Python/Java這些和Cplex介面良好的語言都可以拿來用,這時候R就別想了。

另外雖然圖像處理界一些open-source的code都用C++寫的,但是鑒於使用方便都會提供Python的介面,因此需要用到這些code的話,用Python調用比較方便;但是,如果是高階骨灰級玩家,需要修改甚至自己寫源代碼,那麼還是推薦C/C++,因為他們的速度最快。

3. Mid-level的課程,概率論+統計(很多數據分析建模基於統計模型),線性規劃+凸優化(或者只學一門叫numerical optimization,統計到最後也還是求解一個優化問題,當然也有純優化模型不用統計模型的),Machine Learning(其實機器學習,通篇都是在講用一些統計和優化來做clustering 和 classification這倆個人工智慧最常見的應用),學到這裡,你基本就會發現,學這一門課中間會穿插著很多其他課的內容。恩,知識總是相通的嘛,特別是這些跨專業的新興學科,都是在以往學科的基礎上由社會需求發展而來。

學到這裡,其實你已經能看懂並且自己可以編寫機器學習裡面很多經典的案例了,比如regression,clustering,outlier detection。

關於優化類課程的綜述,歡迎關注我的專欄:

[運籌帷幄]大數據和人工智慧時代下的運籌學 - 知乎專欄

運籌學(最優化理論)如何入門? - 知乎

4. 再高階的課程,就是比較specific的課程了,可以看你做的項目或者以後的concentration再選擇選修,比如:Probabilistic Graphical Models(概率圖模型), Nolinear Optimization(非線性優化), Integer Programming(整數規劃) ,計算機視覺,模式識別,視頻追蹤,醫學圖像處理,增強學習,深度學習, 神經網路,自然語言處理,網路信息安全,等等等等。

再比如有用偏微分方程做圖像處理的(比較小眾),那麼這時候你肯定要去學一下偏微分方程了,大都是以科研為主導的。科研嘛,為了發文章,就是要嘗試前人沒嘗試過的方法,萬一效果不錯呢,就是一篇好paper了,對吧。

注意這裡是偏機器學習或計算機視覺的,如果是自然語言處理,那麼可能還要自學一些語言學(句法等結構)的基礎課。

正如我說的,學到Mid-level,就已經具備絕大部分理論基礎了。然後做幾個實際項目,就能上手然後就可以「吹噓」自己是搞數據科學的,就能找到一份工作了。要讀Phd搞科研,那麼高階課程必不可少,而且同一個topic你需要上好幾門課,並且你博士的課題,很可能只是一本書中一個章節裡面一小節里講的演算法,去改進他。

比如,樓主的博士課題就是mixed linear programming + discrete graphical models + markov random fields + regression + clustering + segmentation。

如果大家想申請AI、數據分析的碩士項目的話,強烈建議參考UCL Machine Learning 碩士項目的課程安排。

注意我不是在推薦大家申請這個項目,只是覺得這個碩士項目的課程安排非常好,由淺入深,各個應用方向也都有涉及,有足夠的選擇空間。

至於書目,沒有特別推薦的,但是建議看英文原版。另外直接翻牆Youtube看視頻課程,很多國際知名教授都很無私地把自己上課的視頻放在youtube上免費學習(搜索我上面列出的科目名字)。如果確實要樓主推薦,那就推薦海德堡大學歷史上最年輕的教授 Fred的機器學習視頻(我基本都看過):

https://www.youtube.com/playlist?list=PLuRaSnb3n4kSgSV35vTPDRBH81YgnF3Dd

另外一個教授給你上課的時候,開頭一般是會推薦書給你的(如果你確實喜歡看書的話)。當然了,翻牆是樓主suppose你們需要擁有的基本生存技能。

(註:以下再推薦一些視頻,受之以漁。多為graduate course,僅作演示目的)

1,Machine Learning by Prof. Nando de Freitas, 此視頻是其在UBC時13年所錄,後來跳槽去牛津計算機系了。

2,Deep learning at Oxford 2015 by Prof. Nando de Freitas, 跳槽到牛津所錄。

3,Probabilistic Graphical Models by Daphne Koller, 斯坦福大學計算機系教授

另外還有一些付費的學習網站,如Coursera,優點是結課後可以拿分數和證書,並且很多世界名校的教授在上面開課。

---------------------------------------------------------------------------

再羅嗦一下解決一個實際大數據問題的一般流程。比如一個生物醫學公司找到我,要求我做一個視頻裡面cell tracking的項目。(一幀既為一張圖片,假設500*500=25w像素,一個video算它1000幀,總共250 million像素,可以算大數據了吧?)具體流程:數學建模--設計演算法--用任意編程語言編寫演算法(其中會涉及到數據結構,即如何搭建程序使程序更加高效)--導入視頻數據到演算法里得出結果--根據結果的好壞改進演算法甚至模型(如此往複)。這裡我強調一下數學建模的重要性,為何要數學建模呢?的確很多naive的演算法完全不需要建立在數學模型之上,比如clustering裡面經典的EM演算法,是一個iterative method,基本一眼就能看出演算法的思路然後編程實現,所以稱之為naive。那麼基於數學模型上的演算法有何妙處呢?答案是一個好的數學模型,往往是被研究了幾十甚至幾百年的學科,比如圖論,很多性質都已經被研究得很透徹可以直接使用。回到我的這個例子,cell trancking,我可以建立一個network flow(網路流)的模型(其實也是基於圖論的模型),那麼這個network flow模型,是一個被研究了很久的領域,因此我可以直接使用很多很多已知的好定理或演算法來服務我的問題。另外很多時候,經典的數學模型裡面已有很多經典的演算法,比如network flow基於里的max flow/min cut theorem的演算法,如果能在其基礎上做改進,等於站在巨人的肩膀。因此這就是數學建模的重要之處。

往往同一個問題,從不同的角度去看可以有千百種數學建模方法,而不同的數學模型差別往往巨大,而數學建模又是解決一個實際問題的第一步,在這基礎上才考慮演算法和數據結構設計。因此,數學基礎在我看來是重中之重,也是我推薦學習的課程的核心。當然了,計算機系出生的朋友,數學這個層面學習得不是很深,比較偏向於演算法的設計和實現,是另外一個側重點。

關於入行後就業前景(包括第三條運籌學--演算法工程師),參見:

國內(全球)TOP互聯網公司、學術界超高薪的攬才計劃有哪些? - 知乎

中國計算機視覺的前途在哪?機器視覺工程師又何去何從? - 知乎

關於我對最優化理論在諮詢行業的應用,參見

Data Science/Analytics 出身,可以在諮詢行業做些什麼? - Ruobing Shen 的回答

也歡迎參加我2017.6.11號舉辦的「運籌學綜述」知乎live,探討關於運籌學、優化、AI的相關話題:

知乎 Live - 全新的實時問答(大數據人工智慧時代的運籌學-知乎Live)

最後是通往大洋彼岸高薪博士職位,以及人工智慧數據科學家的傳送門:

歐洲、北美、全球留學及數據科學深度私人定製諮詢,從此DIY - Ruobing Shen的文章 - 知乎專欄


謝邀,回答遲了,抱歉。回答問題之前我可以先跟你分享一下我好朋友的例子吧,看下能不能給你帶來一定的啟發。


好朋友:男生,大學本科學的是信管專業,跟計算機相關,本身他有一些統計、分析相關的基礎,畢業後也是進入一家公司做分析師,但是大學所學知識肯定不能滿足工作需求,於是從工作的第二個月他每天下班重新回到母校上晚自習,看跟數據分析相關的書籍(後來問了下:跟統計、SPSS等相關的專業書),一切都是靠自學的,沒人教,學習的勁頭遠遠超過了大學四年,後來他來北京去了一家大公司,名字就不說了,現在也在一家大公司,薪資都還不錯,發展也很不錯,能力也得到認可。我想說的是可能你希望一步快速成為分析師,但我還是建議一步一步積累相關的知識,當然這個過程你可以縮短時間,比如你可以在工作中快速積累、快速學習,但是該有的知識還是要有的,也要看你自己學習的速度,希望他這個例子可以給你帶來一些啟發吧。


言歸正傳,咱們談談如何學習數據分析。


1、學科知識:從數據分析涉及到的專業知識點上看,主要是這些:

(1)統計學:參數檢驗、非參檢驗、回歸分析等

(2)數學:線性代數、微積分等

(3)社會學:主要是一些社會學量化統計的知識,如問卷調查與統計分析;還有就是一些社會學的知識,這些對於從事營銷類的數據分析人員比較有幫助

(4)經濟金融:如果是從事這個行業的數據分析人員,經濟金融知識是必須的,這裡就不多說了

(5)計算機:從事數據分析工作的人必須了解你使用的數據是怎麼處理出來的,要了解資料庫的結構和基本原理,同時如果條件充足的話,你還能有足夠的能力從資料庫里提取你需要的數據(比如使用SQL進行查詢),這種提取數據分析原材料的能力是每個數據從業者必備的。此外,如果要想走的更遠,還要能掌握一些編程能力,從而借住一些專業的數據分析工具,幫助你完成工作。

……好好學習,雖然累,但是要堅持!

2、軟體相關:從事數據分析方面的工作必備的工具是什麼

(1)數據分析報告類:Microsoft Office軟體等,如果連excel表格基本的處理操作都不會,連PPT報告都不會做,那我只好說離數據分析的崗位還差的很遠。現在的數據呈現不再單單只是表格的形式,而是更多需要以可視化圖表去展示你的數據結果,因此數據可視化軟體就不能少,BDP個人版、ECharts等這些必備的,就看你自己怎麼選了。

(2)專業數據分析軟體:Office並不是全部,要從在數據分析方面做的比較好,你必須會用(至少要了解)一些比較常用的專業數據分析軟體工具,比如SPSS、SAS、Matlab等等,這些軟體可以很好地幫助我們完成專業性的演算法或模型分析,還有高級的python、R等。

(3)資料庫:hive、hadoop、impala等資料庫相關的知識可以學習;

(3)輔助工具:比如思維導圖軟體(如MindManager、MindNode Pro等)也可以很好地幫助我們整理分析思路。

最重要的是:理論知識+軟體工具+數據思維=數據分析基礎,最後要把這些數據分析基礎運用到實際的工作業務中,好好理解業務邏輯,真正用數據分析驅動網站運營、業務管理,真正發揮數據的價值。

希望能幫到你啊,希望你儘快成為一名優秀的數據分析師!!!


在分享自身經驗前,先分享以下網站,這網址列了 top 10 data science 相關的問題, https://www.quora.com/topic/Data-Science/faq ,裡面包含「什麼是data science」,「data scientist 主要是在做什麼」,「如何成為一個 data scientist」,等問題。 當我們更明白 「為什麼想當data scientist」之後,就能更進一步的詢問「如何成為 data scientist」,接著就能回答 「想學數據分析,需要學哪些課程」。

[以下純屬個人經驗分享]

想要做數據分析,需要熟悉的基礎知識太多了,包含了「multivariable calculus, linear algebra, probability, statistics, machine learning」等等。假設讀者尚未熟悉這些知識, 基本上,不可能也不建議把上述課程學習完畢後,才開始數據分析的工作。 筆者這邊建議,學習數據分析,最好也是最快的上手方式,就是採取 problem-based learning。也就是,(1) 選擇一個感興趣的問題 (2) 開始對該問題投入許多的心力去研究 (3) 在step2 中遇到問題,設法找到資源來解決。

更具體的建議:

(1) 先上 kaggle, https://www.kaggle.com,選 competitions ,在這頁面上, https://www.kaggle.com/competitions, 可以看到各種有趣的問題:

(2) 假設,我對 titanic 的問題充滿了興趣,並點選了他,就能看到以下簡介。

(3) 從簡介知道,他是要讓我們使用 python 或 R 來練習 binary classification的問題。 但是假設我不知道 binary classification 是啥? 所以我搜尋了一下,找到wiki 上的解釋: https://en.wikipedia.org/wiki/Binary_classification, 經過一番努力,終於明白這個練習,是要讓我們用機器學習的方法,來預測titanic 上的乘客,是否有存活下來。

(4) 理解了這個問題後,點選了「tutorials」,發現:

裡面有好多資源,假設我點了 titanic data science solutions python notebook ,

就會發現裡面有非常完整的代碼 https://www.kaggle.com/startupsci/titanic/titanic-data-science-solutions, 包含了 data processing 和 data inspection 的 package 「pandas」、繪圖工具「matplotlib、seaborn」、machine learning 的package 「sklearn」:

設法把這些代碼和分析邏輯都搞清楚,這樣對於machine learning & data science 就有初步的體驗了。

(5) 接下來,有兩條路可以選 (a) 再選一個 kaggle 上的 tutorial 的不同題目研究一次 (b) 開始找線上課程了解機器學習的原理: ex: Stanford Andrew Ng 的課程 http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearning, 林軒田教授的機器學習課程 (中文):http://www.csie.ntu.edu.tw/~htlin/mooc/


結語:數據分析、機器學習、人工智慧,涵蓋的知識層面太廣太深,所以會建議採取 problem-based learning 的方式,(1) 先選定問題 (2) 找到資源來解問題 (3) 更深入的去了解,解問題過程中,遇到的名詞與知識。


謝邀。

在先進技術逐漸融入自然學科的過程中,學科交叉現象已是大勢所趨。上次我們談到了機器學習方向的統計學知識的學習方法:如果概率統計水平不高,有哪些適合的概率統計書來學習機器學習? - 知乎

而對於數據分析在人工智慧領域的應用,本次 竹間智能 數據科學家 張旭,將分享一些AI方向必學的數據分析課程和相關知識,希望對有意進入該領域的同學有所幫助。

學習數據分析(AI方向)的課程前提,需要明確數據分析和數據科學的區別。數據分析算作數據科學的一個分支,除了Machine Learning外,還有很多偏重數據分析的內容,所以如果對於data science的各個分支都學的話,可能會因為學的太寬泛而導致多個課程都較難取得突破。數據分析的重點,不僅僅是通過課程來學習知識,更是需要通過課程來培養數據的敏感性,利用數據來激發出更深遠的insights。

數據分析是一個實踐性很強並容易運用於各個領域的專業技能,所以為了有效地學習,我們需要了解數據分析所涉及的幾個重要環節,然後根據興趣點來學習相關課程。


首先數據分析可分為:

一、處理數據(數據準備工作)

在train model前或者整理所需要的數據時,最重要的就是數據的清洗處理工作。大家都在討論各種Machine Learning的模型,但是如果訓練集這一基礎環節出現了問題的話,模型也不會很好。人工智慧方向訓練模型所需要的數據量比較大、維度也甚廣,通常這些數據會有各種各樣的問題,所以需要花時間清洗、整理數據。比如,處理缺失值、重複值、異常值等等,將海量數據轉換為自己想要的規範格式。

二、訓練數據(數據分析過程中

在處理完數據後,可以做visualization,觀察數據的趨勢然後思考模型的運用,從regression model 到神經網路,都要進行各種參數的檢驗工作,這一部分偏重模型的學習

三、數據驗證、測試、展現工作(數據後勤工作)

模型訓練完後,會準備測試集去檢測模型是否準確,根據測試結果找出其PrecisionRecall,並根據結果調參優化;同時考慮數據的擬合性。當獲得了數據分析的結果後,最主要的一點是如何將數據展現給他人。


如上面的總結,數據分析的前中後期,都可作為數據分析的不同核心點來進行課程學習,因此對於可能需要學習的課程和補充的知識,我從理論知識和編程課程兩個維度總結如下:

1. 理論知識

統計學、數學:從代數、微積分、概率論做入門,再到學習Linear Regression、Classification、Tree-Based Methods,再到SVM、Unsupervised Learning及流行的各種神經網路。

AI行業知識:數據分析要有產品思考,所以要了解所感興趣的某一項人工智慧涉及的領域知識(對話、圖像識別、語音、金融等)。


2. 編程課程

Python、R等:Python、R 為Kaggle上最主要用的也是最流行的數據分析軟體,很多Consulting公司會用SAS、SPSS、MATLAB等,因此看對哪個軟體有興趣,再去學習編程課程以及和數據分析相關的有趣的package。

SQL、NoSQL:數據分析通常都需要掌握SQL的query語句來進行資料庫的操作;通常會有mongodb、hbase等NoSql資料庫,也可當做一門課程去學習。

Spark or Hadoop:分散式系統處理大數據也是數據分析的一個亮點,將編程運用到 MapReduce進行海量數據挖掘處理;另外,能將數據存儲在HDFS上,同樣是個加分項。

Office及其他圖形化軟體:要熟練掌握PPT、Excel的基礎技能,將獲取的結果用簡潔易懂的方式呈現給看的人;做數據分析visualization很重要,需要學會使用各種可視化圖形化工具。


本回答來自竹間智能 數據科學家 張旭。


IT課店 發現好課程 可以到這個網站搜搜看


可以先從入門學習,深度學習初級入門基礎教程這個課程就不錯呦


數據分析跟人工智慧不是一個犯愁


推薦閱讀:

為什麼《英雄聯盟》有這麼多玩家?
Python2和Python3哪個更適合初學者學習來爬蟲呢?
2016 年美國大選的投票結果中,有哪些數據值得分析?
如何高效地學好 R?
Quant 如何運算百萬行的數據?

TAG:人工智慧 | 數據分析 | 機器學習 | 數據分析師 | 數據科學家 |