輕鬆搞定機器學習-非監督式學習篇(下)

輕鬆搞定機器學習-非監督式學習篇(下)
輕鬆搞定機器學習-非監督式學習篇(下)

搞定機器學習其實一點也不難,前提是要用對方法!(下)

 

本篇為下篇,上篇請點此連結

二、非監督式學習

1. 隨機森林(Random Forest)

隨機森林可以視為決策樹的延伸,可以把隨機森林當作是多個決策樹組合而成,並加入隨機分配的訓練資料,以大幅增進最終的運算結果。其想法就是結合多個「弱學習器」(即決策樹)來建構一個「強學習器」模型。這種方法被稱為「集成」(Ensemble Method)。同時也能降低單個決策樹出錯的風險。

▲ 決策樹演算法示意圖

 

如果創建一個隨機森林模型預測數值,只有第三個決策樹預測為 0,但是如果整合所有決策樹的結果,將會判斷出預測值是為 1。

隨機森林的優點為可以處理大量的輸入變數,同時可以計算各例中的親近度,對於資料探勘、偵測離群點和將資料視覺化非常有用。

2. 聚類分析(Cluster analysis)

聚類分析是統計資料分析的技術,後來在像是機器學習等領域受到廣泛應用。「聚類」是把相似的物件通過靜態分類,分成不同的組別或子集(subset)。聚類有很多種方法,常見的如 K-means、層次聚類(Hierarchical clustering)、譜聚類(Spectral Clustering)等等。

▲ 「聚類」是把相似的物件通過靜態分類,分成不同的組別或子集 (圖片來源: geeksforgeeks.org)

 

聚類時,把需要實現的目標只是要把相似的東西聚到一起,一個聚類算法只需要知道如何計算相似度就可以開始分類,因此聚類算法並不需要使用訓練資料進行學習。

3. 主成分分析(Principal Component Analysis,PCA)

主成分分析 PCA 是一個在機器學習與統計學領域中被廣泛用來分析資料、降低數據維度以及去關聯的線性降維方法。降維(Dimension reduction)是當資料維度數(變數)很多的時候,嘗試讓維度數(變數)少一點,但資料特性不會差太多的方法。

機器學習使用 PCA 達到降維的目的,主要是為了避免「維數災難」,或稱「維度詛咒」,指當維度增加時,分析和組織高維空間因體積指數增加而遇到各種問題:在機器學習問題中,模型預測能力會隨著維度的增加而減小。

4. 奇異值分解(Singular Value Decomposition,SVD)

奇異值分解 SVD 是線性代數中一種重要的矩陣分解,不僅可以用於降維演算法中的特徵分解,還可以用於推薦系統以及自然語言處理等領域。

▲ 實數 2×2 矩陣 M 的奇異值分解 UΣV * 的圖示。(圖片來源:圖片來自 Wikipedia)

 

SVD 矩陣是一個複雜的實復負數矩陣,給定一個 m 行、n 列的矩陣 M,則 M 矩陣可以分解為 M = UΣV。U 和 V 是么正矩陣(unitary matrix),Σ 為對角陣。

SVD 在某些時候可以做為簡化版的 PCA 利用。PCA 演算法可以不用做特徵分解,而是做 SVD 來完成,在樣本量很大的時候很有效。實際上 Python 的免費機器學習庫「scikit-learn」的 PCA 演算法的背後真正的實現就是用 SVD。

獨立成分分析(Independent components analysis,ICA)

ICA 是一種利用統計原理進行計算的方法。前面在主成分分析(PCA)時談到「降維」的方法,但對符合高斯分佈的樣本點比較有效,那麼對於其他分佈的樣本,則是適合用「主元分解」的 ICA。

ICA 會假設現有資料其實是多個彼此獨立的資料、透過混合後成為現有資料,因此期望能夠從手中的資料,回推出是哪些獨立的分配。例如 ICA 的經典問題「雞尾酒會問題」(cocktail party problem):描述給定混合信號,如何分離出雞尾酒會中同時說話的每個人的獨立信號。

▲ ICA 的經典問題「雞尾酒會問題」示意圖:目的是從混合信號 Mixture1 和 Mixture2 中恢復成每個人的獨立信號 Person1和Person2。(圖片來源:vocal.com)

 

ICA 是研究盲信號分離(blind signal separation)的一個重要方法,並且在實際中也有很多應用。

為何使用 Python 學機器學習、而不是 R 語言?

介紹完當今應用最廣泛、最熱門的幾大機器學習演算法,可以看出從數據分析、統計分析到模型驗證等等都應用在其中。

Python 可以說是簡單上手的程式語言,原本就適合作為第一個入門的程式語言,而透過如 scikit-learn 的 Python 機器學習套件,在 Python 中提供大量常見的機器學習演算法和許多實用的函式庫,亦能呈現該演算法資料輸出的型態,相當方便。

