導航:首頁 > 源碼編譯 > 並行機器學習演算法

並行機器學習演算法

發布時間:2022-06-23 09:33:02

Ⅰ 機器學習中需要掌握的演算法有哪些

在學習機器學習中,我們需要掌握很多演算法,通過這些演算法我們能夠更快捷地利用機器學習解決更多的問題,讓人工智慧實現更多的功能,從而讓人工智慧變得更智能。因此,本文為大家介紹一下機器學習中需要掌握的演算法,希望這篇文章能夠幫助大家更深入地理解機器學習。
首先我們為大家介紹的是支持向量機學習演算法。其實支持向量機演算法簡稱SVM,一般來說,支持向量機演算法是用於分類或回歸問題的監督機器學習演算法。SVM從數據集學習,這樣SVM就可以對任何新數據進行分類。此外,它的工作原理是通過查找將數據分類到不同的類中。我們用它來將訓練數據集分成幾類。而且,有許多這樣的線性超平面,SVM試圖最大化各種類之間的距離,這被稱為邊際最大化。而支持向量機演算法那分為兩類,第一就是線性SVM。在線性SVM中,訓練數據必須通過超平面分離分類器。第二就是非線性SVM,在非線性SVM中,不可能使用超平面分離訓練數據。
然後我們給大家介紹一下Apriori機器學習演算法,需要告訴大家的是,這是一種無監督的機器學習演算法。我們用來從給定的數據集生成關聯規則。關聯規則意味著如果發生項目A,則項目B也以一定概率發生,生成的大多數關聯規則都是IF_THEN格式。Apriori機器學習演算法工作的基本原理就是如果項目集頻繁出現,則項目集的所有子集也經常出現。
接著我們給大家介紹一下決策樹機器學習演算法。其實決策樹是圖形表示,它利用分支方法來舉例說明決策的所有可能結果。在決策樹中,內部節點表示對屬性的測試。因為樹的每個分支代表測試的結果,並且葉節點表示特定的類標簽,即在計算所有屬性後做出的決定。此外,我們必須通過從根節點到葉節點的路徑來表示分類。
而隨機森林機器學習演算法也是一個重要的演算法,它是首選的機器學習演算法。我們使用套袋方法創建一堆具有隨機數據子集的決策樹。我們必須在數據集的隨機樣本上多次訓練模型,因為我們需要從隨機森林演算法中獲得良好的預測性能。此外,在這種集成學習方法中,我們必須組合所有決策樹的輸出,做出最後的預測。此外,我們通過輪詢每個決策樹的結果來推導出最終預測。
在這篇文章中我們給大家介紹了關於機器學習的演算法,具體包括隨機森林機器學習演算法、決策樹演算法、apriori演算法、支持向量機演算法。相信大家看了這篇文章以後對機器學習有個更全面的認識,最後祝願大家都學有所成、學成歸來。

Ⅱ 機器學習演算法中GBDT和XGBOOST的區別有哪些

機器學習演算法中GBDT和XGBOOST的區別有哪些?

在昨天阿里的面試中被問到了,我只簡單的說了下xgboost能自動利用cpu的多線程,而且適當改進了gradient boosting,加了剪枝,控制了模型的復雜程度

添加評論

分享

默認排序按時間排序

9 個回答

weponML/DM,https://github.com/wepe

252人贊同

xgboost相比傳統gbdt有何不同?xgboost為什麼快?xgboost如何支持並行?

看了陳天奇大神的文章和slides,略抒己見,沒有面面俱到,不恰當的地方歡迎討論:

傳統GBDT以CART作為基分類器,xgboost還支持線性分類器,這個時候xgboost相當於帶L1和L2正則化項的邏輯斯蒂回歸(分類問題)或者線性回歸(回歸問題)。

傳統GBDT在優化時只用到一階導數信息,xgboost則對代價函數進行了二階泰勒展開,同時用到了一階和二階導數。順便提一下,xgboost工具支持自定義代價函數,只要函數可一階和二階求導。

