常見機器學(xué)習(xí)算法的摘要。 > Photo by Santiago Lacarta on Unsplash 近年來,,由于對技術(shù)的高需求和進步,,機器學(xué)習(xí)的普及已大大增加。 機器學(xué)習(xí)可以從數(shù)據(jù)中創(chuàng)造價值的潛力使其吸引了許多不同行業(yè)的企業(yè),。 大多數(shù)機器學(xué)習(xí)產(chǎn)品都是使用現(xiàn)成的機器學(xué)習(xí)算法進行設(shè)計和實現(xiàn)的,,并且需要進行一些調(diào)整和細微更改。 機器學(xué)習(xí)算法種類繁多,,可分為三大類: · 監(jiān)督學(xué)習(xí)算法在給定一組觀察值的情況下,,對特征(獨立變量)和標簽(目標)之間的關(guān)系進行建模。 然后,,使用該模型使用特征預(yù)測新觀測的標簽,。 根據(jù)目標變量的特性,它可以是分類(離散目標變量)或回歸(連續(xù)目標變量)任務(wù),。 · 無監(jiān)督學(xué)習(xí)算法試圖在未標記的數(shù)據(jù)中找到結(jié)構(gòu),。 · 強化學(xué)習(xí)基于行動獎勵原則。 代理通過迭代計算其行為的報酬來學(xué)習(xí)達到目標,。 在本文中,,我將介紹前兩類中最常見的算法。 注意:盡管深度學(xué)習(xí)是機器學(xué)習(xí)的一個子領(lǐng)域,,但我不會在本文中包含任何深度學(xué)習(xí)算法,。 我認為深度學(xué)習(xí)算法由于復(fù)雜性和動態(tài)性而應(yīng)分開討論。 此外,我會猶豫地使這篇文章過長,,使讀者感到厭煩,。 開始吧。 1.線性回歸線性回歸是一種有監(jiān)督的學(xué)習(xí)算法,,它通過對數(shù)據(jù)擬合線性方程,,嘗試對連續(xù)目標變量和一個或多個自變量之間的關(guān)系進行建模。 為了使線性回歸成為一個不錯的選擇,,自變量和目標變量之間必須存在線性關(guān)系,。 有許多工具可以探索變量之間的關(guān)系,例如散點圖和相關(guān)矩陣,。 例如,,下面的散點圖顯示了自變量(x軸)和因變量(y軸)之間的正相關(guān)。 隨著一個增加,,另一個也增加,。 線性回歸模型試圖使回歸線適合最能表示關(guān)系或相關(guān)性的數(shù)據(jù)點。 最常用的技術(shù)是普通最小二乘(OLE),。 使用此方法,,可以通過最小化數(shù)據(jù)點和回歸線之間距離的平方和來找到最佳回歸線。 對于上面的數(shù)據(jù)點,,使用OLE獲得的回歸線看起來像: 2.支持向量機支持向量機(SVM)是一種監(jiān)督學(xué)習(xí)算法,,主要用于分類任務(wù),但也適用于回歸任務(wù),。 SVM通過繪制決策邊界來區(qū)分類,。 如何繪制或確定決策邊界是SVM算法中最關(guān)鍵的部分。 在創(chuàng)建決策邊界之前,,將每個觀察值(或數(shù)據(jù)點)繪制在n維空間中,。 ' n'是所使用功能的數(shù)量。 例如,,如果我們使用'長度'和'寬度'對不同的'單元格'進行分類,,則觀察結(jié)果將繪制在二維空間中,并且決策邊界為一條線,。 如果我們使用3個要素,,則決策邊界是3維空間中的平面。 如果我們使用3個以上的特征,,則決策邊界將變成一個很難可視化的超平面,。 > Decision boundary in 2D space is a line 決策邊界以與支持向量的距離最大的方式繪制。 如果決策邊界距離支持向量太近,,它將對噪聲高度敏感并且不能很好地泛化,。 即使自變量的很小變化也可能導(dǎo)致分類錯誤,。 數(shù)據(jù)點并非總是如上圖所示線性可分離。 在這些情況下,,SVM使用內(nèi)核技巧來測量較高維空間中數(shù)據(jù)點的相似性(或接近度),,以使它們線性可分離。 內(nèi)核功能是一種相似性度量,。 輸入是原始要素,,輸出是新要素空間中的相似性度量。 這里的相似度表示緊密度,。 實際上將數(shù)據(jù)點轉(zhuǎn)換為高維特征空間是一項昂貴的操作,。 該算法實際上并未將數(shù)據(jù)點轉(zhuǎn)換為新的高維特征空間。 內(nèi)核化SVM無需實際進行變換就可以根據(jù)高維特征空間中的相似性度量來計算決策邊界,。 我認為這就是為什么它也稱為內(nèi)核技巧,。 在維數(shù)大于樣本數(shù)的情況下,SVM特別有效,。 找到?jīng)Q策邊界時,,SVM使用訓(xùn)練點的子集而不是所有點,從而提高了存儲效率,。 另一方面,,大型數(shù)據(jù)集的訓(xùn)練時間會增加,這會對性能產(chǎn)生負面影響,。 3.樸素貝葉斯樸素貝葉斯是一種用于分類任務(wù)的監(jiān)督學(xué)習(xí)算法。 因此,,它也被稱為樸素貝葉斯分類器,。 樸素貝葉斯假設(shè)要素彼此獨立,要素之間沒有關(guān)聯(lián),。 但是,,現(xiàn)實生活中并非如此。 特征不相關(guān)的這種天真假設(shè)是將該算法稱為'天真'的原因,。 樸素貝葉斯算法的直覺是貝葉斯定理: p(A | B):給定事件B發(fā)生事件A的概率 p(B | A):給定事件A,,事件B的概率 p(A):事件A的概率 p(B):事件B的概率 樸素貝葉斯分類器在給定一組特征值(即p(yi | x1,x2,,…,,xn))的情況下計算類的概率。 將其輸入貝葉斯定理: p(x1,,x2,,…,xn | yi)表示給定類別標簽的特定特征組合(數(shù)據(jù)集中的觀察值/行)的概率,。 我們需要非常大的數(shù)據(jù)集來估計特征值所有不同組合的概率分布,。 為了克服這個問題,,樸素貝葉斯算法假定所有特征彼此獨立。 此外,,可以刪除分母(p(x1,,x2,…,,xn)),,因為它僅對給定觀測值(p(yi | x1,x2,,…,,xn)的一類條件概率的值進行歸一化 )。 類(p(yi))的概率很容易計算: 在特征是獨立的假設(shè)下,,p(x1,,x2,…,,xn | yi)可以寫成: 給定類別標簽(即p(x1 | yi))的單個特征的條件概率可以從數(shù)據(jù)中輕松估算,。 該算法需要為每個類別獨立存儲特征的概率分布。 例如,,如果有5個類別和10個特征,,則需要存儲50個不同的概率分布。 將所有這些加在一起,,對于樸素貝葉斯算法來說,,計算給定特征值(p(yi | x1,x2,,…,,xn))觀察類的概率變得容易。 與復(fù)雜算法相比,,所有特征都是獨立的這一假設(shè)使樸素貝葉斯算法非??臁?在某些情況下,,速度比精度更高,。 另一方面,相同的假設(shè)使樸素貝葉斯算法不如復(fù)雜算法準確,。 速度是有代價的,! 4. Logistic回歸邏輯回歸是一種監(jiān)督學(xué)習(xí)算法,主要用于二進制分類問題,。 盡管'回歸'與'分類'相矛盾,,但是這里的重點是'邏輯'一詞,指的是在該算法中執(zhí)行分類任務(wù)的邏輯函數(shù),。 邏輯回歸是一種簡單但非常有效的分類算法,,因此通常用于許多二進制分類任務(wù),。 客戶流失,垃圾郵件,,網(wǎng)站或廣告點擊預(yù)測是邏輯回歸提供強大解決方案的一些示例,。 邏輯回歸的基礎(chǔ)是邏輯函數(shù),也稱為Sigmoid函數(shù),,該函數(shù)可以接受任何實數(shù)值,,并將其映射到0到1之間的一個值。 考慮我們有以下線性方程式可以解決: Logistic回歸模型將線性方程式作為輸入,,并使用logistic函數(shù)和對數(shù)賠率執(zhí)行二進制分類任務(wù),。 然后,我們將得到著名的邏輯回歸形圖: 我們可以按原樣使用計算出的概率,。 例如,,輸出可以是'此電子郵件為垃圾郵件的概率為95%'或'客戶點擊此廣告的概率為70%'。 但是,,在大多數(shù)情況下,,概率用于對數(shù)據(jù)點進行分類。 例如,,如果概率大于50%,,則預(yù)測為肯定類別(1)。 否則,,預(yù)測為否定等級(0),。 對于所有高于50%的概率值,并不總是希望選擇肯定的類別,。 關(guān)于垃圾郵件案例,,我們幾乎必須確定要將電子郵件歸類為垃圾郵件。 由于檢測為垃圾郵件的電子郵件直接進入垃圾郵件文件夾,,因此我們不希望用戶錯過重要的電子郵件。 除非我們幾乎確定,,否則電子郵件不會被歸類為垃圾郵件,。 另一方面,在與健康相關(guān)的問題中進行分類時,,要求我們更加敏感,。 即使我們有點懷疑細胞是惡性的,我們也不想錯過它,。 因此,,用作正面和負面類別之間閾值的值取決于問題。 很好的是,,邏輯回歸使我們可以調(diào)整此閾值,。 5. K最近鄰居(kNN)K最近鄰(kNN)是一種監(jiān)督學(xué)習(xí)算法,,可用于解決分類和回歸任務(wù)。 kNN背后的主要思想是,,數(shù)據(jù)點的值或類由其周圍的數(shù)據(jù)點確定,。 kNN分類器通過多數(shù)投票原則確定數(shù)據(jù)點的類別。 例如,,如果k設(shè)置為5,,則檢查5個最接近點的類別。 根據(jù)多數(shù)類別進行預(yù)測,。 同樣,,kNN回歸采用5個最接近點的平均值。 讓我們來看一個例子,。 考慮以下屬于4個不同類別的數(shù)據(jù)點: 讓我們看看預(yù)測的類別如何根據(jù)k值變化: 確定最佳k值非常重要,。 如果k太低,則模型太具體,,不能很好地概括,。 它還傾向于對噪聲敏感。 該模型在火車上實現(xiàn)了很高的準確性,,但是對于新的,,以前看不見的數(shù)據(jù)點而言,它的預(yù)測能力很差,。 因此,,我們很可能最終會得出過擬合模型。 另一方面,,如果k太大,,則模型過于籠統(tǒng),在訓(xùn)練集和測試集上都不是很好的預(yù)測指標,。 這種情況稱為欠擬合,。 kNN簡單易懂。 它沒有做任何假設(shè),,因此可以在非線性任務(wù)中實現(xiàn),。 隨著數(shù)據(jù)點數(shù)量的增加,kNN變得非常慢,,因為模型需要存儲所有數(shù)據(jù)點,。 因此,它也不是有效的存儲器,。 kNN的另一個缺點是它對異常值敏感,。 6.決策樹決策樹建立在反復(fù)詢問問題以對數(shù)據(jù)進行分區(qū)的基礎(chǔ)上。 使用決策樹的可視化表示來更容易地概念化分區(qū)數(shù)據(jù): 這代表了預(yù)測客戶流失的決策樹,。 第一次劃分是基于每月的費用金額,。 然后,,算法不斷詢問問題以分離類標簽。 隨著樹的深入,,問題變得更加具體,。 決策樹算法的目的是在每個分區(qū)盡可能多地提高預(yù)測性,,以便模型不斷獲取有關(guān)數(shù)據(jù)集的信息,。 隨機分割要素通常不能使我們深入了解數(shù)據(jù)集。 增加節(jié)點純度的拆分更具參考價值,。 節(jié)點的純度與該節(jié)點中不同類別的分布成反比,。 要提出的問題以提高純度或減少雜質(zhì)的方式選擇,。 我們問多少個問題? 我們什么時候停止,? 我們的樹什么時候足以解決我們的分類問題,? 對所有這些問題的答案使我們想到了機器學(xué)習(xí)中最重要的概念之一:過度擬合。 該模型可以一直詢問問題,,直到所有節(jié)點都純?yōu)橹埂?但是,,這將是一個過于具體的模型,不能很好地推廣,。 它通過訓(xùn)練集可以達到很高的精度,,但是在新的,以前看不見的數(shù)據(jù)點上表現(xiàn)不佳,,這表明過擬合,。 scikit-learn中決策樹算法的樹深度由max_depth參數(shù)控制。 決策樹算法通常不需要規(guī)范化或縮放特征,。 它還適用于混合特征數(shù)據(jù)類型(連續(xù),,分類,二進制),。 不利的一面是,,它很容易過度擬合,因此必須進行匯總才能很好地概括,。 6.隨機森林隨機森林是許多決策樹的集合,。 隨機森林是使用稱為裝袋的方法構(gòu)建的,其中決策樹用作并行估計器,。 如果用于分類問題,則結(jié)果基于從每個決策樹收到的結(jié)果的多數(shù)票,。 對于回歸,,葉節(jié)點的預(yù)測是該葉中目標值的平均值。 隨機森林回歸采用決策樹結(jié)果的平均值,。 隨機森林減少了過度擬合的風(fēng)險,,準確性比單個決策樹高得多,。 此外,隨機森林中的決策樹并行運行,,因此時間不會成為瓶頸,。 隨機森林的成功很大程度上取決于使用不相關(guān)的決策樹。 如果我們使用相同或非常相似的樹,,則總體結(jié)果將與單個決策樹的結(jié)果相差無幾,。 隨機森林通過自舉和特征隨機性來實現(xiàn)具有不相關(guān)的決策樹。 自舉是從訓(xùn)練數(shù)據(jù)中隨機選擇樣本進行替換,。 它們稱為引導(dǎo)程序樣本,。 > Bootstrap samples (Figure source) 通過為隨機森林中的每個決策樹隨機選擇特征來實現(xiàn)特征隨機性。 可以使用max_features參數(shù)控制隨機森林中每棵樹使用的特征數(shù)量,。 > Feature randomness 隨機森林是針對許多不同問題的高度精確的模型,,不需要規(guī)范化或縮放。 但是,,與快速線性模型(即樸素貝葉斯)相比,,對于高維數(shù)據(jù)集(即文本分類)而言,這不是一個好選擇,。 7.梯度提升決策樹(GBDT)GBDT是一種集成算法,,使用提升方法來組合各個決策樹。 提升意味著將一系列學(xué)習(xí)算法串聯(lián)起來,,以從許多順序連接的弱學(xué)習(xí)者那里獲得一個強學(xué)習(xí)者,。 對于GBDT,弱學(xué)習(xí)者是決策樹,。 每棵樹都試圖最小化前一棵樹的錯誤,。 Boosting中的樹是學(xué)習(xí)能力較弱的樹,但是連續(xù)添加許多樹,,每棵樹都專注于前一棵樹的錯誤,,因此可以構(gòu)建一個高效且準確的模型。 與裝袋不同,,加強不涉及自舉采樣,。 每次添加新樹時,它都適合初始數(shù)據(jù)集的修改版本,。 由于樹是順序添加的,,因此增強算法學(xué)習(xí)緩慢。 在統(tǒng)計學(xué)習(xí)中,,學(xué)習(xí)緩慢的模型表現(xiàn)更好,。 損失函數(shù)用于檢測殘差。 例如,均方誤差(MSE)可用于回歸任務(wù),,對數(shù)損失(對數(shù)損失)可用于分類任務(wù),。 值得注意的是,添加新樹后,,模型中的現(xiàn)有樹不會更改,。 添加的決策樹適合當前模型的殘差。 學(xué)習(xí)速率和n_estimator是用于梯度提升決策樹的兩個關(guān)鍵超參數(shù),。 學(xué)習(xí)率表示為α,,僅表示模型學(xué)習(xí)的速度。 每棵新樹都會修改整個模型,。 修改的大小由學(xué)習(xí)率控制,。 n_estimator是模型中使用的樹數(shù)。 如果學(xué)習(xí)率低,,我們需要更多的樹來訓(xùn)練模型,。 但是,我們在選擇樹數(shù)時需要非常小心,。 使用過多樹木會產(chǎn)生過度擬合的高風(fēng)險,。 與隨機森林相比,GBDT在分類和回歸任務(wù)上都非常有效,,并且提供了更準確的預(yù)測,。 它可以處理混合類型的功能,不需要預(yù)處理,。 GBDT需要仔細調(diào)整超參數(shù),,以防止模型過度擬合。 GBDT算法是如此強大,,以至于已經(jīng)實現(xiàn)了許多升級版本,,例如XGBOOST,LightGBM,,CatBoost,。 關(guān)于過度擬合的注意事項 隨機森林和梯度增強決策樹之間的一個關(guān)鍵區(qū)別是模型中使用的樹數(shù)。 增加隨機森林中的樹木數(shù)量不會導(dǎo)致過度擬合,。 在某一點之后,,模型的準確性不會因添加更多樹而增加,但也不會因添加過多樹而受到負面影響,。 由于計算原因,,您仍然不想添加不必要的樹,但是不存在與隨機森林中的樹數(shù)相關(guān)聯(lián)的過擬合風(fēng)險,。 但是,,就過度擬合而言,,梯度增強決策樹中的樹數(shù)非常關(guān)鍵。 添加過多的樹會導(dǎo)致過擬合,,因此一定要停止添加樹,這一點很重要,。 8. K-均值聚類聚類是一種將一組數(shù)據(jù)點組合在一起的方式,,即將相似的數(shù)據(jù)點組合在一起。 因此,,聚類算法在數(shù)據(jù)點之間尋找相似性或相異性,。 聚類是一種無監(jiān)督的學(xué)習(xí)方法,因此沒有與數(shù)據(jù)點相關(guān)的標簽,。 聚類算法試圖找到數(shù)據(jù)的底層結(jié)構(gòu),。 聚類不是分類。 分類任務(wù)中的觀測值(或數(shù)據(jù)點)具有標簽,。 每個觀察結(jié)果根據(jù)一些測量結(jié)果進行分類,。 分類算法嘗試對觀測值的度量(特征)與其指定的類別之間的關(guān)系建模。 然后,,模型預(yù)測新觀測的類別,。 K-均值聚類旨在將數(shù)據(jù)分為k個聚類,以使同一聚類中的數(shù)據(jù)點相似,,而不同聚類中的數(shù)據(jù)點相距更遠,。 因此,這是一種基于分區(qū)的群集技術(shù),。 兩個點的相似性取決于它們之間的距離,。 K-均值聚類試圖使聚類內(nèi)的距離最小化,并使不同聚類之間的距離最大化,。 K-均值算法無法確定簇數(shù),。 創(chuàng)建KMeans對象時,我們需要對其進行定義,,這可能是一項艱巨的任務(wù),。 考慮以下數(shù)據(jù)集的2D可視化: 可以將其劃分為4個不同的群集,如下所示: 現(xiàn)實生活中的數(shù)據(jù)集要復(fù)雜得多,,在這些數(shù)據(jù)集中聚類沒有明顯分開,。 但是,該算法以相同的方式工作,。 K均值是一個迭代過程,。 它基于期望最大化算法。 確定群集數(shù)量后,,它可以通過執(zhí)行以下步驟來工作: · 為每個群集隨機選擇形心(群集的中心),。 · 計算所有數(shù)據(jù)點到質(zhì)心的距離,。 · 將數(shù)據(jù)點分配給最近的群集。 · 通過獲取群集中所有數(shù)據(jù)點的平均值,,找到每個群集的新質(zhì)心,。 · 重復(fù)步驟2,3和4,,直到所有點收斂并且聚類中心停止移動,。 K-Means聚類相對快速且易于解釋。 它還能夠以智能方式選擇初始質(zhì)心的位置,,從而加快收斂速度,。 k均值的挑戰(zhàn)之一是必須預(yù)先確定簇的數(shù)量。 K-means算法無法猜測數(shù)據(jù)中存在多少個簇,。 如果存在將數(shù)據(jù)中的組分開的非線性結(jié)構(gòu),,則k均值將不是一個好的選擇。 9.層次聚類分層聚類意味著通過迭代分組或分離數(shù)據(jù)點來創(chuàng)建聚類樹,。 有兩種類型的層次結(jié)構(gòu)聚類: · 聚集聚類 · 分裂聚類 分層聚類的優(yōu)點之一是我們不必指定聚類的數(shù)量(但可以),。 聚集聚類是一種自下而上的方法。 首先假定每個數(shù)據(jù)點都是一個單獨的群集,。 然后,,將相似的群集進行迭代組合。 上圖稱為樹狀圖,,該圖表示基于樹的方法,。 在分層聚類中,樹狀圖用于可視化聚類之間的關(guān)系,。 分層聚類的優(yōu)點之一是我們不必預(yù)先指定聚類的數(shù)量,。 但是,將所有數(shù)據(jù)點組合到一個群集中是不明智的,。 我們應(yīng)該在某個時候停止合并集群,。 Scikit-learn為此提供了兩個選項: · 在達到多個群集后停止(n_clusters) · 設(shè)置鏈接的閾值(distance_threshold)。 如果兩個群集之間的距離高于閾值,,則這些群集將不會合并,。 分裂聚類在現(xiàn)實生活中并不常用,因此我將簡要介紹一下,。 簡單而清晰的解釋是分裂聚類與聚集聚類相反,。 我們從一個包含所有數(shù)據(jù)點的巨型群集開始。 然后,,將數(shù)據(jù)點分為不同的群集,。 這是自下而上的方法。 層次集群總是生成相同的集群,。 K-均值聚類可能會導(dǎo)致不同的聚類,,具體取決于質(zhì)心(聚類中心)的啟動方式,。 但是,與k均值相比,,它是一種較慢的算法,。 分層群集需要很長時間才能運行,尤其是對于大型數(shù)據(jù)集,。 10. DBSCAN集群基于分區(qū)的分層聚類技術(shù)對于標準形狀的聚類非常高效,。 但是,當涉及到任意形狀的聚類或檢測離群值時,,基于密度的技術(shù)更為有效。 > Arbitrary shaped clusters > Arbitrary shaped clusters DBSCAN代表帶噪聲的應(yīng)用程序的基于密度的空間聚類,。 它能夠找到任意形狀的聚類和帶有噪聲的聚類(即離群值),。 DBSCAN的主要思想是,如果某個點與該簇中的許多點接近,,則該點屬于該簇,。 DBSCAN有兩個關(guān)鍵參數(shù): · eps:指定鄰域的距離。 如果兩個點之間的距離小于或等于eps,,則將其視為鄰居,。 · minPts:定義集群的最小數(shù)據(jù)點數(shù)。 根據(jù)這兩個參數(shù),,將點分為核心點,,邊界點或離群值: · 核心點:如果在其半徑為eps的周圍區(qū)域中至少有minPts個點(包括該點本身),則該點為核心點,。 · 邊界點:如果一個點可以從核心點到達并且在其周圍區(qū)域內(nèi)的點數(shù)少于minPts,,則它是邊界點。 · 離群值:如果一個點不是核心點并且無法從任何核心點到達,,則該點就是離群值,。 DBSCAN不需要預(yù)先指定群集數(shù)。 它對異常值具有魯棒性,,并且能夠檢測到異常值,。 在某些情況下,確定適當?shù)泥徲颍╡ps)距離并不容易,,并且需要領(lǐng)域知識,。 11.主成分分析(PCA)PCA是降維算法,它基本上從現(xiàn)有特征中衍生出新特征,,同時保留了盡可能多的信息,。 PCA是一種無監(jiān)督的學(xué)習(xí)算法,但它也廣泛用作有監(jiān)督的學(xué)習(xí)算法的預(yù)處理步驟,。 PCA通過查找數(shù)據(jù)集中要素之間的關(guān)系來推導(dǎo)新要素,。 注意:PCA是線性降維算法,。 也有非線性方法可用。 PCA的目的是通過使用較少的特征(或列)來盡可能多地解釋原始數(shù)據(jù)集中的方差,。 新派生的功能稱為主成分,。 主成分的順序是根據(jù)它們解釋的原始數(shù)據(jù)集的方差分數(shù)確定的。 主要成分是原始數(shù)據(jù)集特征的線性組合,。 PCA的優(yōu)勢在于,,使用比原始數(shù)據(jù)集少得多的特征可以保留大量原始數(shù)據(jù)集。 主成分根據(jù)其解釋的差異量進行排序,。 感謝您的閱讀,。 如果您有任何反饋意見,請告訴我,。 (本文翻譯自Soner Y?ld?r?m的文章《11 Most Common Machine Learning Algorithms Explained in a Nutshell》,,參考:https:///11-most-common-machine-learning-algorithms-explained-in-a-nutshell-cc6e98df93be) |
|