機器學習中演算法與模型的區別

bzxb1188發表於2020-12-19

機器學習中的“演算法”是什麼?

機器學習中的“演算法”是在資料上執行以建立機器學習“模型”的過程。

機器學習演算法執行“模式識別”。演算法從資料中“學習”,或者對資料集進行“擬合”。

機器學習演算法有很多。比如,我們有分類的演算法,如 K- 近鄰演算法;迴歸的演算法,如線性迴歸;聚類的演算法,如 K- 均值演算法。

下面是機器學習演算法的例子:

  •   線性迴歸
  •  邏輯迴歸
  •  決策樹
  •  人工神經網路
  •  K- 最近鄰
  •  K- 均值

你可以把機器學習演算法想象成電腦科學中的任何其他演算法。

例如,你可能熟悉的一些其他型別的演算法包括用於資料排序的氣泡排序和用於搜尋的最佳優先排序。

因此,機器學習演算法具有許多特性:

  •  機器學習計演算法可以用數學和虛擬碼來描述。
  •  可以對機器學習演算法的效率進行分析和描述。
  •  機器學習演算法可以用任何一種現代程式語言來實現。

例如,你可能會在研究論文和教科書中看到用虛擬碼或 線性代數 描述的機器學習演算法。你可以看到一個特定的機器學習演算法與另一個特性演算法相比的計算效率。

學術界可以設計出全息你的機器學習演算法,而機器學習實踐者可以在他們的專案中使用標準的機器學習演算法。這就像電腦科學的其他領域一樣,學者可以設計出全新的排序演算法,程式設計師可以在應用程式中使用標準的排序演算法。

你還可能會看到多個機器學習演算法實現,並在一個具有標準 API 的庫中提供。一個流行的例子是 scikit-learn 庫,它在 Python 中提供了許多分類、迴歸和聚類機器學習演算法的實現。

機器學習中的“模型”是什麼?

機器學習中的“模型”是執行在資料上的機器學習演算法的輸出。

模型表示機器學習演算法所學到的內容。

模型是在訓練資料上執行機器學習演算法後儲存的“東西”,它表示用於進行預測所需的規則、數字和任何其他特定於演算法的資料結構。

我舉一些例子,可能會讓人更清楚地明白這一點:

  •  線性迴歸演算法的結果是一個由具有特定值的稀疏向量組成的模型。
  •  決策樹演算法的結果是一個由具有特定值的 if-then 語句樹組成的模型。
  •  神經網路 / 反向傳播 / 梯度下降演算法一起產生一個由具有特定值的向量或權重矩陣和特定值的圖結構組成的模型。

機器學模型對於初學者來說更具挑戰性,因為它與電腦科學中的其他演算法沒有明確的類比。

例如,排序演算法的排序列表輸出並不是真正的模型。

最好的類比是將機器學習模型想象成一個“程式”。

機器學習模型“程式”由資料和利用資料進行預測的過程組成。

例如,考慮線性迴歸演算法和由此產生的模型。該模型由係數(資料)向量組成,這些係數(資料)與作為輸入的一行新資料相乘並求和,以便進行預測(預測過程)。

我們將資料儲存為機器學習模型,以備後用。

我們經常使用機器學習庫提供的機器學習模型的預測過程。有時候,我們可以自己實現預測過程作為我們應用程式的一部分。考慮到大多數預測過程都非常簡單,這通常都是直截了當的。

演算法與模型框架

現在我們已經熟悉了機器學習的“演算法”和機器學習的“模型”。

具體來說,就是對資料執行演算法來建立模型。

  •  機器學習 =>機器學習模型

我們還了解到,模型由資料和如何使用資料對新資料進行預測的過程組成。如果你願意的話,你也可以將這一過程視為一種預測演算法。

  •  機器學習模型 == 模型資料 + 預測演算法

這種區分對於理解廣泛的演算法非常有幫助。

例如,大多數演算法的所有工作都在“演算法”中,而“預測演算法”的工作很少。

通常情況下,演算法是某種優化程式,即在訓練資料集上使模型(資料 + 預測演算法)的誤差最小化。線性迴歸演算法就是一個很好的例子。它執行一個優化過程(或用線性代數進行分析求解),找到一組權重,使訓練資料集上的誤差之和平方最小化。

線性迴歸

  •  演算法:在訓練資料集上找到誤差最小的係數集。
  •  模型:
    •   模型資料:整個訓練資料集。
    •   預測演算法:找出 K 個最相似的行,取其目標變數的平均值。

有些演算法很瑣碎,甚至什麼都不做,所有的工作都在模型或預測演算法中。

K- 最近鄰演算法除了儲存整個訓練資料集外沒有其他的演算法。因此,弄醒資料就是整個訓練資料集,所有的工作都在預測演算法中,即,一行新資料如何與儲存的訓練資料集互動以作出預測。

K- 最近鄰

  •  演算法:儲存訓練資料。
  •  模型:
    •   模型資料:整個訓練資料集。
    •   預測過程:找出 K 個最相似的行,取其目標變數的平均值。

你可以把這個分解作為一個框架來理解任何機器學習演算法。

機器學習是自動程式設計

我們真的只是想要一個機器學習的“模型”,而“演算法”就是我們獲得模型的路徑。

機器學習技術用於解決其他方法無法有效或高效解決的問題。

例如,如果我們需要將電子郵件分類為垃圾郵件或非垃圾郵件,我們需要一個軟體程式來完成此任務。

我們可以坐下來,手動檢視大量的電子郵件,然後寫 if 語句來完成合格任務。人們已經試過這個方法。事實證明,這種方法是緩慢的、脆弱的,而且效果也不是很好。

相反,我們可以使用機器學習技術來解決這個問題。具體來說,像 樸素貝葉斯(Naive Bayes)這樣的演算法就可以從大量的歷史郵件樣本資料集中學習如何將郵件分類為垃圾郵件和非垃圾郵件。

我們不想要“樸素的貝葉斯”,我們想要樸素貝葉斯給出的模型,就是我們可以用來對郵件進行分類的模型(概率向量和使用概率概率的預測演算法)。我們想要的是模型,而不是用來建立模型的演算法。

從這個意義上來說,機器學習模型是一個由機器學習演算法自動編寫、或建立、或學習的程式,用來解決我們的問題。

作為開發人員,我們對人工智慧意義上的機器學習演算法的“學習”不太感興趣。我們並不關心模擬學習過程。有些人可能會關心,這很有趣,但這不是我們使用機器學習演算法的原因。

相反,我們更看重的是機器學習演算法提供的自動程式設計能力更感興趣。我們希望能夠有效地建立一個有效的模型,並將其融入到我們的軟體專案中。

機器學習演算法執行自動程式設計,而機器學習模型是為我們建立的程式。

相關文章