xgboost在代價函數里加入了正則項,用於控制模型的復雜度。正則項里包含了樹的葉子節點個數、每個葉子節點上輸出的score的L2模的平方和。從Bias-variance tradeoff角度來講,正則項降低了模型的variance,使學習出來的模型更加簡單,防止過擬合,這也是xgboost優於傳統GBDT的一個特性。

Shrinkage(縮減),相當於學習速率(xgboost中的eta)。xgboost在進行完一次迭代後,會將葉子節點的權重乘上該系數,主要是為了削弱每棵樹的影響,讓後面有更大的學習空間。實際應用中,一般把eta設置得小一點,然後迭代次數設置得大一點。(補充:傳統GBDT的實現也有學習速率)

列抽樣(column subsampling)。xgboost借鑒了隨機森林的做法,支持列抽樣,不僅能降低過擬合,還能減少計算,這也是xgboost異於傳統gbdt的一個特性。


對缺失值的處理。對於特徵的值有缺失的樣本,xgboost可以自動學習出它的分裂方向。

xgboost工具支持並行。boosting不是一種串列的結構嗎?怎麼並行的?注意xgboost的並行不是tree粒度的並行,xgboost也是一次迭代完才能進行下一次迭代的(第t次迭代的代價函數里包含了前面t-1次迭代的預測值)。xgboost的並行是在特徵粒度上的。我們知道,決策樹的學習最耗時的一個步驟就是對特徵的值進行排序(因為要確定最佳分割點),xgboost在訓練之前,預先對數據進行了排序,然後保存為block結構,後面的迭代中重復地使用這個結構,大大減小計算量。這個block結構也使得並行成為了可能,在進行節點的分裂時,需要計算每個特徵的增益,最終選增益最大的那個特徵去做分裂,那麼各個特徵的增益計算就可以開多線程進行。


可並行的近似直方圖演算法。樹節點在進行分裂時,我們需要計算每個特徵的每個分割點對應的增益,即用貪心法枚舉所有可能的分割點。當數據無法一次載入內存或者在分布式情況下,貪心演算法效率就會變得很低,所以xgboost還提出了一種可並行的近似直方圖演算法,用於高效地生成候選的分割點。


=============

回復@肖岩在評論里的問題,因為有些公式放正文比較好。評論里討論的問題的大意是 「xgboost代價函數里加入正則項,是否優於cart的剪枝」。其實陳天奇大神的slides裡面也是有提到的,我當一下搬運工。
決策樹的學習過程就是為了找出最優的決策樹,然而從函數空間里所有的決策樹中找出最優的決策樹是NP-C問題,所以常採用啟發式(Heuristic)的方法,如CART裡面的優化GINI指數、剪枝、控制樹的深度。這些啟發式方法的背後往往隱含了一個目標函數,這也是大部分人經常忽視掉的。xgboost的目標函數如下:

這個公式形式上跟ID3演算法(採用entropy計算增益) 、CART演算法(採用gini指數計算增益) 是一致的,都是用分裂後的某種值 減去 分裂前的某種值,從而得到增益。為了限制樹的生長,我們可以加入閾值,當增益大於閾值時才讓節點分裂,上式中的gamma即閾值,它是正則項里葉子節點數T的系數,所以xgboost在優化目標函數的同時相當於做了預剪枝。另外,上式中還有一個系數lambda,是正則項里leaf score的L2模平方的系數,對leaf score做了平滑,也起到了防止過擬合的作用,這個是傳統GBDT里不具備的特性。

Ⅲ 有沒有必要把機器學習演算法自己實現一遍