當然 Python 和 R 語言不是互斥,許多工程師也是在兩者之間切換,但是有鑑於 Python 是當今的通用語言,除了AI人工智慧領域外也可以廣泛應用在各種領域,其免費及開源的特性, 有許多支持 Python 的輔助工具、大型模組與函式庫,可以簡單上手數據分析或複雜的程式計算,以及能與幾乎所有現代作業系統兼容等的特點,讓它脫穎而出。

以投資報酬率而言,如果是要從頭開始選擇一種程式語言學習,Python 肯定是最佳的選擇。

推薦閱讀:Python vs R語言:哪個比較適合人工智慧/機器學習?

 

 

 

 

 

推薦文章:
如何使用人工智慧工具,活用 Python 簡化繁瑣的行銷工作?

Python vs R語言:哪個比較適合人工智慧/機器學習?

六個月從工地工人轉職 Java 軟體工程師,全因半年做了「對的決定」

台灣本土開發AI 發行首張音樂專輯<<武漢肺炎>>

穿戴裝置潮流正夯,人工智慧眼鏡如何改造你我世界?!(上)

拯救地球靠AI?!保護環境還比人類快?!(上)

學Python到底有什麼好?三大好處報你災!
 

輕鬆搞定機器學習-監督式學習篇(上)

輕鬆搞定機器學習-監督式學習篇(上)
輕鬆搞定機器學習-監督式學習篇(上)

搞定機器學習其實一點也不難,前提是要用對方法!(上)

隨著人工智慧的深入發展,沒有學習能力的 AI 侷限性越發明顯,為了突破這個瓶頸,「機器學習」逐漸成為 AI 領域的研究核心之一,也發展出各種機器學習的演算法。

現在有哪些熱門的算法?各有什麼特點?本次就要來盤點幾個常用的機器學習演算法,並告訴你為何機器學習語言要首選 Python

機器學習演算法大致上可以分為三類:監督式學習(Supervised learning)、非監督式學習(Unsupervised learning)與強化式學習(Reinforcement learning)。

本次將會著重介紹「監督式學習」與「非監督式學習」的演算法。

一、監督式學習

監督學習算法可以分成兩個大方向:分類和迴歸。

1. 線性迴歸(Linear Regression)

▲ 線性回歸的視覺化,平面內有一系列點,尋找出一條最能擬合資料趨勢分布的線用來預測新的資料出現的位置

 

線性回歸源自於統計學的方法,透過一個或多個自變量與因變量進行建模的回歸分析。視覺化後如上圖,平面內有一系列點,尋找出一條最能擬合資料趨勢分布的線,也可以用來預測新的資料出現的位置,就叫線性回歸。

在線性回歸中,數據使用線性預測函數來建模,並且未知的模型參數也是通過數據來估計,簡單的線性回歸公式為:

▲ 簡單的線性回歸公式

 

y 是因變量(y)對自變量(x)任何給定值的預測值;B0 是截距,即 x 為 0 時 y 的預測值;B1 是回歸係數–表示期望 y 隨著 x 的增加而改變多少;x 是自變量(期望的變量影響 y);e 是估計值的誤差,或表示回歸係數估計值有多少變化。

2. 邏輯回歸(Logistic Regression)

邏輯回歸延伸自線性回歸,是一個二元分類算法,透過選取不同的特徵與權重來對樣本進行機率分類。

邏輯回歸會使用某種函數將機率值壓縮到某一特定範圍,如 Sigmoid 函數。S 函數是一種具有 S 形曲線、用於二分類的函數。

▲ 邏輯分布函數圖像(圖片來源:Wikipedia)

 

邏輯回歸的輸出變量是離散型(Discrete),而「回歸」輸出變量為連續值。所以實際上雖然叫「邏輯回歸」,但它屬於「分類型」算法,而非「回歸型」算法。

3. 支援向量機(Support Vector Machine,SVM)

支援向量機 SVM 同樣是一個二元分類算法,它可以在 N 維空間找到一個 (N-1) 維的超平面,以使兩類數據之間的餘量最大化。這個超平面可以使兩個類別之間的邊距或距離最大化,平面內如果存在線性可分的兩類點,SVM 可以找到一條最適直線將這些點分開。

除了進行線性分類之外,SVM 還可以使用核技巧(kernal trick)進行非線性分類,將其輸入隱式對映到高維特徵空間中。

▲ 散點圖展示了線性支援向量機核函式的決策邊界(虛線)(圖片來源:Wikipedia)

 

SVM 的應用範圍很廣,如文字和超文字的分類、大規模圖像識別與分類、手寫字型的辨識等等。

4. 樸素貝葉斯分類器(Naive Bayes classifier)

「貝葉斯推斷」延伸自貝葉斯理論,是描述在擁有部分已知條件下,某事件的發生機率。

