簡體   English   中英

關於機器學習中集成技術的問題

[英]Questions on ensemble technique in machine learning

我正在研究集成機器學習,當我在網上閱讀一些文章時,我遇到了兩個問題。

1.

在這篇文章中,它提到

相反,模型 2 可能在所有數據點上具有更好的整體性能,但在模型 1 更好的一組點上的性能更差。 我們的想法是將這兩個模型結合起來,使其表現最佳。 這就是為什么創建樣本外預測更有可能捕獲每個模型表現最佳的不同區域。

在此處輸入圖片說明

但是我還是想不明白,為什么不訓練所有的訓練數據就可以避免這個問題呢?

2.

從這篇文章,在預測部分,它提到

簡單地說,對於給定的輸入數據點,我們需要做的就是將它傳遞給 M 個基礎學習器並獲得 M 個預測,然后將這 M 個預測作為輸入發送到元學習器

但是在訓練過程中,我們使用k-fold訓練數據來訓練M個base-learner,那么我是否也應該根據輸入的所有訓練數據訓練M個base-learner來預測呢?

假設紅色和藍色是你能找到的最好的模型。

一個在區域 1 中效果更好,另一個在區域 2 中效果更好。

現在您還將訓練一個分類器來預測使用哪個模型,即您將嘗試學習這兩個區域。

在外面做驗證。 如果讓兩個內部模型訪問元模型看不到的數據,則可能會過度擬合。

集成中的想法是一組弱預測器優於強預測器。 所以,如果我們用不同的預測結果訓練不同的模型,並使用多數規則作為我們集成的最終結果,這個結果比僅僅嘗試訓練一個模型要好。 例如,假設數據由兩種不同的模式組成,一種是線性的,一種是二次型的。 然后使用單個分類器可能會過度擬合或產生不准確的結果。 您可以閱讀本教程以了解有關 ensemble 以及 bagging 和 boosting 的更多信息。

1)“但是我還是沒get到點,為什么不訓練所有的訓練數據就可以避免這個問題呢?” - 我們將保留這些數據用於驗證目的,就像我們在 K-fold 中所做的那樣

2)“那么我還應該根據所有訓練數據訓練 M base-learner 以進行輸入預測嗎?” - 如果您向所有學習者提供相同的數據,那么所有學習者的輸出將相同,創建它們沒有任何用處。 所以我們會給每個學習者一個數據子集。

對於問題 1,我將證明為什么我們以矛盾的方式訓練兩個模型。 假設你用所有數據點訓練一個模型。在訓練期間,每當模型看到屬於紅色類的數據點時,它就會嘗試擬合自己,以便它能夠以最小的錯誤分類紅色點。數據也是如此屬於藍色類的點。因此,在訓練過程中,模型傾向於特定的數據點(紅色或藍色)。最后,模型將嘗試擬合自己,這樣它就不會在數據點和數據點上犯太多錯誤最終模型將是一個平均模型。 但是,如果您為兩個不同的數據集訓練兩個模型,那么每個模型都將在特定數據集上進行訓練,並且模型不必關心屬於另一個類的數據點。

用下面的比喻會更清楚。 假設有兩個人專門從事兩種完全不同的工作。現在,當一份工作來臨時,如果你告訴他們你們都必須做這份工作,而且他們每個人都需要完成 50% 的工作。 現在想想你最終會得到什么樣的結果。 現在還要想想如果你告訴他們一個人應該只從事他最擅長的工作,結果會怎樣。

在問題 2 中,您必須將訓練數據集拆分為 M 個數據集。並在訓練期間將 M 個數據集提供給 M 個基礎學習者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM