關於機器學習中規則與統計方法的思考

      最近工做了一段時間,今天跟你們討論一下關於「規則與模型」的問題。
      你們確定都知道,機器學習方法主要分兩類,一類是基於統計的方法,好比貝葉斯、KNN等,都是對數據的某種特徵進行歸類計算獲得數據劃分的依據的;另外一類是基於規則的方法,好比,語義規則,語法規則或者業務規則等等,這些規則主要是根據數據自己的特徵人爲地對分類細節進行限定,沒有什麼過高深的理論,可是實用性很強。固然,我以爲還有第三種方法,就是基於統計與基於規則相結合的方法,好比關聯規則,apriori方法,或者決策樹方法。這些方法在分類或者求變量關係的時候本質上是基於規則分類,可是在訓練過程當中倒是使用統計的方法的。好比apriori方法,該方法自己就是求規則的一種方法,但該方法訓練的時候是須要對各類關聯特徵進行統計的。訓練完畢後尋找強關聯性的特徵能夠進行分類,由於我以爲找出哪些是強關聯哪些不是強關聯就是一個分類的過程。再好比決策樹,一樣的道理,決策樹自己獲得的那棵樹就是一棵規則樹,可是在尋找樹的分裂屬性上,不管是ID3仍是C4.5,都是基於統計方法的。我認爲這種經過訓練出的規則進行統計分類的方法就是統計與規則相結合的方法。那麼這三類方法哪些是比較有效的呢,或者說哪些是比較適合大部分數據的呢?
      個人我的理解是,沒有。咱們在學校裏寫paper,最主要的任務有三:第一,提升算法性能;第二,提升算法對數據的匹配度;第三,提升數據對算法的匹配度。舉個例子來講,我用SVM對新浪微博文本作情感分析,要麼改進SVM核心算法,提升分類精度;要麼對SVM選取特徵的方法或空間構造的方法進行改進,提升分類精度;要麼就是直接改進數據特徵提取方式,提升數據對分類器的匹配度。可是,不論是哪種方法,都要知足最小泛化閾值。也就是說,對訓練數據以外的測試數據的分類準確度必定要知足最低要求。咱們把訓練數據和測試數據的概念擴大一下,若是咱們把要訓練的某類數據做爲訓練數據,把該類別以外的數據做爲測試數據,狀況就徹底不同了。好比,我把微博數據做爲訓練數據,把短信類短文本數據做爲測試數據,雖然一樣都屬於短文本,但泛化值出奇的低。這是由於咱們不管採用哪種方法,數據都必須是封閉的,或者說是相對封閉的。咱們用分類器或者基於統計的方法,其實主要就是爲了提升泛化能力,由於統計一個詞的個數和一個數的個數的意義是同樣的。可是如今看來,好像基於統計的方法的泛化能力仍是有限。
致使這種現象的緣由是什麼呢?我在剛開始學機器學習的時候就遇到一個很大的矛盾,既然SVM是最好的基於統計的分類方法,而基於統計的方法的目的就是爲了提升泛化能力,爲何在使用SVM的時候仍是須要去適應數據呢?在我理解,分類方法對數據適應的越多,規則成分就越多。我在最近作「技能詞識別」的時候使用了各類規則,嘗試了各類方法,而後我返現我犯了兩個個錯誤,第一SVM是一種思想,不是一種具體的方法。思想自己沒法使用,只有把它應用到實踐纔有價值;第二就是數據挖掘,或者機器學習的核心的重點永遠是數據和思想的問題,沒有方法的問題。由於咱們選擇的方法必定是要匹配數據的,目前來講這是根本;方法也是必需要符合分類某數據的核心思想的。由此我想出,不管是基於規則的方法仍是基於統計的方法都是基礎理論,單純的使用基礎理論是沒有什麼意義的,或者說只能知足不多一部分數據的。只有結合實際狀況,結合多種基礎理論,才能把機器學習運用到實際當中,由於咱們的核心是數據,是實際狀況。
      因此說,若是們分類的時候發現基於統計的方法遠遠不如基於規則的方法,或者反過來,並不代表哪種方法好,而是說明某一種方法更適合目前要分析的數據。對徹底不一樣數據類型的數據進行泛化我以爲目前來講不太現實,由於對於真實的人來講讓一我的根本不懂英語的中國人去理解英文那是不可能的。固然,之後會發展到什麼程度我是難以預料的,個人眼光目前也比較短淺看不到很深遠的東西。但我以爲,若是某一天這種泛化能力實現了,人類將走向滅絕。
      對了,最後一點,我以爲將「基於統計的學習方法」和「基於規則的學習方法」改成「基於統計的學習思想」和「基於規則的學習思想」更好一些。
      可能會有邏輯不對的地方,歡迎批評指正!
相關文章
相關標籤/搜索