日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于机器学习你必须要了解的事情

發布時間:2023/12/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于机器学习你必须要了解的事情 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:Pedro?Domingos,?A?Few?Useful?Things?to?Know?about?Machine?Learning

?

?1.?泛化效果是機器學習的唯一目標

訓練集上的效果無關緊要,泛化效果是機器學習的唯一目標。稍極端的例子,如果訓練集準確率為0%,但隨機取的新數據集上準確率為60%。也好過訓練集80%,新數據40%的結果。這點不僅對機器學習重要,即使是人工規則,也要審視選定的規則有沒有泛化意義,僅僅讓標準集效果更好或更差一樣沒有意義。

?

2.?機器學習算法的三維

算法除參數可設外,還有其它維度可改。任何一個機器學習算法都由三維組成:模型假設、誤差評估方法(cost?function)、求解方法。除第一維不可變動外(那就換模型了),后兩維都是可變的。

1)模型假設(Representation)。KNN,SVM中假設特征距離近的instance是一類的;NaiveBayse假設特征條件獨立;Logistic?Regression假設feature對結果貢獻都是線性的;等等。假設如果不對就不該選此模型,或選這些feature。

2)誤差評估方法(cost?function,Evaluation),即使一個模型也可以用多種cost?function,決策樹用熵(信息增益),或用均方差,其實也可以用準確率和錯誤率。哪種效果好呢?也許我們并沒有考慮過,只知道C4.5是用信息增益就以為它就是唯一答案。不同的應用場景可能有不同答案。

3)求解方法(Optimization)。最優化的問題都有多種求解方法:貪心、動態規劃、梯度下降、Quadratic計算。一個模型可以有多個求解方法,例如C4.5用的是貪心,貪心一定是最好的方法嗎?也許出于性能考慮我們最終仍傾向于它,但每到此時不妨問問。

?

3.?No?free?lunch

模型是一個杠桿,人的經驗+data產出任一前者無法達到的能量。如果一個模型不引入任何假設就退化為記憶+統計,全賴data。但哪怕是最簡單的bool型feature,有N個feature就有2^N個要學的feature種類,對應至少這么多的data,20個feature就要1024*1024個data,100個feature呢?實際中uniq的data根本沒有那么多。對于那些沒被data覆蓋的坑,任何模型算法的效果都不會比拋硬幣隨機猜的效果更好(無論在訓練集上擬合好壞,其泛化效果都和拋硬幣一樣)。這就是"no?free?lunch"。


即使一個模型隱含了某個假設,若輸入feature無法和這些假設契合,對模型來說同樣什么都學不到。因此我們必須加入人的經驗,這就體現在我們利用人類知識選取哪些已知有用的feature(而不是羅列所有原始feature讓模型自己挑、自己組合),同時我們知道這些feature能夠直接地滿足我們所選模型的假設。或者反過來,我們選擇模型的一個標準是,我們是否知道該選哪些feature來很好地支持這個模型假設。?

?

4.?過擬合的幫兇

既然泛化能力為唯一目標,過擬合就是最大的罪人。當training和testing的個體(尤指features)很不一樣,或者使用了一些非常靈活的模型(決策樹),或者即便是不太靈活的線性模型但feature個數很大(導致train--test的features的差異更大,泛化能力變弱)時,過擬合非常容易發生,training?set?和?testing?set?必須嚴格隔開。

1)不具代表性的訓練集

不過擬合才怪。訓練集要盡量隨機抽取。

2)模型靈活。

在數據有限的前提下,學習能力強的模型不一定比能力差的模型結果好。決策樹是最強學習能力的模型(它能窮舉所有feature取值組合),樸素貝葉斯則受諸多假設限制。所以只要想學到底,前者訓練可以做到100%準確率0?bais,而后者則只能做到一定準確率,bais始終存在;但在數據不充分的基礎上,強學習模型學得很充分,只能是依靠了很多“隨機巧合”的經驗,沒被數據覆蓋的坑的數量就是過擬合的程度。所以這個時候決策樹反而不如feature符合貝葉斯假設的學習效果好,因為假設的正確性提供了額外的杠桿信息。

3)feature過多

Curse?Of?Dimensionality.?泛化能力會隨著feature的增加而降低(確切的說是降低的可能性在增大)。增加feature能帶來好處,但同時也會帶來壞處。增加無關或過多feature可能讓模型變得更差。因為數據集不足以cover所有feature,罕見的feature導致過擬合更容易產生,過多常見的feature會淹沒真正有用的feature。而人類的直覺也只能理解到3維空間,高維空間的直覺往往是錯誤的。

?

5.?cross-validation的正確用法

cross-validation不是用來train?N個模型然后取平均做最終模型的。(大部分模型也沒法取平均融合)cross-validation是用來調整模型的外部參數的。即CV是一種利用Training?Set?tune外部參數的方法。10-fold?cross-validation實際上使用同一組外部參數train了10個模型實例,得到10個泛化準確率(分別在1/10的切片上test的準確率,而不是9/10上的training準確率),反應了當前參數setting的效果。當然也可以不用cross-validation,直接用一個獨立的test?set來tune參數,但是相對較小的test?set更容易導致tuning的過擬合。

