簡體   English   中英

確保機器學習模型中訓練集和測試集之間不會發生記憶

[英]Ensuring memorization doesn't happen between between train and test sets in a Machine Learning model

最近,承包商為我們開發了一個 NER 解決方案,該解決方案從葯物政策中提取相關葯物(政策描述覆蓋標准的葯物)。 他們的部分過程是通過訓練集,並替換也出現在測試集中的葯物(“泰諾”等),以確保模型正在學習葯物的背景,而不是記住葯物名稱(例如,出現在“泰諾在以下情況下受保護……”等句子中)。

我的問題是,如果我們添加了新的測試數據,並且我們想要重新評估模型,那么替換測試集中的單詞以確保它們不會出現在之前的訓練集中是否有意義,或者我們是否應該重新- 替換訓練集中的單詞,重新訓練模型,並在新的測試數據上重新評估?

謝謝

如何訓練數據

如果您的數據中有您不想從中學習的輸入值,例如,因為您在部署期間沒有這些值。 或者你覺得這可能會使模型產生偏差——絕對要去掉這些信息——並清理你的數據。 此外,當您覺得葯物名稱可能是一個問題時,不僅要刪除您也嘗試預測的名稱,而且要刪除所有葯物名稱(使用字典或其他東西)。 這也可能會阻止以后的替換和重復的數據清理活動——這通常很痛苦。

如何測試數據

另一件事是您希望測試和驗證數據看起來像什么。 最佳做法是讓它們從與訓練數據相同的分布中提取——這意味着,您對訓練數據所做的所有預處理步驟也必須對驗證和測試數據進行。 因此,純粹修改測試數據會扭曲你的結果或讓你的模型變得瘋狂。

話雖如此,如果您想了解您的模型在不確定性下的表現如何,那就完全不同了。

替換訓練數據中出現的新測試數據中的葯物

首先,我建議在新的測試數據上測試模型,無論是否替換原始訓練數據中出現的葯物名稱。 如果模型在沒有替換的情況下比有替換的情況下表現更好,這可能意味着它已經從原始訓練數據中記住了一些葯物名稱。 您可以通過檢查優勢是否來自訓練數據中未替換的葯物來驗證這一點,因為它們沒有出現在原始測試數據中。

關於替代方法

請記住,替換方法的細節可能會影響結果,具體取決於模型的工作方式。 例如,該模型可能能夠學習單詞中字母的特定排列(例如,學習以“-ol”或“-azone”結尾表示葯物名稱)。 因此,如果替換葯物名稱不反映真實世界(即部署)字母簇在葯物名稱中分布情況的統計數據,那么即使使用替換方法,您仍可能獲得一定程度的記憶。 這種形式的記憶不一定是壞事(因為葯物名稱往往具有獨特的詞典結構),但您要確保您的替換不會偏愛某些模式而不是其他模式。 這可能需要從所有現有葯物名稱的列表中以平衡的方式提取您的替代品(這可能不切實際)。 此外,即使是這種嚴格的替代方法也假定您將來可能想要識別的新開發葯物將遵循當前葯物的詞典命名慣例/趨勢。

替換訓練集中出現在新測試集中的葯物並重新訓練

您還提到了在重新替換新數據集中出現的葯物后重新訓練模型的可能性。 如果您的目標是根據兩個測試數據集之間的某些其他差異(例如,不同類型的文檔)來比較性能,那么這可能是合適的。 如果這是你的目標,我會建議撤消承包商在訓練數據中所做的所有原始替換,然后遵循相同的替換程序,但僅限於新測試數據集中的葯物。 這將確保兩個模型在兩個不同測試集上的評估結果具有可比性。 在沿着這條路線走之前,您還應該考慮重新訓練模型的成本。

暫無
暫無

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

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