機器學習經常使用算法

機器學習經常使用35大算法php

原文連接:https://www.52ml.net/19675.html html

 

本文將帶你遍歷機器學習領域最受歡迎的算法。系統的瞭解這些算法有助於進一步掌握機器學習。固然,本文收錄的算法並不徹底,分類的方式也不惟一。不過,看完這篇文章後,下次再有算法提起,你想不起它長處和用處的可能性就很低了。本文還附有兩張算法思惟導圖供學習使用。算法

 

在本文中,我將提供兩種分類機器學習算法的方法。一是根據學習方式分類,二是根據相似的形式或功能分類。這兩種方法都頗有用,不過,本文將側重後者,也就是根據相似的形式或功能分類。在閱讀完本文之後,你將會對監督學習中最受歡迎的機器學習算法,以及它們彼此之間的關係有一個比較深入的瞭解。數據庫

 

事先說明一點,我沒有涵蓋機器學習特殊子領域的算法,好比計算智能(進化算法等)、計算機視覺(CV)、天然語言處理(NLP)、推薦系統、強化學習和圖模型。網絡

從學習方式分類機器學習

算法對一個問題建模的方式不少,能夠基於經歷、環境,或者任何咱們稱之爲輸入數據的東西。機器學習和人工智能的教科書一般會讓你首先考慮算法可以採用什麼方式學習。實際上,算法可以採用的學習方式或者學習模型只有幾種,下面我會一一說明。對機器學習算法進行分類是頗有必要的事情,由於這迫使你思考輸入數據的做用以及模型準備過程,從而選擇一個最適用於你手頭問題的算法。函數

1、五大類別學習

  1. 監督學習

    輸入數據被稱爲訓練數據,而且每個都帶有標籤,好比"廣告/非廣告",或者當時的股票價格。經過訓練過程建模,模型須要作出預測,若是預測出錯會被修正。直到模型輸出準確的結果,訓練過程會一直持續。經常使用於解決的問題有分類和迴歸。經常使用的算法包括邏輯迴歸、隨機森林、決策樹和BP神經網絡等等。優化

  2. 無監督學習

    輸入數據沒有標籤,輸出沒有標準答案,就是一系列的樣本。無監督學習經過推斷輸入數據中的結構建模。這多是提取通常規律,能夠是經過數學處理系統地減小冗餘,或者根據類似性組織數據。經常使用於解決的問題有聚類、降維和關聯規則的學習。經常使用的算法包括 Apriori 算法和 K 均值算法。ui

  3. 半監督學習

    半監督學習的輸入數據包含帶標籤和不帶標籤的樣本。半監督學習的情形是,有一個預期中的預測,但模型必須經過學習結構整理數據從而作出預測。經常使用於解決的問題是分類和迴歸。經常使用的算法是全部對無標籤數據建模進行預測的算法(即無監督學習)的延伸。

從功能角度分類

研究人員經常經過功能類似對算法進行分類。例如,基於樹的方法和基於神經網絡的方法。這種方法也是我我的認爲最有用的分類方法。不過,這種方法也並不是完美,好比學習矢量量化(LVQ),就既能夠被歸爲神經網絡方法,也能夠被歸爲基於實例的方法。此外,像迴歸和聚類,就既能夠形容算法,也能夠指代問題。

