<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 機器學習中的數據泄漏 > 原文: [https://machinelearningmastery.com/data-leakage-machine-learning/](https://machinelearningmastery.com/data-leakage-machine-learning/) 在開發預測模型時,數據泄漏是機器學習中的一個大問題。 數據泄漏是指來自訓練數據集外部的信息用于創建模型的時間。 在這篇文章中,您將發現預測建模中的數據泄漏問題。 閱讀這篇文章后你會知道: * 什么是數據泄漏是預測建模。 * 數據泄漏的跡象以及為什么會出現問題。 * 您可以使用的提示和技巧,以最大限度地減少預測建模問題的數據泄漏。 讓我們開始吧。 ![Data Leakage in Machine Learning](https://img.kancloud.cn/7b/ae/7bae61cd3ff06de403187d5bf00d0f81_640x424.jpg) 機器學習中的數據泄漏 [DaveBleasdale](https://www.flickr.com/photos/sidelong/20147524535/) 的照片,保留一些權利。 ## 預測建模的目標 預測建模的目標是開發一種模型,在訓練期間看不到新數據的準確預測。 這是一個難題。 這很難,因為我們無法在我們沒有的東西上評估模型。 因此,我們必須通過僅對我們擁有的一些數據進行訓練并在其余數據上進行評估來估計模型在看不見的數據上的表現。 這是交叉驗證和更復雜技術的基礎,這些技術試圖減少此估計的方差。 ## 什么是機器學習中的數據泄漏? 如果不是完全無效的預測模型,數據泄漏可能會導致您創建過于樂觀。 數據泄漏是指來自訓練數據集外部的信息用于創建模型的時間。該附加信息可以允許模型學習或知道否則將不知道的事物,并且反過來使得正在構建的模式的估計表現無效。 > 如果在您希望使用模型進行預測時實際上實際上不可用的任何其他特征是一個可能會導致模型泄漏的功能 - [數據懷疑](http://dataskeptic.com/epnotes/leakage.php) > 當您用于訓練機器學習算法的數據恰好具有您試圖預測的信息時 - Daniel Gutierrez,[詢問數據科學家:數據泄漏](http://insidebigdata.com/2014/11/26/ask-data-scientist-data-leakage/) [計算機安全中有一個主題稱為數據泄漏和數據丟失預防](https://en.wikipedia.org/wiki/Data_loss_prevention_software),它與我們所討論的相關但不相關。 ### 數據泄漏是一個問題 這至少有三個原因是一個嚴重的問題: 1. **如果您正在進行機器學習競賽**,這是一個問題。頂級模型將使用泄漏數據而不是潛在問題的良好通用模型。 2. **當您是提供數據的公司時,這是一個問題**。撤消匿名化和混淆可能會導致您沒有預料到的隱私泄露。 3. **當您開發自己的預測模型**時,這是一個問題。您可能正在創建過于樂觀的模型,這些模型實際上是無用的,不能用于生產。 作為機器學習從業者,我們主要關注最后一個案例。 ### 我有數據泄漏嗎? 了解數據泄漏的一種簡單方法是,如果您實現的表現似乎有點太好了。 就像你可以預測彩票號碼或選擇高精度的股票。 > “太好了不可能”表現是它存在的“死亡贈品” - 第13章,[做數據科學:從前線直接談話](http://www.amazon.com/dp/1449358659?tag=inspiredalgor-20) 數據泄漏通常是復雜數據集的一個問題,例如: * 創建訓練和測試集時的時間序列數據集可能很困難。 * 圖形問題,其中隨機抽樣方法可能難以構建。 * 模擬觀察,如聲音和圖像,其中樣本存儲在具有大小和時間戳的單獨文件中。 ## 建立模型時最大限度地減少數據泄漏的技術 在開發預測模型時,您可以使用兩種很好的技術來最小化數據泄漏,如下所示: 1. 在交叉驗證折疊中執行數據準備。 2. 阻止驗證數據集,以便對您開發的模型進行最終的健全性檢查。 通常,優良作法是使用這兩種技術。 ### 1.在交叉驗證折疊中執行數據準備 在準備機器學習數據時,您可以輕松泄露信息。 這種影響是過度擬合您的訓練數據,并且對您在不可見數據上的模型表現進行過于樂觀的評估。 例如,如果您對整個數據集進行標準化或標準化,然后使用交叉驗證來估計模型的表現,則表明您已經犯了數據泄漏的罪。 在計算縮放因子(如最小值和最大值或平均值和標準差)時,您執行的數據重新縮放過程了解了訓練數據集中數據的完整分布。這些知識被標記在重新調整的值中,并被交叉驗證測試工具中的所有算法利用。 在這種情況下,機器學習算法的非泄漏評估將計算用于在交叉驗證的每個折疊內重新縮放數據的參數,并使用這些參數在每個循環上準備關于保持的測試折疊的數據。 > 現實情況是,作為一名數據科學家,您在準備,清理數據,估算缺失值,刪除異常值等任何時候都存在產生數據泄漏情況的風險。您可能在準備數據時扭曲數據到了你將構建一個在你的“干凈”數據集上運行良好的模型,但是在你真正想要應用它的真實情況中應用時會非常糟糕。 - 第313頁,[做數據科學:從前線直接談話](http://www.amazon.com/dp/1449358659?tag=inspiredalgor-20) 更一般地說,非泄漏數據準備必須在交叉驗證周期的每個折疊內進行。 對于某些問題,您可以放寬此約束,例如,如果您可以自信地估計數據的分布,因為您具有其他領域知識。 但總的來說,最好在交叉驗證折疊中重新準備或重新計算任何所需的數據準備工作,包括特征選擇,異常值刪除,編碼,特征縮放和降維等投影方法等任務。 > 如果對所有數據執行特征選擇然后交叉驗證,則交叉驗證過程的每個折疊中的測試數據也用于選擇特征,這是表現分析的偏差。 - Dikran Marsupial,回答Cross Validated上的問題“[特征選擇和交叉驗證](http://stats.stackexchange.com/questions/27750/feature-selection-and-cross-validation)”。 像R中的R和scikit-learn這樣的平臺有助于自動化這種良好實踐,使用中的[插入符包和scikit-learn](http://machinelearningmastery.com/caret-r-package-for-applied-predictive-modeling/) 中的[管道。](http://machinelearningmastery.com/automate-machine-learning-workflows-pipelines-python-scikit-learn/) ### 2.阻止驗證數據集 另一種可能更簡單的方法是將訓練數據集拆分為訓練集和驗證集,并存儲驗證數據集。 完成建模過程并實際創建最終模型后,在驗證數據集上對其進行評估。 這可以為您提供一個完整性檢查,以確定您對績效的評估是否過于樂觀并且已經泄露。 > 基本上,真正解決這個問題的唯一方法是保留一個獨立的測試集并保持它直到研究完成并用它進行最終驗證。 - Dikran Marsupial回答問題“[我如何幫助確保測試數據不會泄漏到訓練數據中?](http://stats.stackexchange.com/questions/20010/how-can-i-help-ensure-testing-data-does-not-leak-into-training-data) “在Cross驗證 ## 5個防止數據泄漏的技巧 * **時間截止**。在感興趣事件發生之前刪除所有數據,重點關注您了解事實或觀察的時間,而不是觀察發生的時間。 * **添加噪音**。將隨機噪聲添加到輸入數據以嘗試平滑可能泄漏變量的影響。 * **刪除Leaky變量**。使用帳號和ID等變量評估簡單的基于規則的模型行OneR,以查看這些變量是否泄漏,如果是,則刪除它們。如果您懷疑變量是否泄漏,請考慮將其刪除。 * **使用管道**。大量使用管道架構,允許在交叉驗證折疊中執行一系列數據準備步驟,例如R中的插入符包和scikit-learn中的管道。 * **使用保持數據集**。在使用模型之前,請暫停一個看不見的驗證數據集作為模型的最終完整性檢查。 ## 進一步閱讀數據泄漏 關于數據泄漏的材料并不多,但那些確實存在的珍貴論文和博客文章都是黃金。 以下是一些更好的資源,您可以用它們來了解應用機器學習中數據泄漏的更多信息。 * [數據挖掘中的泄漏:秘籍,檢測和避免](https://www.cs.umb.edu/~ding/history/470_670_fall_2011/papers/cs670_Tran_PreferredPaper_LeakingInDataMining.pdf) [pdf],2011。(推薦!) * [關于數據懷疑播客](http://dataskeptic.com/epnotes/leakage.php)數據泄漏的迷你劇集。 * 第13章:從數據競爭中吸取的教訓:數據泄漏和模型評估,來自[做數據科學:直接從前線談話](http://www.amazon.com/dp/1449358659?tag=inspiredalgor-20),2013。 * [詢問數據科學家:數據泄漏](http://insidebigdata.com/2014/11/26/ask-data-scientist-data-leakage/),2014年 * [Kaggle Wiki上的數據泄漏](https://www.kaggle.com/wiki/Leakage) * [有關ICML 2013鯨魚挑戰賽](https://www.kaggle.com/c/the-icml-2013-whale-challenge-right-whale-redux/forums/t/4865/the-leakage-and-how-it-was-fixed/25839#post25839)數據泄漏的精彩討論 ## 摘要 在這篇文章中,您在開發預測模型時發現了機器學習中的數據泄漏。 你了解到: * 開發預測模型時會出現什么數據泄漏。 * 為什么數據泄漏是一個問題以及如何檢測它。 * 在開發預測模型時,您可以使用的技術來避免數據泄漏。 您對數據泄漏或此帖有任何疑問嗎?在評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看