<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國際加速解決方案。 廣告
                # 用于Python機器學習的隨機數生成器簡介 > 原文: [https://machinelearningmastery.com/introduction-to-random-number-generators-for-machine-learning/](https://machinelearningmastery.com/introduction-to-random-number-generators-for-machine-learning/) 隨機性是機器學習的重要組成部分。 隨機性被用作準備數據的工具或特征,以及用于將輸入數據映射到輸出數據以便進行預測的學習算法。 為了理解機器學習中統計方法的必要性,您必須了解機器學習中隨機性的來源。機器學習中的隨機性源是一種稱為偽隨機數發生器的數學技巧。 在本教程中,您將發現偽隨機數生成器以及何時控制和控制機器學習中的隨機性。 完成本教程后,您將了解: * 應用機器學習中隨機性的來源,側重于算法。 * 什么是偽隨機數生成器以及如何在Python中使用它們。 * 何時控制隨機數的序列以及何時控制隨機數。 讓我們開始吧。 ![Introduction to Random Number Generators for Machine Learning](img/12d2e38e2534a033ba13ae2f85f3a47e.jpg) 用于機器學習的隨機數發生器的介紹 照片由 [LadyDragonflyCC - &gt ;;&lt;](https://www.flickr.com/photos/ladydragonflyherworld/34027444050/) ,保留一些權利。 ## 教程概述 本教程分為5個部分;他們是: 1. 機器學習中的隨機性 2. 偽隨機數發生器 3. 何時播種隨機數發生器 4. 如何控制隨機性 5. 常見問題 ## 機器學習中的隨機性 應用機器學習中有許多隨機性來源。 隨機性被用作幫助學習算法更加穩健并最終導致更好的預測和更準確的模型的工具。 讓我們看幾個隨機性來源。 ### 數據的隨機性 我們從域中收集的數據樣本中有一個隨機元素,我們將用它來訓練和評估模型。 數據可能有錯誤或錯誤。 更深刻的是,數據包含的噪聲可能會掩蓋輸入和輸出之間清晰的關系。 ### 評估中的隨機性 我們無法訪問域中的所有觀察結果。 我們只使用一小部分數據。因此,我們在評估模型時利用隨機性,例如使用k折交叉驗證來擬合和評估可用數據集的不同子集上的模型。 我們這樣做是為了了解模型如何平均工作而不是特定的數據集。 ### 算法中的隨機性 機器學習算法在從數據樣本中學習時使用隨機性。 這是一個特征,其中隨機性允許算法實現比不使用隨機性更好的數據映射。隨機性是一種特征,它允許算法嘗試避免過度擬合小訓練集并推廣到更廣泛的問題。 使用隨機性的算法通常稱為隨機算法而不是隨機算法。這是因為盡管使用了隨機性,但是所得到的模型被限制在更窄的范圍內,例如,喜歡有限的隨機性。 機器學習算法中使用的一些明顯的隨機性示例包括: * 在隨機梯度下降的每個訓練時期之前改組訓練數據。 * 隨機森林算法中為吐點選擇的輸入特征的隨機子集。 * 人工神經網絡中的隨機初始權重。 我們可以看到,我們必須控制兩種隨機性源,例如數據中的噪聲,以及我們可以控制的隨機源,例如算法評估和算法本身。 接下來,讓我們看一下我們在算法和程序中使用的隨機源。 ## 偽隨機數生成器 我們注入到程序和算法中的隨機源是一種稱為偽隨機數生成器的數學技巧。 隨機數生成器是從真實的隨機源生成隨機數的系統。經常是物理的東西,比如蓋革計數器,結果變成隨機數。甚至還有從您可以購買的物理來源生成的隨機數書,例如: * [百萬隨機數,100,000正常偏差](http://amzn.to/2CM9dDv) 我們在機器學習中不需要真正的隨機性。相反,我們可以使用偽隨機性。偽隨機性是看起來接近隨機的數字樣本,但是使用確定性過程生成。 隨機值改組數據和初始化系數使用偽隨機數生成器。這些小程序通常是一個可以調用的函數,它將返回一個隨機數。再次調用,他們將返回一個新的隨機數。包裝函數通常也可用,允許您將隨機性作為整數,浮點,特定分布,特定范圍內等等。 數字按順序生成。序列是確定性的,并以初始數字播種。如果您沒有顯式地為偽隨機數生成器設定種子,那么它可以使用當前系統時間(以秒或毫秒為單位)作為種子。 種子的價值無關緊要。選擇你想要的任何東西重要的是,該過程的相同種子將導致相同的隨機數序列。 讓我們通過一些例子來具體化。 ## Python中的偽隨機數生成器 Python標準庫提供了一個名為 [random](https://docs.python.org/3/library/random.html) 的模塊,它提供了一組用于生成隨機數的函數。 Python使用一種流行且強大的偽隨機數生成器,稱為 [Mersenne Twister](https://en.wikipedia.org/wiki/Mersenne_Twister) 。 可以通過調用 _random.seed()_函數來播種偽隨機數發生器。通過調用 _random.random()_函數可以生成0到1之間的隨機浮點值。 以下示例為偽隨機數生成器播種,生成一些隨機數,然后重新種子以證明生成了相同的數字序列。 ```py # demonstrates the python pseudorandom number generator from random import seed from random import random # seed the generator seed(7) for _ in range(5): print(random()) # seed the generator to get the same sequence print('Reseeded') seed(7) for _ in range(5): print(random()) ``` 運行該示例將打印五個隨機浮點值,然后重新生成偽隨機數生成器后的相同五個浮點值。 ```py 0.32383276483316237 0.15084917392450192 0.6509344730398537 0.07243628666754276 0.5358820043066892 Reseeded 0.32383276483316237 0.15084917392450192 0.6509344730398537 0.07243628666754276 0.5358820043066892 ``` ## NumPy中的偽隨機數生成器 在機器學習中,您可能正在使用諸如scikit-learn和Keras之類的庫。 這些庫使用了NumPy,這個庫可以非常有效地處理數字的向量和矩陣。 NumPy還有自己的[偽隨機數生成器](https://docs.scipy.org/doc/numpy/reference/routines.random.html)和便捷包裝函數的實現。 NumPy還實現了Mersenne Twister偽隨機數生成器。重要的是,播種Python偽隨機數生成器不會影響NumPy偽隨機數生成器。它必須單獨播種和使用。 以下示例為偽隨機數生成器提供種子,生成五個隨機浮點值的數組,再次為生成器播種,并演示生成相同的隨機數序列。 ```py # demonstrates the numpy pseudorandom number generator from numpy.random import seed from numpy.random import rand # seed the generator seed(7) print(rand(5)) # seed the generator to get the same sequence print('Reseeded') seed(7) print(rand(5)) ``` 在重新生成發生器之后,運行該示例將打印第一批數字和相同的第二批數字。 ```py [0.07630829 0.77991879 0.43840923 0.72346518 0.97798951] Reseeded [0.07630829 0.77991879 0.43840923 0.72346518 0.97798951] ``` 現在我們知道如何生成受控隨機性,讓我們看看我們可以有效地使用它的位置。 ## 何時播種隨機數發生器 在預測建模項目中,有時您應該考慮播種隨機數生成器。 我們來看兩個案例: * **數據準備**。數據準備可以使用隨機性,例如數據的混洗或值的選擇。數據準備必須一致,以便在擬合,評估和使用最終模型進行預測時始終以相同的方式準備數據。 **Data Splits** 。必須一致地進行數據的分割,例如用于訓練/測試分割或k折疊交叉驗證。這是為了確保在相同的數據子樣本上以相同的方式訓練和評估每個算法。 您可能希望在每個任務之前或在執行一批任務之前為偽隨機數生成器播種一次。一般無關緊要。 有時您可能希望算法的行為一致,也許是因為它每次都在完全相同的數據上進行訓練。如果在生產環境中使用該算法,則可能發生這種情況。如果您在教程環境中演示算法,也可能會發生這種情況。 在這種情況下,在擬合算法之前初始化種子可能是有意義的。 ## 如何控制隨機性 隨機機器學習算法每次在相同數據上運行時都會略有不同。 這將導致每次訓練時表現略有不同的模型。 如上所述,我們每次都可以使用相同的隨機數序列來擬合模型。在評估模型時,這是一種不好的做法,因為它隱藏了模型中固有的不確定性。 更好的方法是以這樣的方式評估算法,使得報告的表現包括算法表現中測量的不確定性。 我們可以通過用不同的隨機數序列重復多次算法評估來做到這一點。偽隨機數發生器可以在評估開始時播種一次,或者可以在每次評估開始時用不同的種子播種。 這里要考慮兩個方面的不確定性: * **數據不確定性**:評估多個數據分割的算法將深入了解算法表現如何隨訓練和測試數據的變化而變化。 * **算法不確定性**:在相同的數據分割上多次評估算法,可以深入了解算法表現如何單獨變化。 總的來說,我建議報告這兩種不確定因素的總和。這是算法適合每次評估運行的數據的不同分割并具有新的隨機序列的地方。評估程序可以在開始時對隨機數生成器進行一次播種,并且該過程可以重復大約30次或更多次,以給出可以概括的表現分數群。 這將對模型表現進行公平的描述,同時考慮到訓練數據和學習算法本身的差異。 ## 常見問題 **我可以預測隨機數嗎?** 即使使用深度神經網絡,也無法預測隨機數的序列。 **真正的隨機數會帶來更好的結果嗎?** 據我所知,除非您正在使用物理過程的模擬,否則使用真實隨機性通常無濟于事。 **最終型號怎么樣?** [最終模型](https://machinelearningmastery.com/train-final-machine-learning-model/)是所選擇的算法和配置,可以使用所有可用的訓練數據進行預測。該模型的表現將落在評估模型的方差范圍內。 ## 擴展 本節列出了一些擴展您可能希望探索的教程的想法。 * 確認播種Python偽隨機數生成器不會影響NumPy偽隨機數生成器。 * 開發在范圍和高斯隨機數之間生成整數的示例。 * 找到方程式并實現一個非常簡單的偽隨機數生成器。 如果你探索任何這些擴展,我很想知道。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 帖子 * [在機器學習中擁抱隨機性](https://machinelearningmastery.com/randomness-in-machine-learning/) * [如何使用Keras](https://machinelearningmastery.com/reproducible-results-neural-networks-keras/) 獲得可重現的結果 * [如何評估深度學習模型的技巧](https://machinelearningmastery.com/evaluate-skill-deep-learning-models/) * [微量批量梯度下降的簡要介紹以及如何配置批量大小](https://machinelearningmastery.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/) ### API * [隨機Python API](https://docs.python.org/3/library/random.html) * [NumPy中的隨機抽樣](https://docs.scipy.org/doc/numpy/reference/routines.random.html) ### 用品 * [維基百科上的隨機數生成](https://en.wikipedia.org/wiki/Random_number_generation) * [偽隨機數發生器](https://en.wikipedia.org/wiki/Pseudorandom_number_generator) * [Mersenne Twister](https://en.wikipedia.org/wiki/Mersenne_Twister) ## 摘要 在本教程中,您發現了隨機性在應用機器學習中的作用以及如何控制和利用它。 具體來說,你學到了: * 機器學習具有隨機性源,例如數據樣本和算法本身。 * 使用偽隨機數生成器將隨機性注入到程序和算法中。 * 有時候隨機性需要仔細控制,以及需要控制隨機性的時間。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看