您的位置:首頁>正文

機器學習演算法:選擇您問題的答案

更多騰訊海量技術文章, 請關注雲+社區:https://cloud.tencent.com/developer

當我開始涉足資料科學時, 我經常面臨為如何我的問題選擇最合適的演算法的問題。 如果你像我一樣, 當你看到一些關於機器學習演算法的文章時, 你會看到許多詳細的描述。 但是, 即使看了這麼多的演算法文章, 你依然不懂得要如何選擇合適的演算法。

在Statsbot的這篇文章中, 我將嘗試解釋一些基本概念, 並教你如何針對不同問題選擇相應的演算法。 在文章的最後, 您會發現所提及的演算法主要特徵的系統化概述。

首先, 我們應該把機器學習任務分為四大類:

監督學習

無監督學習

半監督學習

強化學習

監督學習(Supervised Learning)

監督學習是從標記的訓練資料中推斷函數的一種學習。 通過擬合標注的訓練集, 我們想要找到最優化的模型參數來預測其他資料(測試集)上的未知標籤。 如果標籤是一個真實的數字,

我們稱之這個任務叫回歸。 如果標籤來自有限數量的值, 這些值是無序的, 那麼就是分類。

無監督學習(Unsupervised Learning)

在無監督的學習中, 我們有關於物件的資訊較少。 特別是訓練集合資料中沒有標籤。 我們現在的目標是什麼?可以觀察一組物件之間的一些相似性,

並將它們包括在適當的集群中。 當然有些物件對於整個集合的物件群來說相差甚遠, 這類的物件我們就把它們稱作異常物件。

半監督學習

半監督學習任務其實包含了我們前面提到的兩個學習(監督和無監督學習):這類任務同時使用標記和未標記的資料。 對於那些無法標注訓練資料集合的人來說, 這是一個很好的方法。 該方法使我們能夠顯著提高準確性, 因為我們可以使用少量標記資料在大量使用未標記的資料的訓練集合中使用。

強化學習(Reinforcement Learning)

強化學習不像我們上面提到的那些任務, 因為我們在這裡既沒有使用標記, 也沒有用未標記的資料集。 RL(強化學習)是機器學習領域中涉及軟體應用應該如何在不同環境中採取行動來最大化累積獎勵的方法。

想像一下, 你是一個被放置在陌生環境的機器人。 您可以執行活動並且獲得獎勵。 每一個行動後, 你的行為就會變得越來越複雜和聰明, 所以你正在訓練在每一步行為最有效的方式。 在生物學中, 這被稱為適應自然。

常用的機器學習演算法

現在我們對機器學習任務的類型有了一些直覺, 現在讓我們來探索一下最流行的演算法及其在現實生活中的應用。

線性回歸(Linear Regression)和線性分類器(Linear Classifier)

這些可能是機器學習中最簡單的演算法。 你有物件(矩陣A)和標籤(向量B)的特徵x1, ... xn。你的目標是根據一些損失函數找到最優的權重w1,...,wn和這些特徵的偏差。例如,MSE(mean squared error,均方差)或MAE(mean absolute error,平均絕對誤差)用於回歸問題。針對均方差,有一個叫做最小二乘法的數學公式:

在實踐中,使用梯度下降來優化是很容易的,而且計算效率更好。儘管這個演算法很簡單,但是當你有成千上萬個特性的時候,它會幫你提高效率。例如文本分析中的單詞或n元組。更複雜的演算法有過度擬合非大型資料集合的多特徵分析,而線性回歸提供了不錯效率。

分類

為了防止過度擬合,我們經常使用像套索和脊的常規技術。這個技術的想法是把權重的模組和權重的平方和的總和分別加到我們的損失函數中。有興趣的讀客可以在文章結尾處閱讀有關這些演算法的精彩教程。

Logistic回歸(Logistic Regression)

不要將這些這個分類演算法與其他標題中使用“回歸”二字的回歸方法混淆掉。因為邏輯回歸執行的是二進位分類,所以標籤輸出是二進位的。在給定輸入特徵向量x的條件下,定義P(y = 1 | x)為輸出y等於1的條件概率。係數w是模型想要算出的權重。

由於該演算法計算每個類別的歸屬概率,因此應該考慮概率與0或1的差異程度,並計算所有物件的平均值,就像我們對線性回歸所做的那樣。這種損失函數是交叉熵的平均值:

不要害怕看不懂這個公式!我會向你講解這個公式的,我們設y的值是0或1,ypred 表示預測答案。如果y等於0,則根據對數的性質,總和下的第一個加數等於0,第二個加數越小,我們預測的ypred就越接近0。同理,我們可以推導出y等於1的情況。

邏輯回歸有什麼好處?它採用線性組合的特徵,並對其應用非線性函數(sigmoid),所以它是一個非常小的神經網路實例!

決策樹

另一個流行和易於理解的演算法是決策樹。決策樹的視覺化介面可以説明你真切地看到你在想什麼,他們的引擎需要一個詳盡的,明確的思考過程。

這個演算法的想法很簡單。在每個節點中,我們選擇所有特徵和所有可能的分割點之間的最佳分割。選擇的每個分割點都是為了最大化某些功能的。在分類樹中,我們使用交叉熵和基尼指數。在回歸樹中,我們最小化了該區域中點的目標值的預測變數與分配給它的點之間的平方差的總和。

我們針對每個節點遞迴地完成這個過程,並在滿足停止條件時完成。它們可以從節點中的數量最少的葉節點到頂點。單樹很少被使用,但是與其他許多樹一起構成了非常有效的演算法,如隨機森林或梯度樹推進。

K均值(K-Means)

有時,你不知道任何標籤,你的目標是根據物件的特徵來分配標籤。這被稱為集群化任務。

假設你想把所有的資料物件分成k個簇。您需要從資料中選擇隨機的k個點,並將它們作為集群的中心。其他物件的集群由最近的集群中心定義。然後,集群的中心被轉換並重複該過程直到收斂。

這是最簡單的群集技術,但它仍然有一些缺點。首先,你應該知道一些我們不知道的集群。其次,結果取決於在開始時隨機選擇的點,演算法不保證我們將實現功能的全域最小值。

有一系列不同優缺點的聚類方法,您可以在推薦閱讀中學習。

主成分分析(PCA)

你有沒有準備好在晚上甚至是早上準備好考試呢?你無法記住所有你需要的資訊,但是你想要在可用的時間內最大限度地記住你所記得的資訊; 例如,首先學習許多考試中多次出現的定理等等內容。

主成分分析是基於相同的想法。該演算法提供了降維。有時你有很多的特徵,可能彼此高度相關,模型可以很容易地適應大量的資料。然後,你可以嘗試使用PCA。

令人驚訝的是,這些向量是來自資料集的特徵的相關矩陣的特徵向量。

演算法現在很清楚:

我們計算特徵列的相關矩陣並找出這個矩陣的特徵向量。

我們取這些多維向量,並計算它們上的所有特徵的投影。

新功能是投影中的座標,其數量取決於計算投影的特徵向量的數量。

神經網路(Neural Networks)

當我們談論邏輯回歸時,我已經提到了神經網路。有很多不同的體系結構在一些特定的任務中很有意義。更多的時候,它是一系列的層或元件,它們之間具有線性連接並遵循非線性。

如果你正在處理圖像,卷積深度神經網路顯示出很好的結果。非線性表現為卷積層和彙聚層,能夠捕捉圖像的特徵。

為了處理文本和序列,最好選擇遞迴神經網路。RNN(Recurrent Neural Networks,即迴圈神經網路)包含LSTM(Long Short Term Memory,長短期記憶)或GRU(Gated Recurrent Unit,門控單元)模組,並且可以使用我們已經知道的資料。機器翻譯是RNN最著名的應用之一。

