機(jī)器學(xué)習(xí)中算法與模型的區(qū)別
機(jī)器學(xué)習(xí)中的“算法”是什么?
機(jī)器學(xué)習(xí)中的“算法”是在數(shù)據(jù)上運(yùn)行以創(chuàng)建機(jī)器學(xué)習(xí)“模型”的過(guò)程。
機(jī)器學(xué)習(xí)算法執(zhí)行“模式識(shí)別”。算法從數(shù)據(jù)中“學(xué)習(xí)”,或者對(duì)數(shù)據(jù)集進(jìn)行“擬合”。
機(jī)器學(xué)習(xí)算法有很多。比如,我們有分類(lèi)的算法,如 K- 近鄰算法;回歸的算法,如線(xiàn)性回歸;聚類(lèi)的算法,如 K- 均值算法。
下面是機(jī)器學(xué)習(xí)算法的例子:
線(xiàn)性回歸 邏輯回歸 決策樹(shù) 人工神經(jīng)網(wǎng)絡(luò) K- 最近鄰 K- 均值
你可以把機(jī)器學(xué)習(xí)算法想象成計(jì)算機(jī)科學(xué)中的任何其他算法。
例如,你可能熟悉的一些其他類(lèi)型的算法包括用于數(shù)據(jù)排序的冒泡排序和用于搜索的最佳優(yōu)先排序。
因此,機(jī)器學(xué)習(xí)算法具有許多特性:
機(jī)器學(xué)習(xí)計(jì)算法可以用數(shù)學(xué)和偽代碼來(lái)描述。 可以對(duì)機(jī)器學(xué)習(xí)算法的效率進(jìn)行分析和描述。 機(jī)器學(xué)習(xí)算法可以用任何一種現(xiàn)代編程語(yǔ)言來(lái)實(shí)現(xiàn)。
例如,你可能會(huì)在研究論文和教科書(shū)中看到用偽代碼或 線(xiàn)性代數(shù) 描述的機(jī)器學(xué)習(xí)算法。你可以看到一個(gè)特定的機(jī)器學(xué)習(xí)算法與另一個(gè)特性算法相比的計(jì)算效率。
學(xué)術(shù)界可以設(shè)計(jì)出全息你的機(jī)器學(xué)習(xí)算法,而機(jī)器學(xué)習(xí)實(shí)踐者可以在他們的項(xiàng)目中使用標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)算法。這就像計(jì)算機(jī)科學(xué)的其他領(lǐng)域一樣,學(xué)者可以設(shè)計(jì)出全新的排序算法,程序員可以在應(yīng)用程序中使用標(biāo)準(zhǔn)的排序算法。
你還可能會(huì)看到多個(gè)機(jī)器學(xué)習(xí)算法實(shí)現(xiàn),并在一個(gè)具有標(biāo)準(zhǔn) API 的庫(kù)中提供。一個(gè)流行的例子是 scikit-learn 庫(kù),它在 Python 中提供了許多分類(lèi)、回歸和聚類(lèi)機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)。
機(jī)器學(xué)習(xí)中的“模型”是什么?
機(jī)器學(xué)習(xí)中的“模型”是運(yùn)行在數(shù)據(jù)上的機(jī)器學(xué)習(xí)算法的輸出。
模型表示機(jī)器學(xué)習(xí)算法所學(xué)到的內(nèi)容。
模型是在訓(xùn)練數(shù)據(jù)上運(yùn)行機(jī)器學(xué)習(xí)算法后保存的“東西”,它表示用于進(jìn)行預(yù)測(cè)所需的規(guī)則、數(shù)字和任何其他特定于算法的數(shù)據(jù)結(jié)構(gòu)。
我舉一些例子,可能會(huì)讓人更清楚地明白這一點(diǎn):
線(xiàn)性回歸算法的結(jié)果是一個(gè)由具有特定值的稀疏向量組成的模型。 決策樹(shù)算法的結(jié)果是一個(gè)由具有特定值的 if-then 語(yǔ)句樹(shù)組成的模型。 神經(jīng)網(wǎng)絡(luò) / 反向傳播 / 梯度下降算法一起產(chǎn)生一個(gè)由具有特定值的向量或權(quán)重矩陣和特定值的圖結(jié)構(gòu)組成的模型。
機(jī)器學(xué)模型對(duì)于初學(xué)者來(lái)說(shuō)更具挑戰(zhàn)性,因?yàn)樗c計(jì)算機(jī)科學(xué)中的其他算法沒(méi)有明確的類(lèi)比。
例如,排序算法的排序列表輸出并不是真正的模型。
最好的類(lèi)比是將機(jī)器學(xué)習(xí)模型想象成一個(gè)“程序”。
機(jī)器學(xué)習(xí)模型“程序”由數(shù)據(jù)和利用數(shù)據(jù)進(jìn)行預(yù)測(cè)的過(guò)程組成。
例如,考慮線(xiàn)性回歸算法和由此產(chǎn)生的模型。該模型由系數(shù)(數(shù)據(jù))向量組成,這些系數(shù)(數(shù)據(jù))與作為輸入的一行新數(shù)據(jù)相乘并求和,以便進(jìn)行預(yù)測(cè)(預(yù)測(cè)過(guò)程)。
我們將數(shù)據(jù)保存為機(jī)器學(xué)習(xí)模型,以備后用。
我們經(jīng)常使用機(jī)器學(xué)習(xí)庫(kù)提供的機(jī)器學(xué)習(xí)模型的預(yù)測(cè)過(guò)程。有時(shí)候,我們可以自己實(shí)現(xiàn)預(yù)測(cè)過(guò)程作為我們應(yīng)用程序的一部分。考慮到大多數(shù)預(yù)測(cè)過(guò)程都非常簡(jiǎn)單,這通常都是直截了當(dāng)?shù)摹?/p>
算法與模型框架
現(xiàn)在我們已經(jīng)熟悉了機(jī)器學(xué)習(xí)的“算法”和機(jī)器學(xué)習(xí)的“模型”。
具體來(lái)說(shuō),就是對(duì)數(shù)據(jù)運(yùn)行算法來(lái)創(chuàng)建模型。
機(jī)器學(xué)習(xí) =>機(jī)器學(xué)習(xí)模型
我們還了解到,模型由數(shù)據(jù)和如何使用數(shù)據(jù)對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)的過(guò)程組成。如果你愿意的話(huà),你也可以將這一過(guò)程視為一種預(yù)測(cè)算法。
機(jī)器學(xué)習(xí)模型 == 模型數(shù)據(jù) + 預(yù)測(cè)算法
這種區(qū)分對(duì)于理解廣泛的算法非常有幫助。
例如,大多數(shù)算法的所有工作都在“算法”中,而“預(yù)測(cè)算法”的工作很少。
通常情況下,算法是某種優(yōu)化程序,即在訓(xùn)練數(shù)據(jù)集上使模型(數(shù)據(jù) + 預(yù)測(cè)算法)的誤差最小化。線(xiàn)性回歸算法就是一個(gè)很好的例子。它執(zhí)行一個(gè)優(yōu)化過(guò)程(或用線(xiàn)性代數(shù)進(jìn)行分析求解),找到一組權(quán)重,使訓(xùn)練數(shù)據(jù)集上的誤差之和平方最小化。
線(xiàn)性回歸
算法:在訓(xùn)練數(shù)據(jù)集上找到誤差最小的系數(shù)集。 模型:
模型數(shù)據(jù):整個(gè)訓(xùn)練數(shù)據(jù)集。 預(yù)測(cè)算法:找出 K 個(gè)最相似的行,取其目標(biāo)變量的平均值。
有些算法很瑣碎,甚至什么都不做,所有的工作都在模型或預(yù)測(cè)算法中。
K- 最近鄰算法除了保存整個(gè)訓(xùn)練數(shù)據(jù)集外沒(méi)有其他的算法。因此,弄醒數(shù)據(jù)就是整個(gè)訓(xùn)練數(shù)據(jù)集,所有的工作都在預(yù)測(cè)算法中,即,一行新數(shù)據(jù)如何與保存的訓(xùn)練數(shù)據(jù)集交互以作出預(yù)測(cè)。
K- 最近鄰
算法:保存訓(xùn)練數(shù)據(jù)。 模型:
模型數(shù)據(jù):整個(gè)訓(xùn)練數(shù)據(jù)集。 預(yù)測(cè)過(guò)程:找出 K 個(gè)最相似的行,取其目標(biāo)變量的平均值。
你可以把這個(gè)分解作為一個(gè)框架來(lái)理解任何機(jī)器學(xué)習(xí)算法。
機(jī)器學(xué)習(xí)是自動(dòng)編程
我們真的只是想要一個(gè)機(jī)器學(xué)習(xí)的“模型”,而“算法”就是我們獲得模型的路徑。
機(jī)器學(xué)習(xí)技術(shù)用于解決其他方法無(wú)法有效或高效解決的問(wèn)題。
例如,如果我們需要將電子郵件分類(lèi)為垃圾郵件或非垃圾郵件,我們需要一個(gè)軟件程序來(lái)完成此任務(wù)。
我們可以坐下來(lái),手動(dòng)查看大量的電子郵件,然后寫(xiě) if 語(yǔ)句來(lái)完成合格任務(wù)。人們已經(jīng)試過(guò)這個(gè)方法。事實(shí)證明,這種方法是緩慢的、脆弱的,而且效果也不是很好。
相反,我們可以使用機(jī)器學(xué)習(xí)技術(shù)來(lái)解決這個(gè)問(wèn)題。具體來(lái)說(shuō),像 樸素貝葉斯(Naive Bayes)這樣的算法就可以從大量的歷史郵件樣本數(shù)據(jù)集中學(xué)習(xí)如何將郵件分類(lèi)為垃圾郵件和非垃圾郵件。
我們不想要“樸素的貝葉斯”,我們想要樸素貝葉斯給出的模型,就是我們可以用來(lái)對(duì)郵件進(jìn)行分類(lèi)的模型(概率向量和使用概率概率的預(yù)測(cè)算法)。我們想要的是模型,而不是用來(lái)創(chuàng)建模型的算法。
從這個(gè)意義上來(lái)說(shuō),機(jī)器學(xué)習(xí)模型是一個(gè)由機(jī)器學(xué)習(xí)算法自動(dòng)編寫(xiě)、或創(chuàng)建、或?qū)W習(xí)的程序,用來(lái)解決我們的問(wèn)題。
作為開(kāi)發(fā)人員,我們對(duì)人工智能意義上的機(jī)器學(xué)習(xí)算法的“學(xué)習(xí)”不太感興趣。我們并不關(guān)心模擬學(xué)習(xí)過(guò)程。有些人可能會(huì)關(guān)心,這很有趣,但這不是我們使用機(jī)器學(xué)習(xí)算法的原因。
相反,我們更看重的是機(jī)器學(xué)習(xí)算法提供的自動(dòng)編程能力更感興趣。我們希望能夠有效地創(chuàng)建一個(gè)有效的模型,并將其融入到我們的軟件項(xiàng)目中。
機(jī)器學(xué)習(xí)算法執(zhí)行自動(dòng)編程,而機(jī)器學(xué)習(xí)模型是為我們創(chuàng)建的程序。