簡體   English   中英

如何在沒有交叉驗證的情況下檢查機器學習的准確性

[英]How to check machine learning accuracy without cross validation

我有訓練樣本X_trainY_train來訓練和X_estimated 我的任務是讓我的分類器盡可能准確地學習,然后預測X_estimated上的結果向量以獲得接近Y_estimated的結果(我現在有,而且我必須盡可能精確)。 如果我將我的訓練數據分成 75/25 來訓練和測試它,我可以使用sklearn.metrics.accuracy_score和混淆矩陣來獲得准確性。 但是我丟失了 25% 的樣本,這將使我的預測更加准確。

有什么辦法,我可以通過使用 100% 的數據來學習,並且仍然能夠看到准確度分數(或百分比),所以我可以多次預測,並保存最佳(%)結果? 我正在使用具有 500 個估計器的隨機森林,通常可以達到 90% 的准確率。 我想為我的任務盡可能保存最佳預測向量,而不拆分任何數據(不浪費任何東西),但仍然能夠從多次嘗試中計算准確性(因此我可以保存最佳預測向量)(隨機森林總是顯示不同的結果)

謝謝

拆分數據對於評估至關重要。 除非您擴展數據集,否則您無法在 100% 的數據上訓練您的 model 並且能夠獲得正確的評估准確性。 我的意思是,您可以更改您的訓練/測試拆分,或嘗試以其他方式優化您的 model,但我想您的問題的簡單答案是否定的。

根據您的要求,您可以嘗試K Fold Cross Validation 如果將其拆分為 90|10,即用於訓練|測試。
實現 100% 的數據進行訓練是不可能的,因為您必須測試數據然后才能驗證 model 有多好。 K Fold CV 在每個折疊中都會考慮您的整個訓練數據,並從訓練數據中隨機抽取測試數據樣本。
最后通過對所有折疊求和來計算准確度。 最后,您可以使用 10% 的數據來測試准確性。 更多你可以在這里這里閱讀

K折交叉驗證

在此處輸入圖像描述

Searn 提供了執行 K 折交叉驗證的簡單方法。 只需在方法中傳遞 no 折疊即可。 但請記住,折疊越多,訓練 model 就需要更多時間。 更多你可以在這里查看

不必一直對數據進行 75|25 拆分。 75 |25 現在有點老派了。 這在很大程度上取決於您擁有的數據量。 例如,如果您有 10 億個句子用於訓練語言 model,則無需保留 25% 用於測試。

另外,我支持之前嘗試 K 折交叉驗證的答案。 作為旁注,您可以考慮查看其他指標,例如精確度和召回率。

一般來說,拆分數據集對於評估至關重要 所以我建議你總是這樣做。

也就是說,在某種意義上,有些方法可以讓您在所有數據上進行訓練,並且仍然可以估計您的性能或估計泛化精度。 一種特別突出的方法是利用基於自舉的模型的袋外樣本,即隨機森林。

from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=100, bootstrap=True, oob_score=True)
rf.fit(X, y)
print(rf.oob_score_)

如果您總是在進行分類 go 與分層 k 折 cv( https://machinelearningmastery.com/cross-validation-for-imbalanced-classification/ )。 如果你正在做回歸,那么 go 和簡單的 k-fold cv 或者你可以將目標划分為 bin 並進行分層 k-fold cv。 通過這種方式,您可以在 model 訓練中完全使用您的數據。

暫無
暫無

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

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