結論

我希望您現在能夠理解最常用的機器學習演算法的,並就如何針對您的具體問題憑直覺選擇一個方法。為了讓你方便的理解,我將各個演算法的性質進行了總結:

線性回歸和線性分類器: 儘管表面簡單,但是當其他比較好的演算法會過度擬合數據時可以選擇這類方法。

Logistic回歸:最簡單的非線性分類器,具有參數和非線性函數的線性組合(S形)用於二元分類。

決策樹:通常與人們的決策過程類似,易於解釋,但是它們最常用于諸如隨機森林或梯度提升的組合中。

K-means:一個很原始但很容易理解的演算法,可以作為各種問題的基線完美。

PCA:以最小的資訊損失降低特徵空間維度的絕佳選擇。

神經網路:這個演算法標誌著機器學習演算法的新時代,可以應用于許多工,但他們的訓練需要巨大的計算複雜性。

推薦來源

聚類方法概述(http://scikit-learn.org/stable/modules/clustering.html#overview-of-clustering-methods)

Python中一個關於嶺和套索回歸的完整教程(https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-ridge-lasso-regression-python/)

關於人工智慧的YouTube頻道,有很好的教程和例子給初學者

(https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A)

翻譯人:Hi胡瀚,該成員來自雲+社區翻譯社

原文連結:https://dzone.com/articles/machine-learning-algorithms-which-one-to-choose-fo

原文作者:Daniil Korbut

... xn。你的目標是根據一些損失函數找到最優的權重w1,...,wn和這些特徵的偏差。例如,MSE(mean squared error,均方差)或MAE(mean absolute error,平均絕對誤差)用於回歸問題。針對均方差,有一個叫做最小二乘法的數學公式:

在實踐中,使用梯度下降來優化是很容易的,而且計算效率更好。儘管這個演算法很簡單,但是當你有成千上萬個特性的時候,它會幫你提高效率。例如文本分析中的單詞或n元組。更複雜的演算法有過度擬合非大型資料集合的多特徵分析,而線性回歸提供了不錯效率。

分類

為了防止過度擬合,我們經常使用像套索和脊的常規技術。這個技術的想法是把權重的模組和權重的平方和的總和分別加到我們的損失函數中。有興趣的讀客可以在文章結尾處閱讀有關這些演算法的精彩教程。

Logistic回歸(Logistic Regression)

不要將這些這個分類演算法與其他標題中使用“回歸”二字的回歸方法混淆掉。因為邏輯回歸執行的是二進位分類,所以標籤輸出是二進位的。在給定輸入特徵向量x的條件下,定義P(y = 1 | x)為輸出y等於1的條件概率。係數w是模型想要算出的權重。

由於該演算法計算每個類別的歸屬概率,因此應該考慮概率與0或1的差異程度,並計算所有物件的平均值,就像我們對線性回歸所做的那樣。這種損失函數是交叉熵的平均值:

不要害怕看不懂這個公式!我會向你講解這個公式的,我們設y的值是0或1,ypred 表示預測答案。如果y等於0,則根據對數的性質,總和下的第一個加數等於0,第二個加數越小,我們預測的ypred就越接近0。同理,我們可以推導出y等於1的情況。

邏輯回歸有什麼好處?它採用線性組合的特徵,並對其應用非線性函數(sigmoid),所以它是一個非常小的神經網路實例!

決策樹

另一個流行和易於理解的演算法是決策樹。決策樹的視覺化介面可以説明你真切地看到你在想什麼,他們的引擎需要一個詳盡的,明確的思考過程。

這個演算法的想法很簡單。在每個節點中,我們選擇所有特徵和所有可能的分割點之間的最佳分割。選擇的每個分割點都是為了最大化某些功能的。在分類樹中,我們使用交叉熵和基尼指數。在回歸樹中,我們最小化了該區域中點的目標值的預測變數與分配給它的點之間的平方差的總和。

我們針對每個節點遞迴地完成這個過程,並在滿足停止條件時完成。它們可以從節點中的數量最少的葉節點到頂點。單樹很少被使用,但是與其他許多樹一起構成了非常有效的演算法,如隨機森林或梯度樹推進。

K均值(K-Means)

有時,你不知道任何標籤,你的目標是根據物件的特徵來分配標籤。這被稱為集群化任務。

假設你想把所有的資料物件分成k個簇。您需要從資料中選擇隨機的k個點,並將它們作為集群的中心。其他物件的集群由最近的集群中心定義。然後,集群的中心被轉換並重複該過程直到收斂。

這是最簡單的群集技術,但它仍然有一些缺點。首先,你應該知道一些我們不知道的集群。其次,結果取決於在開始時隨機選擇的點,演算法不保證我們將實現功能的全域最小值。

有一系列不同優缺點的聚類方法,您可以在推薦閱讀中學習。

主成分分析(PCA)

你有沒有準備好在晚上甚至是早上準備好考試呢?你無法記住所有你需要的資訊,但是你想要在可用的時間內最大限度地記住你所記得的資訊; 例如,首先學習許多考試中多次出現的定理等等內容。

主成分分析是基於相同的想法。該演算法提供了降維。有時你有很多的特徵,可能彼此高度相關,模型可以很容易地適應大量的資料。然後,你可以嘗試使用PCA。

令人驚訝的是,這些向量是來自資料集的特徵的相關矩陣的特徵向量。

演算法現在很清楚:

我們計算特徵列的相關矩陣並找出這個矩陣的特徵向量。

我們取這些多維向量,並計算它們上的所有特徵的投影。

新功能是投影中的座標,其數量取決於計算投影的特徵向量的數量。

神經網路(Neural Networks)

當我們談論邏輯回歸時,我已經提到了神經網路。有很多不同的體系結構在一些特定的任務中很有意義。更多的時候,它是一系列的層或元件,它們之間具有線性連接並遵循非線性。

如果你正在處理圖像,卷積深度神經網路顯示出很好的結果。非線性表現為卷積層和彙聚層,能夠捕捉圖像的特徵。

為了處理文本和序列,最好選擇遞迴神經網路。RNN(Recurrent Neural Networks,即迴圈神經網路)包含LSTM(Long Short Term Memory,長短期記憶)或GRU(Gated Recurrent Unit,門控單元)模組,並且可以使用我們已經知道的資料。機器翻譯是RNN最著名的應用之一。

結論

我希望您現在能夠理解最常用的機器學習演算法的,並就如何針對您的具體問題憑直覺選擇一個方法。為了讓你方便的理解,我將各個演算法的性質進行了總結:

線性回歸和線性分類器: 儘管表面簡單,但是當其他比較好的演算法會過度擬合數據時可以選擇這類方法。

Logistic回歸:最簡單的非線性分類器,具有參數和非線性函數的線性組合(S形)用於二元分類。

決策樹:通常與人們的決策過程類似,易於解釋,但是它們最常用于諸如隨機森林或梯度提升的組合中。

K-means:一個很原始但很容易理解的演算法,可以作為各種問題的基線完美。

PCA:以最小的資訊損失降低特徵空間維度的絕佳選擇。

神經網路:這個演算法標誌著機器學習演算法的新時代,可以應用于許多工,但他們的訓練需要巨大的計算複雜性。

推薦來源

聚類方法概述(http://scikit-learn.org/stable/modules/clustering.html#overview-of-clustering-methods)

Python中一個關於嶺和套索回歸的完整教程(https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-ridge-lasso-regression-python/)

關於人工智慧的YouTube頻道,有很好的教程和例子給初學者

(https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A)

翻譯人:Hi胡瀚,該成員來自雲+社區翻譯社

原文連結:https://dzone.com/articles/machine-learning-algorithms-which-one-to-choose-fo

原文作者:Daniil Korbut

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示