如何解決機器學習問題
已發表: 2022-03-11計算機的主要任務之一是使人工任務自動化。 其中一些任務簡單且重複,例如“將 X 從 A 移動到 B”。 當計算機必須對更難以形式化的問題做出決定時,它變得更加有趣。 這就是我們開始遇到基本機器學習問題的地方。
從歷史上看,此類算法是由對其領域有深入了解的科學家或專家構建的,並且主要基於規則。 隨著計算能力的爆炸式增長和大而多樣的數據集的可用性,焦點已經轉移到計算能力更強的方法上。
如今,最流行的機器學習概念都與神經網絡有關,根據我的經驗,這給許多人留下了這樣的印象,即神經網絡是所有推理問題的某種神奇武器。 事實上,這與事實相去甚遠。 在統計學家的眼中,它們形成了一類推理方法,具有相關的優勢和劣勢,這完全取決於神經網絡是否會成為最佳解決方案的問題。
很多時候,有更好的方法。
在本文中,我們將概述一種用於攻擊機器學習問題的結構。 對於特定的機器學習模型,沒有過多的細節討論的餘地,但是如果這篇文章引起了人們的興趣,後續文章可以為一些有趣的機器學習問題提供詳細的解決方案。
然而,首先,讓我們花一些精力來說明為什麼在面對機器學習問題時應該更加謹慎,而不是自動思考“神經網絡”。
神經網絡的優缺點
對於神經網絡,推理是通過加權“網絡”完成的。 在所謂的“學習”過程中對權重進行校準,然後將其應用於將結果分配給輸入。
聽起來很簡單,但所有權重都是校準網絡的參數,通常,這意味著人類無法理解的參數太多。
因此,我們不妨將神經網絡視為某種推理黑盒,將輸入與輸出連接起來,中間沒有特定的模型。
讓我們仔細看看這種方法的優缺點。
神經網絡的優勢
- 輸入是數據本身。 即使很少或沒有特徵工程也能獲得可用的結果。
- 可訓練的技能。 沒有特徵工程,就不需要像直覺或領域專業知識這樣難以培養的技能。 標準工具可用於一般推理。
- 準確性隨著數據量的增加而提高。 它看到的輸入越多,神經網絡的性能就越好。
- 當沒有關於模型的完整信息時,可能會優於經典模型。 想想公眾情緒,一方面。
- 開放式推理可以發現未知模式。 如果您使用模型並忽略它,它不會檢測到相應的現象。 神經網絡可能。
成功的神經網絡示例:谷歌的人工智能通過分析累積的望遠鏡數據,發現了一顆繞著遙遠恆星運行的行星——而 NASA 沒有發現。
神經網絡的缺點
- 它們需要大量(帶註釋的!)數據。 首先,這種數據量並不總是可用的。 收斂很慢。 一個實體模型(比如說,在物理學中)可以在幾次觀察後校準——使用神經網絡,這是不可能的。 註釋是很多工作,更不用說它本身並不是萬無一失的。
- 沒有關於數據內部結構的信息。 您對推理的依據感興趣嗎? 這裡沒有運氣。 在某些情況下,手動調整數據會大大提高推理能力,但神經網絡將無法提供幫助。
- 過擬合問題。 經常發生網絡具有比數據證明更多的參數,這導致次優推理。
- 性能取決於信息。 如果有關於問題的完整信息,實體模型往往會勝過神經網絡。
- 有抽樣問題。 抽樣始終是一個微妙的問題,但有了模型,人們可以很快形成一個有問題抽樣的概念。 神經網絡只從數據中學習,所以如果他們得到有偏見的數據,他們就會得出有偏見的結論。
失敗的一個例子:一個私人關係告訴我,一家大公司(我不能說出名字)正在研究航拍照片上的軍用車輛。 他們有這樣的車輛和其他沒有的圖像。 前者的大部分圖像是在下雨天拍攝的,而後者則是在晴天拍攝的。 結果,系統學會了區分光與影。
綜上所述,神經網絡構成了一類推理方法,各有利弊。
在公眾眼中,它們的受歡迎程度超過了所有其他統計方法,這一事實可能更多地與公司治理有關。
培訓人們使用標準工具和標準化的神經網絡方法是一個比從各個領域尋找領域專家和藝術家更可預測的過程。 然而,這並沒有改變這樣一個事實,即使用神經網絡解決一個簡單的、定義明確的問題實際上只是用大砲射擊麻雀:它需要大量數據,需要大量註釋工作,而作為回報可能與實體模型相比,表現不佳。 不是最好的包。