而在機器學習中,樸素貝葉斯分類器是以假設「特徵之間是獨立的、不相互影響的」的簡單機率分類器,可以直接利用條件機率相乘的方法,計算出聯合機率分布。

貝葉斯公式為:

▲ 貝葉斯公式

 

也可以表示為:

▲ 貝葉斯公式

 

posterior:通過樣本 X 得到參數 θ 的機率,稱為後驗機率。
likehood:通過參數 θ 得到樣本 X 的機率,即似然函數。通常為數據集的表現。
prior:該樣本 θ 機率,稱為先驗機率。
evidence:樣本 X 發生的機率,即為要預測的值。

即使一般現實世界的資料通常無法滿足貝葉斯理論的假設,但樸素貝葉斯分類器卻是相當實用,因其簡單高效,而辨識效能也不輸許多算法繁複的分類器。貝葉斯模型的應用範圍非常廣泛,大數據、機器學習、資料採擷、Python資料分析等領域都會見到。

5. 決策樹(Decision Tree)

決策樹最一開始是作為決策分析中的方法,指的是每個決策都可能引出複數的事件,最後通向不同結果,視覺化後的圖形很像樹的枝幹,故稱決策樹。

而在機器學習中,決策樹是一種用來處理分類問題的樹狀結構,每個內部節點表示一個評估欄位,而每個分枝代表一個可能的欄位輸出結果,每個則葉節點代表不同分類的類別標記。

▲ 決策樹演算法示意圖

 

ID3、C4.5 、C5.0、CHAID 及 CART 都是決策樹演算法的代表。

決策樹的最主要功能,是藉由分類已知的實例來建立一個樹狀結構,並從中歸納出實例裡、類別欄位與其它欄位間的隱藏規則,通常也能利用來做樣本的預測,同時決策樹產生的模型也具有易於解釋的優點哦。

本篇為上篇,下篇請點此連結

 

 

 

 

 

推薦文章:
台灣本土開發AI 發行首張音樂專輯<<武漢肺炎>>

Python vs R語言:哪個比較適合人工智慧/機器學習?

六個月從工地工人轉職 Java 軟體工程師,全因半年做了「對的決定」

如何使用人工智慧工具,活用 Python 簡化繁瑣的行銷工作?

最夯程式語言Python,你夠了解它嗎?!

為何人人都想學Python?看完這三大理由我服了!

地球的救星是AI?!保護環境效率竟比人類強!?(上)

 

Python與R語言究竟哪個最適合機器學習?(下)

Python與R語言究竟哪個最適合機器學習?(下)
Python與R語言究竟哪個最適合機器學習?(下)

Python好還是R語言好?本篇教你分析判斷!(下)

本篇為下篇,上篇請點此連結

R語言

R 語言是經由統計學家所開發。任何開發人員只要看一下語法,就能馬上分析、預測。由於該語言包含了機器學習中涉及的數學計算,而機器學習是從統計學中衍生出來的,因此對於希望能深入理解底層細節和構建創新的正確選擇。

如果你的工作需要深入觀察,像是需要靠人工智慧檢驗數據集之類,R可以替你縮小工作範圍,可以說是最佳選擇。

R 的優勢

適用於分析:如果你的工作需要大量的檢驗數據,R 是最佳選擇,因為它可以快速建模,並與數據集一起搭建 AI/機器學習模型。

大量實用的函式庫和工具:與 Python 類似,R 也有不同的封包,可以提升機器學習模型的結果。例如 Caret 包就支援 AI人工智慧應用,助於有效地建立預測模型。R 開發人員可受惠於這些數據分析包:因為這些封包中包含了針對建模前後階段的特定任務,如模型驗證或數據可視化等。

適用於探索性工作:如果你需要在項目開始的階段,在測量模型中進行探索性研究時,使用 R 語言的話就只需要添加幾行代碼即可完成。

R 的缺點

難學且不容易寫好。身為弱型別(Weak typing)的程式語言,函數經常會回傳預料之外的物件種類。

與其它的語言不同,R 是從 1 開始,不是 0 開始。

結論:

R 和 PythonAI/機器學習上都有各有各的優勢。可以將兩者運用在各自擅長的項目中,互相搭配使用,才能發揮最大的效益。

一開始我們可以使用 Python 進行資料彙整的階段,再將資料丟到 R 做數據檢驗。按照這些思路,可以將 R 用作 Python 的庫或將 Python 用作 R 的預處理庫。

 

 

 

 

 

推薦文章:
為超越MotoGP冠軍VR46而生:人工智慧重機賽車手MOTOBOT


AI 人工智慧、ML 機器學習、深度學習、Python 是什麼?


捷克新創Resistant.AI 開發2產品 揪出欺騙人工智慧的詭計


