來自微信公眾號:AI前線

作者 | Jason Brownlee 譯者 | Sambodhi 策劃&編輯 | 劉燕

原文連結:請點選

文章僅用於學習交流,如有侵權請聯絡刪除

機器學習涉及到機器學習

演算法

模型

的使用。對於初學者來說,這很容易讓人混淆,因為“機器學習演算法”經常與“機器學習模型”交替使用。這兩個到底是一樣的東西呢,還是不一樣的東西?作為開發人員,你對排序演算法、搜尋演算法等“演算法”的直覺,將有助於你釐清這個困惑。在本文中,我將闡述機器學習“演算法”和“模型”之間的區別。

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

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

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

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

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

線性迴歸

邏輯迴歸

決策樹

人工神經網路

K- 最近鄰

K- 均值

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

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

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

機器學習計算法可以用數學和虛擬碼來描述。

可以對機器學習演算法的效率進行分析和描述。

機器學習演算法可以用任何一種現代程式語言來實現。

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

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

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

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

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

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

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

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

線性迴歸演算法的結果是一個由具有特定值的稀疏向量組成的模型。

決策樹演算法的結果是一個由具有特定值的 if-then 語句樹組成的模型。

神經網路 / 反向傳播 / 梯度下降演算法一起產生一個由具有特定值的向量或權重矩陣和特定值的圖結構組成的模型。

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

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

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

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

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

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

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

演算法與模型框架

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

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

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

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

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

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

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

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

線性迴歸

演算法

:在訓練資料集上找到誤差最小的係數集。

模型

模型資料

:整個訓練資料集。

預測演算法

:找出 K 個最相似的行,取其目標變數的平均值。

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

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

K- 最近鄰

演算法

:儲存訓練資料。

模型

模型資料

:整個訓練資料集。

預測過程

:找出 K 個最相似的行,取其目標變數的平均值。

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

機器學習是自動程式設計

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

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

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

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

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

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

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

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

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

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

作者介紹

Jason Brownlee 博士是機器學習專家,他教授開發人員如何透過實踐教程使用現代機器學習方法獲得結果。

延伸閱讀:

https://

machinelearningmastery。com

/difference-between-algorithm-and-model-in-machine-learning/

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

「華來知識」

成立於2017年,孵化於清華大學智慧技術與系統國家重點實驗室,是一家技術領先的人工智慧企業。公司專注於提供新一代人工智慧人機互動解決方案,利用自身技術為企業打造由人工智慧驅動的知識體系,藉此改善人類生活。

「華來知識」

將持續為企業客戶提供優質服務,助力企業在專業領域的人工智慧應用,提供完善可靠高效的產品解決方案。