儘管如此,它們使統計知識“民主化”這一事實仍然具有巨大的力量。 一旦基於神經網絡的推理解決方案被視為僅僅是一種編程工具,它甚至可以幫助那些對複雜算法感到不舒服的人。 因此,不可避免地,如果我們只能使用複雜的模型進行操作,很多東西現在就不會存在了。
解決機器學習問題
在處理機器學習問題時,您需要執行以下步驟:
- 設定驗收標準
- 清理數據並最大化信息內容
- 選擇最佳推理方法
- 訓練、測試、重複
讓我們詳細了解這些項目。
設置驗收標準
您應該盡可能快地了解您的目標準確性。 這將是你努力的目標。
清理數據並最大化其信息內容
這是最關鍵的一步。 首先,您的數據應該沒有(或很少)錯誤。 清除這些是必不可少的第一步。 替換缺失值,嘗試識別明顯虛假的模式,消除重複和您可能注意到的任何其他異常。
至於信息,如果你的數據信息量很大(在線性意義上),那麼實際上任何推理方法都會給你很好的結果。 如果所需的信息不在那裡,那麼結果將是噪音。 最大化信息意味著首先在數據中找到任何有用的非線性關係並將它們線性化。 如果這能顯著改善輸入,那就太好了。 如果不是,則可能需要添加更多變量。 如果所有這些都沒有結果,目標準確性可能會受到影響。
運氣好的話,會有一些有用的變量。 您可以識別有用的變量,例如,將它們與學習目標變量作圖並發現該圖類似於函數(即,輸入中的窄範圍對應於輸出中的窄範圍)。 然後可以對該變量進行線性化 - 例如,如果它繪製為拋物線,則減去一些值並取平方根。
對於有噪聲的變量——輸入的窄範圍對應於輸出的寬範圍——我們可以嘗試將它們與其他變量結合起來。
要了解準確性,您可能需要測量每個變量的條件類概率(用於分類問題)或應用一些非常簡單的回歸形式,例如線性回歸(用於預測問題)。 如果輸入的信息內容有所改善,那麼您的推理也會有所改善,並且您根本不想在此階段浪費太多時間來校準模型,而此時數據尚未準備好。 所以保持測試盡可能簡單。
選擇最優化的推理方法
一旦您的數據狀況良好,您就可以採用推理方法(如果需要,數據可能稍後仍會被完善)。
你應該使用模型嗎? 好吧,如果你有充分的理由相信你可以為這項任務建立一個好的模型,那麼你可能應該這樣做。 如果您不這麼認為,但有大量數據和良好的註釋,那麼您可以使用神經網絡免提。 然而,在實際的機器學習應用中,通常沒有足夠的數據。
打準確與掩護通常會帶來巨大的回報。 混合方法通常完全沒問題。 假設數據是這樣的,你可以用一個簡單的模型在 80% 的數據上獲得接近 100% 的準確率? 這意味著您可以快速展示結果,並且如果您的系統可以識別它何時在 80% 的友好區域上運行,那麼您基本上已經解決了大部分問題。 您的客戶可能還沒有完全滿意,但這會很快贏得您的信任。 沒有什麼可以阻止你對剩餘的數據做類似的事情:現在通過合理的努力,你可以以 97% 的準確率覆蓋 92% 的數據。 誠然,在其餘數據上,這是一次拋硬幣,但您已經產生了一些有用的東西。
對於大多數實際應用,這非常有用。 假設您從事貸款業務並想決定向誰提供貸款,而您所知道的是,對於 70% 的客戶,您的算法非常準確。 太好了——確實,另外 30% 的申請人需要更多處理,但 70% 可以完全自動化。 或者:假設您正在嘗試使呼叫中心的接線員工作自動化,您只能在最簡單的任務上做得很好(快速而骯髒),但這些任務覆蓋了 50% 的呼叫? 太好了,如果呼叫中心能夠可靠地自動化 50% 的呼叫,他們就可以節省資金。
總結一下:如果數據信息不夠豐富,或者問題太複雜而無法整體處理,請跳出框框思考。 確定有用且易於解決的子問題,直到您有更好的想法。
準備好系統後,學習、測試和循環它,直到您對結果滿意為止。
訓練、測試、重複
在前面的步驟之後,幾乎沒有興趣。 你有數據,你有機器學習方法,所以是時候通過學習來提取參數,然後在測試集上測試推理了。 文獻表明 70% 的記錄應該用於訓練,30% 用於測試。
如果您對結果感到滿意,那麼任務就完成了。 但是,更有可能的是,您在此過程中提出了一些新想法,這些想法可以幫助您提高準確性。 也許您需要更多數據? 或者只是更多的數據清理? 還是其他型號? 無論哪種方式,您都可能會忙碌很長一段時間。
所以,祝你好運,享受未來的工作!
- 機器和信任:如何減輕 AI 偏見
- Stars Realigned:改進 IMDb 評級系統