人工智慧、機器人、Python、大數據⋯⋯到底有什麼關係?


保護地球靠AI!效率竟比人類快3000倍?!(上)


想要擁有職場競爭力?學Python是你最好的選擇!


自學Python卻遇撞牆期?24條建議幫幫你!

Python與R語言究竟哪個最適合機器學習?(上)

Python與R語言究竟哪個最適合機器學習?(上)
Python與R語言究竟哪個最適合機器學習?(上)

Python好還是R語言好?本篇教你分析判斷!(上)

如果你想要建構一個機器學習的專案,卻又卡在不知道該使用Python 還是 R 語言,恭喜你,你現在真的看到對的文章了!

這篇文章不僅能讓你了解到 Python 與 R 語言的不同,同時也會知道哪個程式語言在多方面都比較佔優勢。現在就讓我們一起深入研究吧!

Python 與 R 語言都具有相同的功能,且是數據科學家間非常熱門的工具。約有 69% 的開發者在人工智慧上使用 Python 語言,R 語言則只佔了 24%。兩者都是免費開源的程式語言,不過 Python 被建構成一種可廣泛使用的程式語言,而 R 語言則是為了統計分析而造。

推薦閱讀:Python 與 R 語言之戰鹿死誰手?盤點 5 個即將消失的程式語言!

人工智慧AI)與數據分析,是真正可以開源創新的兩個領域。Python 與 R 語言都創造了強大的開源設備與函式庫的環境,可以幫助不同能力水平的數據科學家更有效率的執行工作。

機器學習與數據分析之間的區別,相對來說比較模糊。但是一般認為,機器學習在模型可解釋性上著重在預知的準確程度;而數據分析則著重在事實的推測。 在預知的準確度上,Python 可是有口皆碑的;R 語言則擅長於事實推論與靜態推論。

推薦閱讀:AI 人工智慧、ML 機器學習、深度學習、Python 是什麼?

這並不代表我們要將這兩個語言歸為一類 —— Python 完全可被應用為數據分析工具;R 語言則可以完成機器學習中的一些大工程。兩種語言都有許多能使其達成對方優點的函式庫與封包:像是 Python 有能進行測量後歸納的函式庫;R則有增強預測準確度的封包。

下一段,我們將會深入說明兩種語言,可以大大地幫助你針對自己的專案,使用合適的語言。

Python 語言

Python 程式語言誕生於 80 年代末期,承擔了推動 Google 內部框架的重責大任。Python 被一群熱情的程式設計師所擁護著,也被廣泛應用在 YouTube、Instagram、Quora 和 Dropbox。Python 也全面被應用在 IT 產業以及開發團隊中的基礎建構。因此如果你需要的是一個多工的程式語言以及大量可擴展的 AI 函式庫,Python 可以說是首選。

Python 的優點

多功能 — 如果你的企業需要的不只是測量與統計數據的功能,Python 是首選。例如設計一個功能強大的網站。

平滑的學習曲線 — Python 並不難學,能幫助你短時間內找到熟練的開發人員。

大量的重要函式庫 — Python 以擁有無數的數據組裝與控制函式庫聞名。以 Scikit-realize 為例,它包含了資料探勘與和調查的工具,讓使用 Python 時,增加了超乎想像的 AI 便利性。另一個函式庫 Pandas,給予工程師無可比擬的結構與資訊評估工具,減少了改進的時間。如果你的開發團隊需要 R 語言的其中一個主要功能,就建議可以使用 RPy2。

更好地整合能力 — P大致上來說,在任何的開發場合,Python 的兼容性比 R 還好。不管是否使用如 C、C++ 等較低階的語言來開發,都能透過 Python 包裝連接更好的組件。而且,讓數據研究人員的將一個基於 Python 建構的函式庫,串接到其他需要完成的工作也很容易。

提高生產力 — Python 語言,比起 R 語言可讀性特別高,幾乎如同人類平時交談用的方言,因此也能提高開發團隊的生產力。

Python 的缺點

缺少公共儲存庫,也沒有某些可選的 R 專用庫。

由於是動態組合,在某些情況下,Python 會造成一些計算錯誤,而這些導致錯誤的因素又不太確定。

連結本篇為上篇,下篇請點此

 

 

 

 

 

推薦文章:
AI 人工智慧、ML 機器學習、深度學習、Python 是什麼?


捷克新創Resistant.AI 開發2產品 揪出欺騙人工智慧的詭計


人工智慧、機器人、Python、大數據⋯⋯到底有什麼關係?


為超越MotoGP冠軍VR46而生:人工智慧重機賽車手MOTOBOT

 

穿戴裝置潮流正夯,人工智慧眼鏡如何改造你我世界?!(上)


聽聽看不吃虧!關於Python的24條真心建議!


人工智慧時代新寵兒-機器狗Aibo(上)