機器學習方法我已知的都是黑箱(指的是類似隨機森林,svm,cnn這樣用的廣泛的,說的不太清楚,見諒),或者說無法解釋其各個參數意義,形成不了預測或者分類規則(指的是是像單決策樹那樣形成文本或數值的詳細規則。)

決策樹倒是可以,但那要提前知道規則(我做的是監督分類,所以是知道規則得到結果的)

現在有沒有一種演算法模型,可以得到有明確規則是預測或者分類結果?

我說的黑箱可能和業界的意思不一致,在我看來,無法像樹那樣描述規則的都是黑箱,補充一下

本人在這方面確實是初步接觸的小白,不太懂,非計算機專業,只是要用到這些方法,各位大佬見諒。


傳統的機器學習模型基本都有可解釋性


題目描述幾乎每一句都是錯的

「機器學習方法我已知的都是黑箱,或者說無法解釋其各個參數意義」——基本都不是黑箱,SVM不是,regularized linear model不是,decision tree不是,random forest或者boosted tree勉強算黑箱,但是也有很多可解釋性,也就nn可解釋性稍微模糊一些,但是cnn也能理解很多

「形成不了預測或者分類規則」 —— 即使是黑箱,為什麼不能形成預測或者分類規則?ML不就是為了得到預測或者分類規則么

「決策樹倒是可以,但那要提前知道規則」 ——誰說要提前知道規則了?提前知道決策樹的規則還學什麼?

「現在有沒有一種演算法模型,可以得到有明確規則是預測或者分類結果?」 ——同上,幾乎所有的模型

建議多看看書上上課寫寫code


先附上Scikit-learn中文文檔:

scikit-learn中文社區

機器學習既是藝術又是科學。但當您查看機器學習演算法時,沒有一種解決方案或一種適合所有情況的演算法。有幾個因素會影響您選擇哪種機器學習。

有些問題非常具體,需要採取獨特的方法。例如,如果您使用推薦系統,這是一種非常常見的機器學習演算法,解決的是非常具體的問題。而其他問題非常開放,則需要試錯的方法去解決。監督學習、分類和回歸都是非常開放的。它們可以用於異常檢測,或者用來打造更通用的預測模型。。

我們在選擇機器學習演算法時所做的一些決定,更多地取決於商業決策,而不是優化或者演算法的技術面。在下文中,我們將討論有助於縮小機器學習演算法選擇範圍的一些因素。

數據科學過程

在開始審視不同的機器學習演算法之前,你必須對你的數據、面臨的問題和局限有一個清晰的認識。

了解你的數據

在決定使用哪種演算法時,必須考慮數據的類型和種類。一些演算法只需要少量樣本,另一些則需要大量樣本。某些演算法只能處理特定類型的數據。例如,樸素貝葉斯演算法與分類數據相得益彰,但對缺失數據完全不敏感。

因此,您需要:

了解數據

  1. 查看匯總統計信息和可視化
  • 百分位數可以幫助確定大部分數據的範圍
  • 平均值和中位數可以描述集中趨勢
  • 相關性可以指明緊密的關係
  1. 可視化數據
  • 箱形圖可以識別異常值
  • 密度圖和直方圖顯示數據的分布
  • 散點圖可以描述雙變數關係

清理數據

  1. 處理缺失值。缺失數據對某些模型的影響超過了對其他模型的影響。即便是對能夠處理缺失數據的模型來說,它們也可能受到影響(某些變數的缺失數據會導致糟糕的預測)。
  2. 選擇如何處理異常值
  • 異常值在多維數據中非常常見。
  • 一些模型對異常值的敏感性低於其他模型。通常,樹模型對異常值的存在不太敏感。但是,回歸模型或任何嘗試使用等式的模型肯定會受到異常值的影響。
  • 異常值可能是數據收集不正確的結果,也可能是真實的極端值。

3.數據是否需要匯總

