[資料分析&機器學習] 第3.1講:Python 機器學習以及Scikit-learn介紹

機器學習示意圖(圖片來源:madeiradata)

機器學習介紹

Q1. 機器學習是什麼?

關於機器學習的定義有很多種,,主流的原文定義為: A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E. 以白話來說就是一個程式可以根據過去的經驗(Data)去做某些的任務(Task),然後會有一個評估這些Task做得好不好的效能評估(performance measure),如果這些效能評估可以透過利用過往資料來提升的話,就叫機器學習。

Q2. 機器學習與人工智慧的差別?

機器學習是人工智慧的一個分支,由於近來機器學習過於熱門,有許多人誤用將人工智慧與機器學習劃上等號。人工智慧是一個較廣泛的名詞,只要能表現出智慧的行為都可以稱作人工智慧,即使背後是用許多的定死的規則(Rule base),只要看起來很聰明,也可以自稱人工智慧。

Q3. 機器學習可以運用在股市預測嗎?

如果光靠股市的歷史資料很難,也就是俗稱的技術分析。原因是因為機器學習是去找資料背後的一個規則,如果這個背後的規則一直在變化的話,基本上機器很難學到東西,但恰好股市背後的規則會一直變化。假設機器用過去十年的資料發現,某個K線只要連續上升兩次,第三次也會上升的機率是80%,但有可能這個規則明天就失效了,甚至讓你賠大錢。但如果結合更多資訊就有可能,比方說社群網路或是財金新聞的即時語意分析,如果今天出現iphone電池爆炸的資訊,機器學習的程式就可以在瞬間判斷股價上下跌的機率,並進行買入或買出的動作。但也有可能出現負面訊息價格卻還是一直上漲,像是比特幣的負面消息不斷,但價格卻還是持續上漲,不停突破歷史價格新高,反觀其他加密貨幣沒什麼負面新聞價格卻還是一直下跌。因此想要用機器學習在股市預測成功還是相當困難的。

Q4. 可以推薦我一個最強的機器學習演算法(model)可以直接套用嗎?

沒有一個演算法適合所有的分析,這也是俗稱的沒有白吃的午餐定理(no free lunch theorem),要討論演算法的好壞必須針對特定問題種類。但有一些根據經驗法則下比較有用的model,像是Logistic Regression, SVM, Random Forest, 以及Deep learning中常見的:CNN(影像識別), RNN(文字、語音), GAN等等…

Q5. 機器學習跟資料科學還有統計學有什麼差?

資料科學只要是用資料來分析都可以叫資料科學,可以只使用傳統的統計學來做分析預測,但由於目前資料科學背後主要是用機器學習來做分析,因此許多人也把資料科學以及機器學習劃上等號。

統計學有許多的數學證明以及假設,而且很著重在數學上的解釋性。機器學習model的背後使用非常多的統計學概念,像是Linear regression也是從統計學來的,另外實務上機器學習很多都是靠經驗法則以及結果論來推論。比方說依照預測結果來判斷哪一個model好,而不是用數學推倒來證明。

Q6. 機器學習的種類?

每個人的分法都略有不同,主流的分法有四種

  1. 監督式學習(supervised learning)
  2. 非監督式學習(unsupervised learning)
  3. 半監督式學習(semi-supervised learning)
  4. 增強式學習(reinforcement learning)

Q7. 機器學習跟深度學習有什麼不一樣?

深度學習原本是機器學習的一部分,只不過當時深度學習的速度太慢,因此被SVM以及其他算法所取代,但由於近年來GPU硬體效能的成長,深度學習克服了以往的速度問題加上成果顯著,成為一個熱門的學問之後,許多人又把深度學習從機器學習裡面獨立出來成一個領域來討論。而深度學習中“深度”名字的由來是因為在類神經網絡隱藏層的地方有非常多層,從視覺上看起來很深。

神經網絡模型

Q8.學習機器學習需要具備什麼樣的知識?

簡單來說,對於初學者,只要會寫程式ex:Python 就可以套用Machine Learning的model,但如果要更深入了解的話需要具備微積分、線性代數、機率、統計學方面的知識。

Scikit-learn介紹

Scikit-learn官網

Scikit-learn簡稱SKlearn(由於在python使用時為import sklearn),SKlearn已內建在一開始安裝的Anaconda套件中,所以可以直接使用。除了包含許多知名的Machine learning的算法之外,我們在之前也提到SKlearn有內建許多的知名的dataset(比如說像Iris以及手寫辨識數字的資料),讓你可以用兩三行的程式碼就將資料轉成pandas的格式。

我們可以發現Sklearn在官網把他提供的功能分為六大塊,分別是監督式學習的分類(Classification)以及回歸(Regression)演算法、非監督式的分群演算法(Clustering)、還有降低維度(Dimensionality reduction)、模型選擇(Model selection)以及資料的前處理(Preprocess)。接下來的內容會以Classification演算法為主。

Sklearn還很貼心了提供算法地圖,對於新手來說可依照算法地圖來選擇適合的演算法。

Scikit-learn提供的machine learning算法地圖

在Sklearn網站裡面有許多關於Machine learning演算法的教學以及實作的程式碼,因此如果想研究演算法實作並且python基礎能力不錯的話可以直接看Sklearn的原始碼。

Sklearn內的線性模型介紹

參考閱讀

  1. Sklearn官網
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.