任何項(xiàng)目的第一步都是定義您的問題。您可以使用最強(qiáng)大,最閃亮的算法,但如果您正在解決錯(cuò)誤的問題,結(jié)果將毫無意義。
在這篇文章中,您將學(xué)習(xí)在開始之前深入思考問題的過程。這無疑是應(yīng)用機(jī)器學(xué)習(xí)的最重要方面。
問題是什么?
照片歸功于Eleaf,保留了一些權(quán)利
問題定義框架
我在定義一個(gè)新問題時(shí)使用一個(gè)簡單的框架來解決機(jī)器學(xué)習(xí)問題。該框架幫助我快速了解問題的要素和動機(jī),以及機(jī)器學(xué)習(xí)是否合適。
該框架涉及回答三個(gè)問題,以達(dá)到不同程度的徹底性:
- 第1步:問題是什么?
- 第2步:為什么問題需要解決?
- 第3步:我如何解決問題?
第1步:問題是什么
第一步是定義問題。我使用了許多策略來收集這些信息。
非正式的描述
描述問題,就像您向朋友或同事描述一樣。這可以為突出顯示您可能需要填充的區(qū)域提供一個(gè)很好的起點(diǎn)。它還提供了一個(gè)句子描述的基礎(chǔ),您可以使用它來分享您對問題的理解。
例如:我需要一個(gè)程序來告訴我哪些推文會轉(zhuǎn)發(fā)。
形式主義
在上一篇定義機(jī)器學(xué)習(xí)的博客文章中,您了解了Tom Mitchell的機(jī)器學(xué)習(xí)形式。這里再次刷新你的記憶。
據(jù)說計(jì)算機(jī)程序從經(jīng)驗(yàn)E中學(xué)習(xí)關(guān)于某類任務(wù)T和性能測量P,如果其在T中的任務(wù)中的性能(由P測量)隨經(jīng)驗(yàn)E而改善。
使用這種形式來定義T,P和E.您的問題。
例如:
- 任務(wù)(T):將尚未發(fā)布的推文分類為轉(zhuǎn)發(fā)或不轉(zhuǎn)發(fā)。
- 經(jīng)驗(yàn)(E):一個(gè)帳戶的推文語料庫,其中一些有轉(zhuǎn)推,有些則沒有轉(zhuǎn)推。
- 性能(P):分類準(zhǔn)確性,所有推文中正確預(yù)測的推文數(shù)量被視為百分比。
假設(shè)
創(chuàng)建一個(gè)關(guān)于問題及其措辭的假設(shè)列表。這些可能是經(jīng)驗(yàn)法則和特定于域的信息,您認(rèn)為這些信息可以讓您更快地獲得可行的解決方案。
突出可以針對實(shí)際數(shù)據(jù)進(jìn)行測試的問題可能很有用,因?yàn)楫?dāng)假設(shè)和最佳實(shí)踐在實(shí)際數(shù)據(jù)面前被證明是錯(cuò)誤的時(shí)候會出現(xiàn)突破和創(chuàng)新。突出可能需要挑戰(zhàn),放松或收緊的問題規(guī)范區(qū)域也是有用的。
例如:
- 推文中使用的特定詞語與模型有關(guān)。
- 轉(zhuǎn)發(fā)的特定用戶與模型無關(guān)。
- 轉(zhuǎn)推的數(shù)量可能對模型有影響。
- 較早的推文比最近的推文更不具有預(yù)測性。

質(zhì)疑一切!
照片歸功于dullhunk,保留了一些權(quán)利
類似的問題
您看到了哪些其他問題或者您能想到的問題就像您要解決的問題一樣?其他問題可以通過強(qiáng)調(diào)問題措辭的局限性來解決您試圖解決的問題,例如時(shí)間維度和概念漂移(建模的概念隨著時(shí)間的推移而變化)。其他問題也可以指向可用于檢查性能的算法和數(shù)據(jù)轉(zhuǎn)換。
例如:一個(gè)相關(guān)問題是電子郵件垃圾郵件歧視,它使用文本消息作為輸入數(shù)據(jù),需要二進(jìn)制分類決策。
第2步:為什么需要解決問題?
第二步是深入思考為什么你想要或者需要解決問題。
動機(jī)
考慮一下解決問題的動機(jī)。問題解決后需要滿足什么?
例如,您可能正在將問題解決為學(xué)習(xí)練習(xí)。這有助于澄清,因?yàn)槟梢詻Q定不想使用最合適的方法來解決問題,而是想要探索您不熟悉的方法以學(xué)習(xí)新技能。
或者,您可能需要將問題作為工作職責(zé)的一部分來解決,最終是為了保住您的工作。
解決方案優(yōu)勢
考慮解決問題的好處。它能夠?qū)崿F(xiàn)哪些功能?
重要的是要清楚解決問題的好處,以確保您充分利用它們。這些好處可用于將項(xiàng)目出售給同事和管理層以獲得購買和額外的時(shí)間或預(yù)算資源。
如果它對您個(gè)人有益,那么請明確這些好處是什么以及您何時(shí)獲得這些好處。例如,如果它是一個(gè)工具或?qū)嵱贸绦?,那么你可以用你現(xiàn)在不能做的那個(gè)實(shí)用程序做什么,為什么這對你有意義?
解決方案使用
考慮如何使用問題的解決方案以及您期望解決方案具有的生命周期類型。作為程序員,我們經(jīng)常認(rèn)為工作是在程序編寫完成后立即完成的,但實(shí)際上項(xiàng)目只是開始維護(hù)生命周期。
解決方案的使用方式將影響您采用的解決方案的性質(zhì)和要求。
考慮您是否要編寫報(bào)告以顯示結(jié)果,或者您希望操作解決方案。如果要實(shí)施解決方案,請考慮解決方案的功能和非功能需求,就像軟件項(xiàng)目一樣。
第3步:我如何解決問題?
在問題定義的第三步也是最后一步,探索如何手動解決問題。
逐步列出您將收集哪些數(shù)據(jù),如何準(zhǔn)備它以及如何設(shè)計(jì)程序來解決問題。這可能包括您需要執(zhí)行的原型和實(shí)驗(yàn),這些都是金礦,因?yàn)樗鼈儗⑼怀瞿鷮梢蕴剿鞯念I(lǐng)域的問題和不確定性。
這是一個(gè)強(qiáng)大的工具。它可以突出顯示使用手動實(shí)施的解決方案可以令人滿意地解決的問題。它還刷新了迄今為止存在的重要領(lǐng)域知識,例如數(shù)據(jù)實(shí)際存儲的位置,哪些類型的功能有用以及許多其他細(xì)節(jié)。
收集所有這些細(xì)節(jié),并更新問題定義的前幾部分。特別是假設(shè)和經(jīng)驗(yàn)法則。
在描述機(jī)器學(xué)習(xí)問題的復(fù)雜問題之前,我們已經(jīng)考慮過手動指定的解決方案。
摘要
在這篇文章中,您了解了明確解決問題的價(jià)值。您發(fā)現(xiàn)了一個(gè)三步框架,用于在步驟中使用實(shí)用策略定義您的問題:
- 第1步:問題是什么? 非正式地和正式地描述問題并列出假設(shè)和類似問題。
- 第2步:為什么需要解決問題? 列出您解決問題的動機(jī),解決方案提供的好處以及解決方案的使用方式。
- 第3步:我如何解決問題? 描述如何手動解決問題以刷新領(lǐng)域知識。
