這個(gè)問(wèn)題沒(méi)有直接而明確的答案。答案取決于許多因素,比如問(wèn)題陳述和您想要的輸出類型、數(shù)據(jù)的類型和大小、可用的計(jì)算時(shí)間、特征數(shù)量以及數(shù)據(jù)中的觀測(cè)等。
以下是選擇算法時(shí)要考慮的幾個(gè)重要因素。
1.訓(xùn)練數(shù)據(jù)的大小
通常建議收集大量數(shù)據(jù)以獲得可靠的預(yù)測(cè)。然而,數(shù)據(jù)的可用性往往是制約因素。因此,如果訓(xùn)練數(shù)據(jù)較小,或者數(shù)據(jù)集的觀測(cè)數(shù)量較少,特征數(shù)量較多(比如遺傳或文本數(shù)據(jù)),應(yīng)選擇高偏差 / 低方差的算法,比如線性回歸、樸素貝葉斯或線性 SVM。
如果訓(xùn)練數(shù)據(jù)足夠大,觀測(cè)數(shù)量與特征數(shù)量相比較多,可以選擇低偏差 / 高方差算法,比如 KNN、決策樹(shù)或內(nèi)核 SVM。
2.輸出的準(zhǔn)確性及 / 或可解釋性
模型的準(zhǔn)確性意味著函數(shù)預(yù)測(cè)給定觀測(cè)的響應(yīng)值,這個(gè)響應(yīng)值接近該觀測(cè)的實(shí)際響應(yīng)值。高度可解釋的算法(線性回歸等限制性模型)意味著,人們可以輕松理解任何單個(gè)預(yù)測(cè)變量如何與響應(yīng)相關(guān)聯(lián),而靈活的模型提供了更高的準(zhǔn)確性,但是以低可解釋性為代價(jià)。
圖 1. 使用不同的統(tǒng)計(jì)學(xué)習(xí)方法,表示了準(zhǔn)確性和可解釋性之間的取舍
一些算法稱為限制性算法,因?yàn)樗鼈兩捎成浜瘮?shù)的一小批形狀。比如說(shuō),線性回歸是一種限制性方法,因?yàn)樗荒苌芍本€等線性函數(shù)。
一些算法稱為靈活性算法,因?yàn)樗鼈兩捎成浜瘮?shù)的一大批形狀。比如說(shuō),k=1 的 KNN 非常靈活,因?yàn)樗鼤?huì)考慮每個(gè)輸入數(shù)據(jù)點(diǎn)以生成映射輸出函數(shù)。下圖顯示了靈活性算法和限制性算法之間的取舍。
圖 2. 使用不同的統(tǒng)計(jì)學(xué)習(xí)方法,表示了靈活性和可解釋性之間的取舍
現(xiàn)在,使用哪種算法取決于業(yè)務(wù)問(wèn)題的目標(biāo)。如果目標(biāo)是推理,限制性模型更好,因?yàn)樗鼈儤O易于解釋。如果目標(biāo)是更高的準(zhǔn)確性,靈活性模型更好。隨著某種方法的靈活性提高,其可解釋性一般會(huì)降低。
3.速度或訓(xùn)練時(shí)間
更高的準(zhǔn)確性通常意味著更長(zhǎng)的訓(xùn)練時(shí)間。此外,算法需要更多時(shí)間來(lái)訓(xùn)練龐大的訓(xùn)練數(shù)據(jù)。在實(shí)際應(yīng)用中,算法的選擇主要取決于這兩個(gè)因素。
樸素貝葉斯、線性和邏輯回歸等算法易于實(shí)現(xiàn),且運(yùn)行迅速。像需要調(diào)整參數(shù)的 SVM、高收斂時(shí)間的神經(jīng)網(wǎng)絡(luò)和隨機(jī)森林等算法需要大量的時(shí)間來(lái)訓(xùn)練數(shù)據(jù)。
4.線性
許多算法的運(yùn)作基于這個(gè)假設(shè):類可以被一條直線(或更高維度的模擬)來(lái)分隔。示例包括邏輯回歸和支持向量機(jī)。線性回歸算法假設(shè)數(shù)據(jù)趨勢(shì)遵循一條直線。如果數(shù)據(jù)是線性的,這些算法的性能就相當(dāng)不錯(cuò)。
然而,數(shù)據(jù)并不總是線性的,因此我們需要可以處理高維和復(fù)雜數(shù)據(jù)結(jié)構(gòu)的其他算法。例子包括內(nèi)核 SVM、隨機(jī)森林和神經(jīng)網(wǎng)絡(luò)。
找出線性的最佳方法是擬合線性線,或者運(yùn)行邏輯回歸或 SVM,以檢查剩余錯(cuò)誤。較多的錯(cuò)誤意味著數(shù)據(jù)不是線性的,需要復(fù)雜的算法來(lái)擬合。
5.特征數(shù)量
數(shù)據(jù)集可能有大量特征,這些特征可能并非全部相關(guān)、重要。針對(duì)某種類型的數(shù)據(jù),比如遺傳數(shù)據(jù)或文本數(shù)據(jù),與數(shù)據(jù)點(diǎn)的數(shù)量相比,特征的數(shù)量可能非常大。
大量特征會(huì)阻礙一些學(xué)習(xí)算法,從而使訓(xùn)練時(shí)間過(guò)長(zhǎng)。SVM 更適合具有大片特征空間和較少觀測(cè)的數(shù)據(jù)。應(yīng)該使用 PCA 和特征選擇技術(shù),以降低維度,并選擇重要的特征。
這是一份方便的速查表,詳細(xì)表明了可用于不同類型的機(jī)器學(xué)習(xí)問(wèn)題的算法。
機(jī)器學(xué)習(xí)算法可以分為監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)。這篇文章逐步介紹了如何使用速查表的過(guò)程速查表主要分為兩種學(xué)習(xí)類型:
在訓(xùn)練數(shù)據(jù)具有對(duì)應(yīng)于輸入變量的輸出變量這種情況下,采用監(jiān)督學(xué)習(xí)算法。該算法分析輸入數(shù)據(jù),并學(xué)習(xí)函數(shù),以映射輸入變量和輸出變量之間的關(guān)系。
監(jiān)督學(xué)習(xí)可以進(jìn)一步分為回歸、分類、預(yù)測(cè)和異常檢測(cè)。
當(dāng)訓(xùn)練數(shù)據(jù)沒(méi)有響應(yīng)變量時(shí),使用無(wú)監(jiān)督學(xué)習(xí)算法。這類算法試圖找到數(shù)據(jù)中的內(nèi)在模式和隱藏結(jié)構(gòu)。聚類算法和降維算法是兩類典型的無(wú)監(jiān)督學(xué)習(xí)算法。
下面的信息圖簡(jiǎn)單地解釋了回歸、分類、異常檢測(cè)和聚類以及可以運(yùn)用這每一種算法的示例。
嘗試解決新問(wèn)題時(shí)須考慮的要點(diǎn)如下:
定義問(wèn)題。問(wèn)題的目標(biāo)是什么?
探索數(shù)據(jù),并熟悉數(shù)據(jù)。
從基本模型開(kāi)始,構(gòu)建基準(zhǔn)模型,然后嘗試較復(fù)雜的方法。
話雖如此,始終記得“更好的數(shù)據(jù)常常勝過(guò)更好的算法”。設(shè)計(jì)好的特征同等重要。嘗試一堆算法,并比較各自的性能,為您的具體任務(wù)選擇最佳算法。此外,嘗試集成學(xué)習(xí)(ensemble)方法,因?yàn)檫@種方法提供的準(zhǔn)確性通常好得多。