增強數據

  1. 特徵工程是從原始數據到建模可用數據的過程。這有幾個目的:
  • 使模型更易於解釋(比如分箱)
  • 抓取更複雜的關係(比如神經網路)
  • 減少數據冗餘和維度(比如主成分分析)
  • 重新縮放變數(比如標準化或正則化)

2.不同的模型可能對特徵工程有不同的要求。一些要求已經內置到特徵工程中。

問題歸類

下一步是對問題進行歸類。這分兩步。

  1. 按輸入數據分類:
  • 如果是標籤數據,那就是監督學習問題。
  • 如果是無標籤數據,想找到結構,那就是非監督學習問題。
  • 如果想通過與環境互動來優化一個目標函數,那就是強化學習問題。

2.按輸出數據分類。

  • 如果模型的輸出數據是一個數字,那就是回歸問題。
  • 如果模型的輸出數據是一個類,那就是分類問題。
  • 如果模型的輸出數據是一組輸入數據,那就是聚類問題。
  • 是不是想檢測一個異常?那就是異常檢測。

了解你的限制

  • 數據存儲能力如何?根據系統的存儲能力,你可能無法存儲大量的分類/回歸模型或者待聚類的大量數據。例如,嵌入式系統就是這樣。
  • 是否必須迅速作出預測?在實時應用中,儘可能快地作出預測顯然非常重要。例如,在自動駕駛時,必須儘可能快地對道路標誌進行分類,以免發生事故。
  • 是否必須迅速學習?在某些情況下,快速訓練模型是必需的。有時,你需要在匆忙之中用不同的數據集迅速更新你的模型。

查找可用的演算法

你已經對自己的處境有了一個清晰的認識,接下來是識別適用的、利用手中工具可以實際執行的演算法。影響模型選擇的因素包括:

  • 模型是否符合商業目標
  • 模型需要多大程度的預處理
  • 模型的準確性
  • 模型的可解釋性
  • 模型的速度:建立模型需要多久,模型作出預測需要多久
  • 模型的擴展性

影響演算法選擇的一個重要標準是模型的複雜性。一般來說,更複雜的模型:

  • 需要更多的特徵來學習和預測(比如使用兩個特徵VS使用10個特徵來預測一個目標)
  • 需要更複雜的特徵工程(比如使用多項式項、交互關係或主成分)
  • 需要更大的計算開銷(比如1顆決策樹VS由100顆決策樹組成的隨機森林)

此外,同一種機器學習演算法會因為參數的數量或者對某些超參數的選擇而變得更加複雜。例如:

  • 一個回歸模型可能擁有更多的特徵或者多項式項和交互項。
  • 一顆決策樹可能擁有更大或更小的深度。

使同一演算法更複雜,這會增加過擬合的幾率。

常用的機器學習演算法

線性回歸

這可能是最簡單的機器學習演算法。當你想計算某個連續值的時候,可以使用回歸演算法,而分類演算法的輸出數據是類。所以,每當你要預測一個正在進行當中的過程的某個未來值時,你可以使用回歸演算法。但線性回歸在特徵冗餘(也就是存在多重共線性)的情況下會不穩定。

線性回歸的幾個用例:

  • 是時候從一個地方到另一個地方
  • 預測特定產品在下個月的銷量
  • 血液酒精含量對身體協調性的影響
  • 預測每月禮品卡銷量和改善每年收入預期

邏輯回歸

邏輯回歸進行二元分類,所以輸出數據是二元的。這種演算法把非線性函數(sigmoid)應用於特徵的線性組合,所以它是一個非常小的神經網路實例。

邏輯回歸提供了模型正則化的很多方法,不必擔心特徵是否相關,就像使用樸素貝葉斯演算法的時候一樣。與決策樹和支持向量機相比,邏輯回歸提供了出色的概率解釋,能輕易地用新數據來更新模型。如果想建立一個概率框架,或者希望以後將更多的訓練數據迅速整合到模型中,可以使用邏輯回歸。這種演算法還能幫助你了解預測背後的貢獻因素,不是一種黑箱方法。

邏輯回歸的幾個用例:

  • 預測客戶流失
  • 信用評分和欺詐檢測
  • 衡量營銷活動的效果