?

原創博文,轉發請注明出處。

蘇冉旭的博客,http://hi.baidu.com/hehehehello/item/99de18188408a8f8dceecaad


下面轉載一篇讀后總結

http://www.cnblogs.com/SnakeHunt2012/archive/2013/02/18/2916232.html


  • Learning = Representation + Evaluation + Optimization
學習 = 表示 + 評價 + 優化,這沒什么可說的了。
  • 表示方法確定了你能表示的空間是哪些,取決于你的問題是什么。
  • 而評價函數為你的優化過程提供方向,其實就是一種衡量,衡量你現在的狀況:好,有多好;壞,有多壞,而且通常都用你的失真程度來衡量(J(theta) = 預測值 - 實際值)。
  • 優化算法進行優化,目前我還只知道梯度下降還有求導這兩種手段,當然優化方法的好壞直接決定了你訓練模型的效率,如果你的損失函數J(theta)不是凸的,那么他也將決定你能不能取到最值或者取哪個極值,例如梯度下降就取不到最值,只能取極值。
作者最后還列了張表格,舉了常見的表示方法,評價方法,優化方法。
  • It is Generalization that Counts
泛 化才是目標,作者這么說其實就是想地提醒我們別用訓練樣例做測試,除非特殊情況。因為我們要做的是泛化,也就是想從訓練樣例中學習到普遍規律,然后使模型 可以用于所有非測試樣例。可你要是用訓練樣例做測試那還能叫測試了嗎?這就要求我們在做訓練的時候別一下子把語料都用來訓練,一定要保留一部分語料用來測 試,而且這部分用來測試的語料不要以任何方式參與到訓練過程當中,嚴格隔離。如果你的數據實在有困難,那你可以交叉測試,就是說把你的數據分成10份并且 標號,首先用第一份留做測試其余用來訓練,然后用第二份留做測試用其余用來訓練,然后第三份留著做測試其余用來訓練,以此類推,等十次測試結束之后在將十 次的測試結果取平均作為最終的測試結果。除此之外他還說,我們訓練模型無非就是自動或半自動地調節好那幾個參數,就好象調節收音機上那幾個旋鈕一樣,想要 聽到清楚的節目就需要盡量調到超平面的那個最優點,我覺得這話說得很有道理。
  • Data Alone is Not Enough
作 者說光有數據還不足已。因為機器學習類似于杠桿效應,輸入少量的知識,然后獲得大量的知識,如果你杠桿選得好,也就是支點越靠前,就可以用更少的知識,翹 得更多的知識。所以,針對不同的領域,不同種類的知識,就需要選取合適的模型,原則是易于表示這個領域的知識。比如你的知識是依賴于概率的,那么圖模型也 許是最好的選擇。比如你的知識是基于前提的,也就是說每個分類都是有一個前提的,那么你就可以用"if...then..."這種方式。
  • Overfitting Has Many Faces
如果你對你數據量不足,就容易出現過擬合,過擬合往往是因為你的數據量太少或者說你的模型太復雜了。
????? 跟光電效應一個道理,模型建立需要基本的溢出功。我是這樣理解過擬合的:我們把訓練數據看作是能量。那對于一個10次多項式的模型來說,在訓練的過程中可 以看做其中有10個數據的能量是用來搭建模型的,然后剩余的數據能量是用來調整這個模型使之優良,也就是使之對訓練樣例全體的誤差合最小。然而如果你所擁 有的能量小于十個獨立點的能量,也就是沒有達到建立模型的那個臨界。那么你訓練出來的根本就不是一個模型,用這個東西進行預測得出的結果也許就效果是隨機 的。
如果你的數據針對訓練樣例100%準確,而對于測試樣例只有50%準確,那么你的學習器很有可能過擬合了。正常情況至少應該是對于訓練樣例和測試樣例準確率都75%才對。如果把過擬合的結果畫出來,看上去就好像分界面鼓起了好多氣泡一樣。
????? 總的來說模型太復雜,容易過擬合,即使可以達到過擬合臨界,那么數據不足也會使得偏執比較高,但是如果數據足夠的話,足夠把偏執降下來的話,大模型精度是 很高的,他的方差小。如果你數據不足,你就不敢使用復雜模型,不得不使用簡單模型,而簡單的模型確實不容易過擬合,但他的準確度(精度)就是硬傷,偏執再 底,方差是硬傷。
????? 解決過擬合的辦法很多,其中最長用的就是在J函數后面再加一項專門用來控制參數的“正則項”。
我的理解就是避免你的某個參數或某些參數太大,因為過擬合常常最后的形狀是彎折特別多,如果遏制住參數的大小就可以避免他拐太多彎折,把你的多維曲面鋪平,就好象把氣泡擠了出去一樣。把過擬合的程度壓制在一個我們可以接受的范圍內。
????? 但我也擔心一個問題,就是添加正則項也就降低了模型本身的靈活性,所以我自己的建議是如果你很確定不會發生過擬合,或者你對你的數據非常有信心,那么去掉正則項的話你的模型會擬合的更好,當然這只是個建議。
  • Intuition Fails in High Dimensions
