雖然有很多機器學習算法,但是沒有通用的解決方案。決策樹、隨機森林、樸素貝葉斯、深度網絡等。,有時候會覺得挑剔?福利來了~本文教妳認識本質,快速選擇滿意的算法!
機器學習既是壹門科學,也是壹門藝術,縱觀各種機器學習算法,沒有通用的解決方案或方法。其實有幾個因素會影響妳對機器學習算法的選擇。
有些問題很特殊,需要特定的解決方案。舉個例子,如果妳對推薦系統有所了解,妳會發現它是壹種很常見的機器學習算法,用來解決壹類很特殊的問題。其他問題非常開放,可能需要試錯法(比如強化學習)。監督學習、分類、回歸等問題非常開放,可用於異常檢測或建立更廣泛的預測模型。
另外,我們在選擇機器學習算法時所做的壹些決策,與算法優化或技術水平關系不大,更多的是與商業決策有關。下面,我們來看看有哪些因素可以幫助妳縮小機器學習算法的選擇範圍。
數據科學過程
在妳開始研究不同的機器學習算法之前,妳需要對妳所擁有的數據,妳所面臨的問題以及相關的約束有壹個清晰的認識。
了解您的數據
當我們決定使用哪種算法時,我們擁有的數據的類型和形狀起著關鍵作用。壹些算法可以使用小樣本集,而其他算法需要大量樣本。特定的算法處理特定類型的數據。例如,樸素貝葉斯算法對於處理要分類的輸入特別有效,但它對缺失值壹點也不敏感。
因此,妳需要做:
了解您的數據
1.查看統計和數據可視化的摘要。
百分比可以幫助您確定大多數數據的範圍
平均值和中位數可以描述濃度趨勢。
相關系數可以表示強相關性。
2.數據可視化
箱線圖可以識別異常值。
密度圖和直方圖可以顯示數據的分布。
散點圖可以描述二元關系。
數據清理
1.處理缺失值。缺失數據對某些模型的影響比其他模型更大。即使是那些用於處理缺失數據的模型,也可能對缺失數據比較敏感(某些變量的缺失數據可能導致預測性能較差)。
2.選擇處理異常值的方法。
離群值在多維數據中非常常見。
有些模型對異常值不太敏感。壹般來說,樹模型對離群值的存在並不敏感。然而,回歸模型或任何試圖使用方程的模型都會受到異常值的嚴重影響。
異常值可能是由糟糕的數據收集造成的,也可能是合理的極端情況。
3.數據需要匯總嗎?
數據增強
1.特征工程是從原始數據生成可用於建模的數據的過程,可發揮以下作用:
使模型更容易解釋(如數據寧濱)
捕捉更復雜的關系(如神經網絡)
減少數據冗余,降低數據維度(如主成分分析(PCA))
重新調整變量(例如,標準化或規範化)
2.不同的型號可能對特色工程有不同的要求。壹些模型具有內置的特征工程。
將問題分類
下壹步是對問題進行分類。這是壹個兩步過程。
1.根據輸入分類:
如果妳已經標記了數據,那麽這就是壹個監督學習的問題。
如果妳有未標註的數據,想從中找到有用的結構,那麽這就是壹個無監督學習的問題。
如果妳想通過與環境的交互來優化壹個目標函數,那麽這就是壹個強化學習問題。
2.根據輸出分類:
如果模型的輸出是壹個(連續的)數,那麽這就是壹個回歸問題。
如果模型的輸出是壹個類別,那麽這就是壹個分類問題。
如果模型的輸出是壹組由輸入數據劃分的聚類,那麽這就是壹個聚類問題。
妳想找到異常點嗎?此時,您面臨壹個異常檢測問題。
理解妳想要滿足的約束。
妳需要考慮妳能存儲多少數據。根據系統的存儲容量,您可能無法存儲幾GB的分類、回歸模型或幾GB的聚類分析數據。比如在嵌入式系統中,妳會面臨這種情況。
對預測過程的速度有要求嗎?在實時應用中,盡快得到預測結果顯然是非常重要的。例如,在自動駕駛的問題中,應用程序必須盡快對路標進行分類,以避免交通事故。
對學習過程的速度有要求嗎?在某些情況下,快速訓練模型是必要的:有時,您需要使用不同的數據集來快速和實時地更新您的模型。
尋找可用的算法
當妳對自己的任務環境有了清晰的認識之後,妳就可以利用妳所擁有的工具,來確定適合所要解決問題的可行算法。影響您選擇型號的壹些因素如下:
模型符合業務目標嗎?
模型需要多少數據預處理?
模型有多精確?
模型的可解釋性是什麽
模型運行速度有多快?建立模型需要多長時間?模型做出預測需要多長時間?
模型的可伸縮性如何?
模型的復雜度是影響算法選擇的重要標準。壹般來說,更復雜的模型具有以下特征:
它依賴更多的特征進行學習和預測(例如,使用十個特征而不是兩個來預測目標)。
它依賴於更復雜的特征工程(例如,使用多項式特征、交互特征或主成分)
它有更多的計算開銷(例如,它需要由100棵決策樹組成的隨機森林,而不是單棵決策樹)。
此外,基於參數的數量和壹些超參數的選擇,相同的機器學習算法可以變得更加復雜。例如:
回歸模型可以有更多的特征,或者多項式項和交互項。
決策樹可以有更大或更小的深度。
使相同的算法更復雜增加了過度擬合的可能性。
常用的機器學習算法
線性回歸
這可能是機器學習中最簡單的算法了。例如,當您想要計算壹些連續值而不是對輸出進行分類時,可以使用回歸算法。因此,當您需要預測正在運行的進程的未來值時,可以使用回歸算法。但當特征有冗余時,即存在多重共線性時,線性回歸不穩定。
在下列情況下可以考慮線性回歸:
從壹個地方到另壹個地方所需的時間。
預測下個月產品的銷售。
血液中酒精含量對協調能力的影響
預測每月購物卡的銷售額,並改進年收入的估算。
邏輯回歸
邏輯回歸執行二進制分類,因此輸出二進制標簽。它以特征的線性組合作為輸入,並對其應用非線性函數(sigmoid),因此它是神經網絡的壹個非常小的例子。
邏輯回歸提供了許多方法來正則化您的模型,因此您不必擔心您的要素是否相關,就像在樸素貝葉斯算法中壹樣。該模型也有很好的概率解釋。與決策樹或支持向量機不同,您可以輕松地更新模型以獲得新數據。如果妳想使用概率框架,或者妳想在將來快速地將更多的訓練數據集成到妳的模型中,妳可以使用邏輯回歸算法。邏輯回歸也可以幫助妳理解預測結果背後的因素,它並不完全是壹種黑箱方法。
在下列情況下可以考慮邏輯回歸算法:
預測客戶流失
信用評分和欺詐檢測
評估營銷活動的效果
決策圖表
決策樹很少單獨使用,但是不同的決策樹可以組合成非常高效的算法,比如隨機森林或者梯度提升樹算法。
決策樹很容易處理特征交互,決策樹是非參數模型,不用擔心離群值,也不用擔心數據是否線性可分。決策樹算法的壹個缺點是不支持在線學習,所以當妳想使用新的樣本時,妳必須重建決策樹。決策樹的另壹個缺點是容易過擬合,這就是像隨機森林(或提升樹)這樣的集成學習方法可以派上用場的地方。決策樹也需要大量的內存空間(妳擁有的特性越多,妳的決策樹可能就越深越大)。
決策樹可以幫助您在許多行動路徑中進行選擇:
做出投資決策
預測客戶流失
找出可能拖欠銀行貸款的人。
在“建造”和“購買”之間選擇
銷售主管資格考試
k均值
有的時候,妳根本沒有數據標註信息,妳的目標是根據對象的特征來標註對象。這個問題叫做聚類任務。這種情況下可以使用聚類算法:比如妳有壹大群用戶,妳想根據他們的壹些屬性把他們分成壹些特定的組。
如果妳的問題陳述中有這樣的問題,比如說,找出壹群個體的組織形式,或者把某個東西分組,或者找出某個特定的群體。這時候就要用聚類算法了。
這種方法最大的缺點是K- means算法需要事先知道妳的數據會有多少個聚類,所以可能需要大量的實驗來“猜測”我們最終定義的最優聚類數-K。
主成分分析
主成分分析可以降低數據的維數。有時候,妳有各種各樣的特征,這些特征之間的相關性可能很高,如果使用這麽大的數據量,模型可能會過擬合。這時候就可以用主成分分析(PCA)技術了。
主成分分析(PCA)的關鍵因素是它除了提供低維樣本表示外,還提供了各種變量的同步低維表示。樣本和變量的同步表示提供了壹種直觀地找到能夠代表壹組樣本特征的變量的方法。
支持向量機
支持向量機(SVM)是壹種廣泛用於模式識別和分類的監督機器學習技術——當妳的數據恰好有兩種類型時。
支持向量機的準確率高,這是防止過擬合的很好的理論保證。當您使用適當的核函數時,即使您的數據在基(低維)特征空間中是線性不可分的,它們也可以很好地工作。支持向量機(SVM)在文本分類中非常流行。在這個問題中,輸入是壹個維數非常高的空間是很正常的。然而,SVM是壹種內存密集型算法,很難解釋和調整。
在以下實際應用中,您可以使用支持向量機:
發現糖尿病等常見病的人。
手寫字符識別
文本分類-按主題對文章進行分類。
股票市場價格預測
樸素貝葉斯
這是壹種基於貝葉斯定理的分類技術,易於構造,非常適合大規模數據集。除了其簡單的結構,據說樸素貝葉斯甚至比壹些復雜得多的分類方法執行得更好。在CPU和內存資源有限的情況下,樸素貝葉斯算法也是壹個不錯的選擇。
樸素貝葉斯非常簡單,妳只是在做大量的計數工作。如果樸素貝葉斯的條件獨立性假設成立,樸素貝葉斯分類器的收斂速度會比logistic回歸快,因此需要的訓練數據較少。即使樸素貝葉斯的假設不成立,樸素貝葉斯分類器往往也能很好地完成任務。如果想用壹個快速、簡單、性能好的模型,樸素貝葉斯是個不錯的選擇。這種算法最大的缺點是無法學習特征之間的相互作用。
您可以在以下實際應用中使用樸素貝葉斯:
情感分析和文本分類
類似於網飛和亞馬遜的推薦系統。
識別垃圾郵件
面部識別
隨機森林
隨機森林是決策樹的壹種集成方法。它可以同時解決大規模數據集的回歸問題和分類問題,也有助於從成千上萬的輸入變量中找到最重要的變量。隨機森林具有很強的可擴展性,它適用於任何維度的數據,通常具有相當好的性能。另外還有壹些遺傳算法,用最少的關於數據本身的知識就可以很好的擴展到任何維度,任何數據,最簡單的實現就是微生物遺傳算法。但是隨機森林學習的速度可能比較慢(取決於參數設置),而且這種方法不能叠代改進生成模型。
在以下實際應用中,您可以使用隨機森林:
預測高危患者
預測生產中零件的故障
預測貸款違約的人。
神經網絡
神經網絡包含神經元之間連接的權重。這些權重是平衡的,數據點是壹個壹個學來的。當所有的權重被訓練後,如果需要對新給定的數據點進行回歸,可以使用神經網絡來預測分類結果或特定值。利用神經網絡,我們可以訓練壹個特別復雜的模型,把它作為黑箱方法。在訓練模型之前,我們不需要進行不可預測的復雜特征工程。通過與“深度方法”相結合,甚至可以使用更不可預測的模型來實現新的任務。例如,最近人們通過深度神經網絡大大改善了物體識別任務的結果。深度學習還應用於特征提取等無監督學習任務,也可以在較少人工幹預的情況下從原始圖像或語音中提取特征。
另壹方面,神經網絡很難解釋清楚,其參數設置也復雜得令人難以置信。另外,神經網絡算法也是資源密集型和內存密集型的。
SCIKIT參考手冊
Scikit learning為妳提供了壹個非常深入且解釋清楚的流程圖,可以幫助妳選擇正確的算法。我覺得這張圖很方便。
結論
壹般來說,妳可以根據上面提到的幾點篩選出壹些算法,但是壹開始就很難知道哪種方法是最好的。妳最好反復幾次選擇算法的過程。將妳的數據輸入到妳所識別的潛在優秀的機器學習算法中,以並行或串行方式運行這些算法,最後評估算法的性能,從而選擇最佳算法。
最後,我想告訴妳,找到現實生活中問題的正確解決方案通常不僅僅是應用數學方法的問題。這就要求我們了解業務需求、規則和制度、相關利益方的關註點,並具備大量的專業知識。在解決壹個機器學習問題的同時,組合和平衡這些問題是非常重要的,能做到這壹點的人才能創造最大的價值。