1對演算法細節的理解更加深刻了。書中畢竟不會給出所有細節,而且書本身可能就是錯的。我幾乎是把所有公式重新推了一邊,重新把這本書寫了一遍,自己存下的note裡面公式數量絕對遠遠多於書本身,期間也發現了書中無數的錯誤,這些錯誤在初讀的時候根本意識不到。這樣一遍下來,一個side effect就是讓我變得憤青了,看什麼paper都覺得爛。因為讀paper的時候,你會發現,很多paper違背基本常識,即使影響力非常大的一些paper里也有這樣那樣的錯誤。
2可以了解很多看書學不到的各種trick。所有演算法幾乎都有坑。比如hyper-parameter什麼意義怎麼設,怎麼初始化,numerical stability的怎麼保證,如何保證矩陣正定,計算機rounding error的影響,numerical underflow和overflow問題等等。
3對整個領域各個演算法的關聯有更深刻的了解,思維形成一個關系網。看到一個演算法就會自然的去想跟其他演算法的聯系,怎麼去擴展。如果一篇paper我不能把它納入到這個關系網里,我就覺得自己沒懂。要麼推出聯系,要麼推出矛盾證明這篇paper垃圾。另一個side effect就是我看paper從來不根據實驗好壞判斷優劣。雖然自己動手實現演算法有好處,但是性價比幾何還是個見仁見智的問題,畢竟這是一個很費時的過程。我並不認為一定有必要自己實現書上所有演算法,畢竟每個人所能關注的領域還是有限的,懂得演算法大致原理,具體用的時候在細研究就可以。很多演算法我也是寫完了從來沒用過。幾年過去後,我在回頭看自己的代碼也很難看的懂,細節還得看公式。但是對於自己的研究領域我建議還是有必要把經典演算法動手實現一遍加深理解。

Ⅳ 機器學習有哪些演算法

1. 線性回歸
在統計學和機器學習領域,線性回歸可能是最廣為人知也最易理解的演算法之一。
2. Logistic 回歸
Logistic 回歸是機器學習從統計學領域借鑒過來的另一種技術。它是二分類問題的首選方法。
3. 線性判別分析
Logistic 回歸是一種傳統的分類演算法,它的使用場景僅限於二分類問題。如果你有兩個以上的類,那麼線性判別分析演算法(LDA)是首選的線性分類技術。
4.分類和回歸樹
決策樹是一類重要的機器學習預測建模演算法。
5. 樸素貝葉斯
樸素貝葉斯是一種簡單而強大的預測建模演算法。
6. K 最近鄰演算法
K 最近鄰(KNN)演算法是非常簡單而有效的。KNN 的模型表示就是整個訓練數據集。
7. 學習向量量化
KNN 演算法的一個缺點是,你需要處理整個訓練數據集。
8. 支持向量機
支持向量機(SVM)可能是目前最流行、被討論地最多的機器學習演算法之一。
9. 袋裝法和隨機森林
隨機森林是最流行也最強大的機器學習演算法之一,它是一種集成機器學習演算法。

想要學習了解更多機器學習的知識,推薦CDA數據分析師課程。CDA(Certified Data Analyst),即「CDA 數據分析師」,是在數字經濟大背景和人工智慧時代趨勢下,面向全行業的專業權威國際資格認證,旨在提升全民數字技能,助力企業數字化轉型,推動行業數字化發展。點擊預約免費試聽課。

閱讀全文

與並行機器學習演算法相關的資料

熱點內容
java讀取上傳的文件 瀏覽:373
xp怎麼加密文檔 瀏覽:273
壓縮機風扇電機轉速慢 瀏覽:88
文件伺服器如何查看訪問人員 瀏覽:127
絕佳買賣指標加密 瀏覽:758
git分支編譯 瀏覽:156
51單片機c語言應用程序設計實例精講 瀏覽:562
華為安卓手機編譯器 瀏覽:48
怎樣在打開微信前加密 瀏覽:666
旺旺聊天記錄怎麼加密 瀏覽:413
王安憶長恨歌pdf 瀏覽:621
mobile文件夾可以卸載嗎 瀏覽:282
什麼是2通道伺服器 瀏覽:346
mc正版怎麼開伺服器地址 瀏覽:408
樂高解壓朋友圈 瀏覽:14
linux軟raid性能 瀏覽:369
貼片機編程軟體下載 瀏覽:360
mooc大學樂學python答案 瀏覽:408
怎麼投訴途虎app 瀏覽:38
安卓重力感應怎麼關 瀏覽:721