理論上說,特征是越多越好的,但是你沒增加一個特征,其表示的空間可是以指數方式遞增的,這時候你所擁有的數據量就會以指數速度變得越來越不夠用。因為你所掌握的數據是恒定的,而在需求以指數遞增的同時,你說掌握的那點數據,在與需求的比值以指數方式變小。
????? 當然,計算也是個問題。不過最嚴重的還是高維度下的分布問題,在高維度下,物體的的多元高斯分布的質心離物體的均值通常很遠??磥砦疫€需要補一補代數方面的知識。所以即便你的數據足夠,結果也不一定對。
  • More Data Beats a Cleverer Algorithm
算法和數據哪個更重要,研究人員當然會說算法更重要,但事實上,在實際問題面前,通常找數據比選算法更快解決問題。更令你不可接受的是,一個很差的算法如果有很多的數據,優勢要比高級的算法好。
????? 時代不同了,80年代的時候缺的是數據,現在缺的是時間,如今我們更在乎算法的速度如何,這本來對復雜模型來講是好事,因為數據足夠就意味著可以選用高級的模型,這是原則上講,但事實上你用低級模型效果卻比高級模型要好。
????? 我自己的理解很淺顯,就是高級模型使用了更多的數據來用于“溢出功”。這就是個追擊問題,跑得快的后跑,跑得慢的先跑,即使你擁有的時間足夠讓跑得快的開始跑,但也不一定能保證結束的時候跑得快的比跑得慢的更遠。
????? 而文章中給出的解釋更有道理一些,他給出了一副圖,他說復雜的模型和簡單的模型,本質上都在做相同的事,就是把類似的數據分為一類,只不過他們對類似的定 義不同,但對于不是很苛刻的測試數據,無論哪種定義都能表現得正常。因為如果測試數據并不苛刻的情況下,分界面本身的形狀并不重要,重要的是他能不能位于 恰當的地方。而如果想讓高級模型體現出高級性,需要的不是大量的數據而是苛刻的數據,需要的是那些貼近分界的數據,這樣才能塑造好分界本身的形狀,使模型 本身的形狀成為優勢。我記得唐都鈺師兄有一次說一個比賽,他們給的標注數據特別苛刻,人都不能標注成那個樣子。為什么數據給的那么苛刻,不就是為了考你用 什么模型么。如果數據不苛刻,什么樣的模型都很不錯。
????? 總的來說,如果你的數據僅僅是多,那么明智的選擇還是低級模型。如果你的數據非常豐富,那么選擇高級模型還是有一定的道理。文章的建議是先用小模型,然后慢慢嘗試大的模型。
  • Learn Many Models, Not Just One
以前,人們普遍認為這些學習算法,還有模型都是可以比較的,相信總有一個最好的。所以當時就進行了許多嘗試,想找到最好的那個。但是后來很快發現,不同應用都有不同的最合適的模型。
????? 所以再后來,人們就開是選擇自己喜歡的算法,然后標榜自己的那個算法是最好的。這有點像今天你用Vim還是Emacs一樣。
????? 但再再后來,人們開始發現,與其選更好的那個,不如把不同的學習器組合起來,因為這樣的效果會比獨立的幾個學習器效果更好。
????? 他們發現學習器之間是可以進行集成的,集成的方法最簡單的有裝帶法[fn:5]其他的還有堆疊法(stacking)等等。話說在一次比賽[fn:6] 中,最終獲勝的兩個團隊的學習器都是組合出來的,他們都合并了100多個學習器,而且如果他們兩個再進行合并的話,效果會更好。
  • Simplicity Dose Not Imply Accuracy
本 來,按照奧坎姆剃刀原理,兩個分類器如果訓練誤差相同的話,那么往往簡單的那個分類器測試誤差更小,而且還有好多文獻證明這個說法。但事實上這種說法誤解 了奧坎姆剃刀原理,奧坎姆剃刀原理說簡單好,只是處于“道德和倫理”。如果你想看反例,剛才那個學習器集成就是個反例。
  • Representable Dose Not Imply Learnable
一個函數可以進行表示,并不意味著他就可以進行學習。比如標準決策樹就不能學習出比樣例多的節點。即使最簡單的函數也許要無數的項來表示它。而且我們的數據不是無窮的,我們的時間不是無窮的,我們的內存也不是無窮的,大多數可表示的函數都不能進行學習。
????? 所以對于一個函數,你應該考慮的不只是他能不能表示出來,還有他能不能進行學習。多嘗試一些學習器總是好的。
  • Correlation Does Not Imply Causation
相關性不是因果關系,確實如此,我們的機器學習學到的往往是相關性,而非因果關系。但是有時候我們自己卻很難分辨哪些現象是因果,哪些現象是相關。我們需要在相關中分析因果。
????? 也許相關和因果兩者并沒有本質的區別,因為在物理世界對他們都沒有良好的定義,這是哲學的領域了。但我們要做的是預測什么樣的行為會導致什么樣的后果,這就是我們所在乎的“因果”。



創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的关于机器学习你必须要了解的事情的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。