爲了不重複,本文將只在最適合的地方列舉一次。下面的算法和分類都不齊備,但有助於你瞭解整個領域大概。(說明:用於分類和迴歸的算法帶有很大的我的主觀傾向;歡迎補充我遺漏的條目。)

  1. 強化學習

    詳解連接:強化學習涉及的學科及其特色http://blog.sciencenet.cn/home.php?mod=space&uid=3360373&do=blog&id=1086532

     

    沒有明確的指導信號,reward(獎勵)能夠看作是指導信號,類比SL是求解函數

    y =f(x,z) ,其中xAgent(代理)的狀態(state),zAgent在該狀態得到的獎勵rewardf是要求解的策略policyy則是輸出的動做action,即根據狀態和獎勵序列求解最優策略。reward是指((你給我Reward這個值是什麼意思?我到底能不能作的更好?給我100分?我怎麼100分的Reward好很差?萬一其餘Action能夠拿到10000分呢?))

    強化學習是經過對未知環境一邊探索一邊創建環境模型以及學得一個最優策略。有監督學習則是事先給你了一批樣本,並告訴你哪些樣本是優的哪些是劣的(樣本的標記信息),經過學習這些樣本而創建起對象的模型及其策略。在強化學習中沒有人事先告訴你在什麼狀態下應該作什麼,只有在摸索中反思以前的動做是否正確來學習。從這個角度看,能夠認爲強化學習是有時間延遲標記信息的有監督學習。常見算法包括Q-Learning以及時間差學習(Temporal difference learning

  2. 遷移學習

    遷移學習(Transfer learning) 顧名思義就是就是把已學訓練好的模型參數遷移到新的模型來幫助新模型訓練。考慮到大部分數據或任務是存在相關性的,因此經過遷移學習咱們能夠將已經學到的模型參數(也可理解爲模型學到的知識)經過某種方式來分享給新模型從而加快並優化模型的學習效率不用像大多數網絡那樣從零學習(starting from scratchtabula rasa)。

2、各算法介紹

2.1迴歸算法

監督學習指的是有目標變量或預測目標的機器學習方法。迴歸與分類的不一樣,就在於其目標變量是連續數值型。

迴歸分析是研究自變量和因變量之間關係的一種預測模型技術。這些技術應用於預測時間序列模型和找到變量之間關係。迴歸分析也是一種經常使用的統計學方法,經由統計機器學習融入機器學習領域。"迴歸"既能夠指算法也能夠指問題,所以在指代的時候容易混淆。實際上,迴歸就是一個過程而已。

經常使用的迴歸算法包括:

  1. 普通最小二乘迴歸(OLSR
  2. 線性迴歸
  3. 逐步迴歸
  4. 多元自適應迴歸樣條法(MARS
  5. 局部估計平滑散點圖(LOESS
  6. 邏輯迴歸(是分類算法)

 

2.2基於實例的學習算法

基於實例的學習經過訓練數據的樣本或事例建模,這些樣本或事例也被視爲建模所必需的。這類模型一般會建一個樣本數據庫,比較新的數據和數據庫裏的數據,經過這種方式找到最佳匹配並作出預測。換句話說,這類算法在作預測時,通常會使用類似度準則,比對待預測的樣本和原始樣本之間的類似度,再作出預測。所以,基於實例的方法也被稱之爲贏家通吃的方法(winner-take-all)和基於記憶的學習(memory-based learning)。

經常使用的基於實例的學習算法包括:

  1. k-鄰近算法(KNN
  2. 學習矢量量化算法(LVQ
  3. 自組織映射算法(SOM
  4. 局部加權學習算法(LWL

 

2.3正則化算法

正則化算法背後的思路是,參數值比較小的時候模型更加簡單。對模型的複雜度會有一個懲罰值,偏好簡單的、更容易泛化的模型,正則化算法能夠說是這種方法的延伸。我把正則化算法單獨列出來,緣由就是我據說它們十分受歡迎、功能強大,並且可以對其餘方法進行簡單的修飾。經常使用的正則化算法包括:

  1. 嶺迴歸
  2. LASSO算法
  3. Elastic Net
  4. 最小角迴歸算法

 

2.4決策樹算法

決策樹算法的目標是根據數據屬性的實際值,建立一個預測樣本目標值的模型。訓練時,樹狀的結構會不斷分叉,直到做出最終的決策。也就是說,預測階段模型會選擇路徑進行決策。決策樹常被用於分類和迴歸。決策樹通常速度快,結果準,所以也屬於最受歡迎的機器學習算法之一。

經常使用的決策樹算法包括:

  1. 分類和迴歸樹(CART
  2. ID3算法
  3. C4.5算法和C5.0算法(它們是一種算法的兩種不一樣版本)
  4. CHAID算法
  5. 單層決策樹
  6. M5算法
  7. 條件決策樹

 

2.5貝葉斯算法

貝葉斯方法指的是那些明確使用貝葉斯定理解決分類或迴歸等問題的算法。

經常使用的貝葉斯算法包括:

  1. 樸素貝葉斯算法
  2. 高斯樸素貝葉斯算法
  3. 多項式樸素貝葉斯算法
  4. AODE算法
  5. 貝葉斯信念網絡(BBN
  6. 貝葉斯網絡(BN

 

2.6聚類算法

聚類跟迴歸同樣,既能夠用來形容一類問題,也能夠指代一組方法。聚類方法一般涉及質心(centroid-based)或層次(hierarchal)等建模方式,全部的方法都與數據固有的結構有關,目標是將數據按照它們之間共性最大的組織方式分紅幾組。換句話說,算法將輸入樣本聚成圍繞一些中心的數據團,經過這樣的方式發現數據分佈結構中的規律。

經常使用的聚類算法包括:

  1. K-均值
  2. K-中位數
  3. EM算法
  4. 分層聚類算法

 

2.7關聯規則學習

關聯規則學習在數據不一樣變量之間觀察到了一些關聯,算法要作的就是找出最能描述這些關係的規則,也就是獲取一個事件和其餘事件之間依賴或關聯的知識。經常使用的關聯規則算法有:

  1. Apriori算法
  2. FP-Growth算法
  3. Profixspan算法
  4. Eclat算法

 

2.8人工神經網絡

人工神經網絡是一類受生物神經網絡的結構及/或功能啓發而來的模型。它們是一類經常使用於解決迴歸和分類等問題的模式匹配,不過,其實是一個含有成百上千種算法及各類問題變化的子集。注意這裏我將深度學習從人工神經網絡算法中分離了出去,由於深度學習實在太受歡迎。人工神經網絡指的是更加經典的感知方法。

經常使用的人工神經網絡包括:

  1. 感知機
  2. 反向傳播算法(BP神經網絡)
  3. Hopfield網絡
  4. 徑向基函數網絡

 

2.9深度學習算法

深度學習算法是人工神經網絡的升級版,充分利用廉價的計算力。近年來,深度學習獲得普遍應用,尤爲是語音識別、圖像識別。深度學習算法會搭建規模更大、結構更復雜的神經網絡,正如上文所說,不少深度學習方法都涉及半監督學習問題,這種問題的數據通常量極大,並且只有不多部分帶有標籤。

經常使用的深度學習算法包括:

  1. 深度玻爾茲曼機(DBM
  2. 深度信念網絡(DBN
  3. 卷積神經網絡(CNN
  4. 棧式自編碼算法(Stacked Auto-Encoder

 

2.10降維算法

降維算法和聚類有些相似,也是試圖發現數據的固有結構。可是,降維算法採用的是無監督學習的方式,用更少(更低維)的信息進行總結和描述。降維算法能夠監督學習的方式,被用於多維數據的可視化或對數據進行簡化處理。不少降維算法通過修改後,也被用於分類和迴歸的問題。

經常使用的降維算法包括:

  1. 主成分分析法(PCA
  2. 主成分迴歸(PCR
  3. 偏最小二乘迴歸(PLSR
  4. 多維尺度分析法(MDS
  5. 線性判別分析法(LDA
  6. 二次判別分析法(QDA
  7. 投影尋蹤法(PP

 

2.11模型融合算法

模型融合算法將多個簡單的、分別單獨訓練的弱機器學習算法結合在一塊兒,這些弱機器學習算法的預測以某種方式整合成一個預測。一般這個整合後的預測會比單獨的預測要好一些。構建模型融合算法的主要精力通常用於決定將哪些弱機器學習算法以什麼樣的方式結合在一塊兒。模型融合算法是一類很是強大的算法,所以也很受歡迎。

經常使用的模型融合加強方法包括:

  1. Boosting
  2. Bagging
  3. AdaBoost
  4. 堆疊泛化(混合)
  5. GBM算法
  6. GBRT算法
  7. 隨機森林

 

2.12其餘

還有不少算法都沒有涉及。例如,支持向量機(SVM)應該被歸爲哪一組?仍是說它本身單獨成一組?

我尚未提到的機器學習算法包括:

  1. 特徵選擇算法
  2. Algorithm accuracy evaluation
  3. Pderformance measures

 

再附一張思惟導圖

相關文章
相關標籤/搜索