決策樹

人們很少使用單一的決策樹,但與其他很多決策樹結合起來,就能變成非常有效的演算法,比如隨機森林和梯度提升樹。

決策樹可以輕鬆地處理特徵的交互關係,並且是非參數化的,所以不必擔心離群值或者數據是否線性可分。缺點是不支持在線學習,所以在新樣本到來時,必須重建決策樹。另一個缺點是容易過擬合,但隨機森林和提升樹等集成方法可以克服這一缺點。決策樹還會佔用很多內存(特徵越多,決策樹就可能越深、越大)。

決策樹是幫助你在幾個行動方案之間作出選擇的出色工具。

  • 投資決策
  • 客戶流失
  • 銀行貸款違約人
  • 自建VS購買決策
  • 銷售線索資質

K-means

有時,你不知道任何標籤,你的目標是根據對象的特徵賦予標籤。這被稱為聚類任務。聚類演算法的一個用例是根據某些共同屬性,將一大群用戶分組。

如果在你的問題陳述中,存在「這是如何組織的」等疑問,或者要求將某物分組或聚焦於特定的組,那麼你應該採用聚類演算法。

K-Means的最大缺點,在於必須事先知道你的數據中將有多少個簇。因此,這可能需要進行很多的嘗試,來「猜測」簇的最佳K值。

主成分分析(PCA)

PCA能降維。有時,數據的特徵很廣泛,可能彼此高度相關,在數據量大的情況下,模型容易過擬合。這時可以使用PCA。

PCA大受歡迎的一個關鍵,在於除了樣本的低維表示以外,它還提供了變數的同步低維表示。同步的樣本和變數表示提供了以可視方式尋找一組樣本的特徵變數。

支持向量機(SVM)

SVM是一種監督學習方法,被廣泛用於模式識別和分類問題(前提是數據只有兩類)。

SVM的優點是精度高,對避免過擬合有很好的理論保障,而且只要有了適當的核函數,哪怕數據在基本特徵空間中不是線性可分的,SVM也能運行良好。在解決高維空間是常態的文本分類問題時,SVM特別受歡迎。SVM的缺點是消耗大量內存、難以解釋和不易調參。

SVM在現實中的幾個應用:

  • 探測常見疾病(比如糖尿病)患者
  • 手寫文字識別
  • 文本分類——按話題劃分的新聞報道
  • 股價預測

樸素貝葉斯

這是一種基於貝葉斯定理的分類方法,很容易構建,對大數據集特別有用。除了具有簡單的優點以外,樸素貝葉斯甚至好於某些高度複雜的分類方法。在CPU和內存資源是限制因素的情況下,樸素貝葉斯也是很好的選擇。

樸素貝葉斯超級簡單,只需要做些算術即可。如果樸素貝葉斯關於條件獨立的假設確實成立,那麼樸素貝葉斯分類器將比邏輯回歸等判別模型更快地收斂,因此你需要的訓練數據更少。即使假設不成立,樸素貝葉斯分類器在實踐中仍然常常表現不俗。如果你需要的是快速簡單且表現出色,樸素貝葉斯將是不錯的選擇。其主要缺點是學習不了特徵間的交互關係。

樸素貝葉斯在現實中的幾個應用:

  • 情感分析和文本分類
  • 推薦系統,比如Netflix和亞馬遜
  • 把電子郵件標記為垃圾郵件或者非垃圾郵件
  • 面部識別

隨機森林

隨機森林包含多顆決策樹。它能解決擁有大數據集的回歸和分類問題,還有助於從眾多的輸入變數中識別最重要的變數。隨機森林可擴展到任意維數,其表現通常是可接受的。遺傳演算法可擴展到任何維度以及對數據本身知之甚少的任何數據,微生物遺傳演算法實現起來代價最低、最簡單。但隨機森林的學習速度可能很慢(取決於參數化),而且不可能迭代地改進生成模型。

隨機森林在現實中的幾個應用:

  • 預測高風險患者
  • 預測製造業的零件故障
  • 預測貸款違約人

