<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 為什么應用機器學習很難 > 原文: [https://machinelearningmastery.com/applied-machine-learning-is-hard/](https://machinelearningmastery.com/applied-machine-learning-is-hard/) #### 如何處理應用機器學習的難以解決的問題。 應用機器學習具有挑戰性。 對于您的具體問題,您必須做出許多已知“_正確答案_”的決定,例如: * 使用什么框架的問題? * 要使用哪些輸入和輸出數據? * 學習算法使用什么? * 使用什么算法配置? 對于期望您可以計算或被告知要使用哪些數據或如何最佳配置算法的初學者來說,這是一項挑戰。 在這篇文章中,您將發現設計學習系統的難以處理的性質以及如何處理它。 閱讀這篇文章后,你會知道: * 如何為自己和他人制定明確的學習問題定義。 * 在為您的問題設計學習系統時必須考慮的4個決策點。 * 您可以使用3種策略來專門解決在實踐中設計學習系統的棘手問題。 讓我們開始吧。 ## 概觀 這篇文章分為6個部分,靈感來自 [Tom Mitchell的](http://www.cs.cmu.edu/~tom/)優秀的1997年書[機器學習](http://amzn.to/2yclAGZ)的第1章;他們是: 1. 良好的學習問題 2. 選擇訓練數據 3. 選擇目標功能 4. 選擇目標函數的表示 5. 選擇學習算法 6. 如何設計學習系統 ## 良好的學習問題 我們可以將應用機器學習領域中的一般學習任務定義為根據特定績效測量從某些任務的經驗中學習的程序。 Tom Mitchell在其1997年出版的“機器學習”一書中明確指出: > 據說計算機程序從經驗E中學習關于某類任務T和表現測量P,如果其在T中的任務中的表現(由P測量)隨經驗E而改善。 - 第2頁,[機器學習](http://amzn.to/2yclAGZ),1997。 我們將此作為我們可能對應用機器學習感興趣的學習任務類型的一般定義,例如預測建模。 Tom列舉了幾個例子來說明這一點,例如: * 學會識別口語。 * 學習駕駛自動駕駛汽車。 * 學習分類新的天文結構。 * 學習玩世界級的步步高。 我們可以使用上面的定義來定義我們自己的預測建模問題。一旦定義,任務就變成了設計學習系統來解決它的任務。 設計學習系統,即機器學習的應用,涉及四種設計選擇: 1. 選擇訓練數據。 2. 選擇目標函數。 3. 選擇表示。 4. 選擇學習算法。 在給定無限資源的情況下,您可以為給定問題做出最佳選擇,但我們沒有無限的時間,計算資源以及有關域或學習系統的知識。 因此,雖然我們可以準備一個[適當的](https://en.wikipedia.org/wiki/Well-posed_problem)學習問題的描述,但設計最好的學習系統是[難以處理的](https://en.wikipedia.org/wiki/Computational_complexity_theory#Intractability)。 我們所能做的最好的事情就是利用知識,技能和可用資源來完成設計選擇。 讓我們更詳細地看一下這些設計中的每一個。 ## 選擇訓練數據 您必須選擇學習系統將用作學習經驗的數據。 這是過去觀察的數據。 > 可用的訓練體驗類型會對學習器的成功或失敗產生重大影響。 - 第5頁,[機器學習](http://amzn.to/2yclAGZ),1997。 它很少格式化并且可以隨時使用;通常,您必須收集所需的數據(或認為您可能需要)以解決學習問題。 這可能意味著: * 刮痧文件。 * 查詢數據庫。 * 處理文件。 * 整理不同的來源 * 合并實體。 您需要將所有數據放在一起并形成標準化形式,以便一個觀察代表一個可獲得結果的實體。 ## 選擇目標功能 接下來,您必須選擇學習問題的框架。 機器學習實際上是學習從輸入(X)到輸出(y)的映射函數(f)的問題。 ```py y = f(X) ``` 然后,此函數可用于將來的新數據,以預測最可能的輸出。 學習系統的目標是準備一個功能,在給定可用資源的情況下,將輸入最佳地映射到輸出。實際存在的基礎功能是未知的。如果我們知道這個函數的形式,我們可以直接使用它,我們不需要機器學習來學習它。 更一般地,這是一個稱為函數逼近的問題。結果將是近似值,意味著它將有錯誤。我們將盡最大努力將此錯誤降至最低,但在給定數據噪聲的情況下,總會存在一些錯誤。 > ......在這種情況下,我們將學習任務減少到發現理想目標函數V的操作描述的問題。一般來說,完全學習V的這種操作形式可能是非常困難的。實際上,我們經常期望學習算法僅獲得對目標函數的一些近似,因此學習目標函數的過程通常被稱為函數逼近。 - 第8頁,[機器學習](http://amzn.to/2yclAGZ),1997。 該步驟是關于準確選擇要用作該函數的輸入的數據,例如,輸入特征或輸入變量以及準確預測的內容,例如輸出變量。 通常,我將此稱為學習問題的框架。選擇輸入和輸出基本上選擇了我們將尋求近似的目標函數的性質。 ## 選擇目標函數的表示 接下來,您必須選擇要用于映射功能的表示。 將此視為您希望擁有的最終模型類型,然后您可以使用它來進行預測。您必須選擇此模型的形式,數據結構(如果您愿意)。 > 現在我們已經指定了理想的目標函數V,我們必須選擇一個學習程序將用來描述它將學習的函數Vprime的表示。 — Page 8, [Machine Learning](http://amzn.to/2yclAGZ), 1997. 例如: * 也許您的項目需要一個易于理解并向利益相關者解釋的決策樹。 * 也許您的利益相關者更喜歡統計人員可以輕松解釋的線性模型。 * 也許您的利益相關者不關心模型表現以外的任何事情,因此所有模型表示都可以爭奪。 表示的選擇將對可用于學習映射函數的學習算法類型施加約束。 ## 選擇學習算法 最后,您必須選擇將獲取輸入和輸出數據的學習算法,并學習您首選表示的模型。 如果通常情況下對表示選擇的限制很少,那么您可以評估一套不同的算法和表示。 如果對功能表示的選擇存在強烈限制,例如加權和線性模型或決策樹,然后算法的選擇將限于那些可以對特定表示進行操作的算法。 算法的選擇可能會產生自己的約束,例如特定的數據準備變換,如數據規范化。 ## 如何設計學習系統 開發學習系統具有挑戰性。 在此過程中,沒有人可以告訴你每個決定的最佳答案;對于您的特定學習問題,最佳答案是未知的。 Mitchell幫助澄清了這一點,并描述了設計學習系統以進行跳棋的選擇。 ![Depiction of Choices in Designing a Checker-Playing Learning System](https://img.kancloud.cn/96/4a/964aab263c2d2daed0593cd2ad8e9aeb_1240x1464.jpg) 設計棋盤游戲學習系統的選擇描述。 取自“機器學習”,1997年。 這些選擇充當了設計過程的約束點。米切爾繼續說: > 這些設計選擇以多種方式限制了學習任務。我們已將可獲得的知識類型限制為單個線性評估函數。此外,我們將此評估功能限制為僅依賴于所提供的六個特定板功能。如果真正的目標函數V確實可以通過這些特定特征的線性組合來表示,那么我們的程序很有可能學習它。如果沒有,那么我們所希望的最好的是它將學習一個很好的近似,因為一個程序肯定永遠不會學到任何它至少不能代表的東西。 - 第13-14頁,[機器學習](http://amzn.to/2yclAGZ),1997年。 我喜歡這段經文,因為它確實推動了這些約束對于簡化問題的重要性,以及做出限制或阻止系統充分了解問題的選擇的風險。 通常,您不能分析地計算這些選擇的答案,例如:要使用的數據,要使用的算法或要使用的算法配置。 盡管如此,一切都不會丟失;這里有3種可以在實踐中使用的策略: 1. **復制**。查看文獻或專家,了解與您的問題相同或類似問題的學習系統,并復制學習系統的設計。您很可能不是第一個處理給定類型問題的人。在最糟糕的情況下,復制的設計為您自己的設計提供了一個起點。 2. **搜索**。列出每個決策點的可用選項,并根據實際情況對每個決策點進行評估,以了解哪些方法最適合您的特定數這可能是應用機器學習中最強大和最實踐的方法。 3. **設計**。通過上面的復制和搜索方法完成許多項目后,您將開發出如何設計機器學習系統的直覺。 發展學習系統不是一門科學;這是工程。 開發新的機器學習算法并描述它們如何以及為什么工作是一門科學,在開發學習系統時通常不需要這樣做。 開發學習系統很像開發軟件。您必須結合(1)過去設計的工作副本,(2)顯示有希望的結果的原型,以及(3)開發新系統以獲得最佳結果時的設計經驗。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 * 第1章,[機器學習](http://amzn.to/2yclAGZ),1997。 * [Tom Mitchell的主頁](http://www.cs.cmu.edu/~tom/) * [維基百科問題很好](https://en.wikipedia.org/wiki/Well-posed_problem) * [維基百科上的難以理解](https://en.wikipedia.org/wiki/Computational_complexity_theory#Intractability) * [如何定義機器學習問題](https://machinelearningmastery.com/how-to-define-your-machine-learning-problem/) * [應用機器學習過程](https://machinelearningmastery.com/start-here/#process) ## 摘要 在這篇文章中,您發現了在應用機器學習中設計學習系統的難以處理的性質以及如何處理它。 具體來說,你學到了: * 如何為自己和他人制定明確的學習問題定義。 * 在為您的問題設計學習系統時必須考慮的4個決策點。 * 您可以使用3種策略來專門解決在實踐中設計學習系統的棘手問題。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看