神經網路

神經網路包含神經元之間的連接權重。權重是平衡的,在學習數據點後繼續學習數據點。所有權重被訓練後,神經網路可以用來預測類或者量,如果發生了一個新的輸入數據點的回歸。用神經網路可以訓練極其複雜的模型,它們能作為黑箱,不必在訓練模型之前進行不可預測的、複雜的特徵工程。再加上「深度方法」,即便是更加不可預測的模型也能被用來實現新的可能性。例如,利用深度神經網路,對象識別近期取得巨大進步。應用於非監督學習任務,比如特徵提取,深度學習還能從原始圖像或語音中提取特徵,不需要太多的人類干預。

另一方面,神經網路非常難以解釋說明,參數化極其令人頭疼,而且非常耗費資源和內存。

Scikit速查表

scikit-learn提供了一張非常深入、清晰易懂的流程圖,幫助你選擇適當的演算法,用起來非常方便。

總結

通常來說,你可以參考以上內容,縮小演算法選擇的範圍,但一開始很難知道哪個演算法最適合你。最好是迭代篩選。把你的數據輸入你認為可能是佳選擇的機器學習演算法,並行或依次運行這些演算法,最後評估演算法的表現,選出最好的那個。

最後,為現實問題設計恰當的解決方案不僅僅是一個應用數學問題,還需要考慮商業需求、規章制度、利益相關者的關切和相當多的專業知識。在解決一個機器問題時,結合和平衡這幾個方面至關重要。能做到這一點的人才能創造最大的價值。


NTK

無窮寬神經網路


傳統的統計機器學習模型都具有可解釋性,其中單決策樹的可解釋性好,生成的樹其實就是規則的集合。集成樹模型雖然準確率高,但是犧牲了可解釋性。另外也有基於數據挖掘pattern mining技術的rule based classifier,可以試試看,一點淺見,希望有幫助


小哥,你是不是寫錯了,傳統機器學習解釋性不是都還不錯嗎,你想說的是深度學習的黑箱?


現在已經的都是黑箱機制吧,白箱機制我覺得可能得有新的理論或者新的體系下才能實現的。


很多呀,傳統的機器學習模型,比如lr,svm,樹模型等,所謂黑箱主要是反向傳播你看不到更新了什麼,特徵圖提取了什麼信息。


這題問的真是??懂得都懂


看你說decision tree可以預測svm不行,我覺得你的第一個問題是對geometry確少直覺。想想一下一個1D/2D/3D 的SVM,你通過support vector明確能看到用來分割區域的那幾個點/線/面,以及他們的margin, 那麼顯然符合你想要知道的「有具體規則」這一特性。那麼同樣SVM在高維上也是一樣有具體規則的,只不過人腦很難想像。

其次我覺得你更大的問題是不明白很多數學定義具體代表了什麼。說實話除了神經網路,幾乎所有傳統機器學習模型都是有嚴格的數學證明的。只要有數學證明那必然是有明確規則的。但你必須首先自己定義那些parameter代表的意義究竟是什麼。更進一步來說,你要定義你的metric是什麼。

另外你的表述有一些問題,比如「我做的是監督分類,所以是知道規則得到結果的」這句話。我猜你其實想說的是label(標籤)。

再比如,模型和演算法並不是一個東西,通常我們所說的演算法,是指如何更快地優化找到合適的模型,而我們說模型,指的是這個模型本身是不是能夠表示我們想要的。打個比方,現在A小孩手上有一個方塊一個圓兩種圖案,B小孩手上除了圖案還有紅色和綠色兩種顏色,然後我讓他們用手頭的東西來表示一個蘋果。如果A找得比B快,那說明A演算法好,但如果給A和B無限的時間,B必然找到更貼合蘋果的表示,那說明B的模型好。

最後我建議你去看Mehryar Mohri的fundation of machine learning...先不需要看懂具體的,但至少要對機器學習的脈絡有一個大概的了解。


推薦閱讀:
相关文章