機器學習,也叫數據挖掘、模式識別;其定義很多。但大白話的說,機器學習要做的就是,現在有一些數據(比如你人人網好友和他們的發言),我們要對數據進行處理,希望從數據中得到我們想要的信息(比如這些好友哪些和你投緣)。從上面的例子,我們可以看出機器學習其實是對人類智能的模仿,也是實現人類和更高智能的必經之路。
那他他大體上有哪些內容呢?
第一部分,機器學習的底層理論:
機器學習的底層理論有一些,比如推理與規劃、近似可計算理論、正則化、提升理論、核方法、當然還有大名鼎鼎的統計機器學習理論等等。這部分內容不是初學者學的。
一 是這些理論其實是在實踐中總結的,沒有基礎的機器學習方法是不能明白理論的;
二 是這些理論需要的數學很高,您那高等數學啥的就別提了,這些理論至少也得有泛函分析的一般知識、優化理論的一般知識、矩陣理論的一般知識、高等概率論、隨機分析等等的數學基礎。
三 是這些理論對于大部分只是想用一下機器學習方法的人,我覺得毫無意義;您要只是想用一下機器學習,這些理論對您估計看過全當娛樂。
第二部分,機器學習方法:
這部分才是初學者應該學的,也是必須學的。(按照數據形式,給了大體情況)他按照對數據處理可以分成如下幾個部分:
- 監督學習:也就是你的數據都已經處理的很好了,哪些數據是哪種情況都分清楚了。
- 非監督學習:你的數據太原始了,全是一堆數,都不知道哪個是哪個情況。
- 半監督學習:因為監督學習效果好,但是數據要求太高;非監督學習效果不咋地呀,但對數據要求低;那么我們折中一下,先標注一部分數據,然后用監督學習對其他未標注數據進行標注,如果算法產生的準確率在某個參數以下,則將這個數據給人來標準。
- 遷移學習:比如我們現在有種方法,用在了圖書之間的相似分析上,那么這個方法可不可以用在人人網上用戶的相關分析上呢?這就是遷移學習。
- 強化學習:根據環境反饋進行學習。
- “各種亂入學習”:其實,還有很多奇葩的學習方法不是以上五種比較常見的學習方法,他們大體上都是各種奇葩的想法,加上各種有愛的數學理論推導而成。因為還不是十分的成熟,所以初學者也不必太糾結這部分。
我們一般處理的數據,都是啥樣的呢?
我們處理的數據,一般來說是表狀的,說白了,就是——每一條數據就是一個向量(前幾天看到有個孩子說向量是有方向的,我覺得特無語,= =!,現在就連物理學里面的向量你都想象不出他的方向了,雖然向量可以想象成幾何形體,這是分析的基礎,但是不要拘泥于幾何) 。既然每一條數據是一個向量,那么很顯然所有數據構成了一個向量空間。這個向量空間一定要有一定的抽象想象能力,不光是歐式空間,還可能是拓撲空間。。。馬上你就會知道為啥了。
那知道了如上內容。我們看看機器學習最基礎最核心的有哪些方法,當然如果你看的書里面超出這個,請不要驚訝,我只是列舉了非常非常常用而常見的方法。
最常見的機器學習方法 = 基礎方法 * 拓展方法 * 應用領域
基礎方法
- 關聯分析:現在數據是一條條的銷售記錄,我們要找出其中哪些商品經常被一起買,這個到時候會有兩個主要方法:Apriori方法,主要就是剪枝,和他相識的有AIS和STEM,其中STEM是針對SQL語言使用的關聯分析算法;FP-growth,主要是建立一個樹,通過這個結構加速算法;還有垂直關聯挖掘、數組方法。
- 決策樹:有一個叫讀心術的應用,他不斷讓你提供你心中所想的人的信息,進行不斷的推演最終找到你所想的人。這個應用看似神奇,其實說白了用決策樹就可以大概做一個。決策樹就是一顆樹,樹的每個邊上都有條件,根節點是起始節點,葉節點是結果節點;從根節點,不斷的依據邊上的信息移動到相應的樹節點上,直到葉節點,給出結果。這就是決策樹。決策樹是一大類算法,主要有ID3、C4.5等等。
- 感知器:還記得我剛才說的向量空間么?每一個向量都可以表示為空間中的一個點,那如果我們可以找到一條直線把所有點分為兩部分,一部分都是A類,另一部分都是B類。那么我們以后還有一個點,我們只要看他在直線的哪邊就可以直接判定他的類別。感知器是一大類算法,算法太多了,不一一枚舉。
- 支持向量機:感知器的升級版。如果學過泛函的同學,都知道完備的內積空間就是Hilbert空間,核方法可以在Hilbert空間上進行。支持向量機就是使用了間隔最大原則和核方法來對感知器進行改進,從而得到相對好的效果。支持向量機,是一大類算法。
- 反饋神經網絡:感知器的升級版。感知器是一個線性函數,如果多個線性函數互相嵌套,而且使用非線性動力提供復雜的向量空間曲面描述,我們會得到比感知器更好的效果。= =!提問支持向量機和反饋神經網絡雜合是啥?
- 神經網絡:其實神經網絡包括反饋神經網絡。之所以把反饋神經網絡單獨提出來,是因為用的太多,而且他是繼承感知器的。但是神經網絡本身可是一個非常非常非常非常豐富的一大大大類算法,而且錯綜復雜。我嘗試分個類吧,主要有層次網絡、時延神經網絡、耦合神經網絡、自組織神經網絡、遞歸神經網絡(和時延神經網絡有點像,但是在連續和離散量上有些許的不同,連續可用模擬電路實現)、徑向基函數網絡(這個其實是正則化的網絡,一般用的RBF網絡就是反饋神經網絡T-正則化)、集成神經網絡、模糊神經網絡、玻爾茲曼機(使用退火算法的一種網絡)、概率神經網絡等等等等等等。當然還有神經場理論,需要微分幾何的知識,屬于機器學習的基礎理論,初學者可以無視。當然還有人試圖設計神經網絡計算機,初學者也可以無視。當然神經網絡可是很神奇的,他連PCA、ICA、LDA(線性判別分析)、LDA(隱藏地理特來分布)啥的都可以用神經網絡學習。
- 統計判決方法:是依據統計理論設計的統計判決理論。其實,統計判決是很實用的理論,而且其中包含的很多方法都在各個機器學習領域應用,比如最小化最大損失、貫序判決、參數估計等等。樸素貝葉斯就是其中的一個。這也是一大類算法。
- 貝葉斯網絡:推理和規劃理論支持的一個理論。
- 序列分析方法:就是分析一個序列的學習。語言就是一個文字的序列,所以諸如隱馬爾科夫方法啥的。
- 邏輯回歸:如果你學習過生態學,你對邏輯方程和邏輯回歸就毫不陌生,其實這個和感知器是一個尿性的東西。他和隱馬爾科夫模型的學習可以用到一個叫最大熵原則。其實最大熵原則是可以在信息論下被用變分法中的柯西-拉格朗日方程推出來的,這也是Duda的《模式分類》后的一道習題。
- 聚類方法:我們有一堆數據,我們想知道他們自己之間的哪些是一類。也是一大類方法,常用的有:k-均值、層次聚類、密度分布聚類、模型聚類、圖聚類算法(包括蟻群聚類)。
- 數據處理方法:比如主成分分析(PCA)、線性判決LDA、獨立分析ICA等等。
- 其他:抱歉,我雖然寫了一些,但覺得基礎中的基礎,貌似好像還不止這些,歸納起來貌似有些困難。不過其實主要的應該就是如上了吧。歡迎補充。
拓展方法
- 在線化:因為我們知道,現在的數據都是不斷的來,不斷的更新。但由于數據巨大,我們不能每更新一次,我們就重新計算一次,所以讓算法對增量有辦法的方法叫在線化。基礎方法都可以查到他們的在線化方法。
- 分布式和并行化:這個還是針對大數據,提供以上所有基礎方法的分布式和并行化方法。
- 修正過擬合方法:由于以上基礎方法中大部分都存在過擬合問題,說白了就是對數據中的噪聲進行了擬合,使得學習效果變差,本來應該得到的信息是y=x+1 , 而現在得到的信息是y=(x100+1)/(x99+1)+1。。顯然后一種得到的太過于精密,反而效果不好了。以上大部分基礎方法都可以用修正過擬合的方法來修正。其中正則化就是一個比較好的方法。
- 各種數學亂入的方法:沒錯,你沒看錯,各種數學亂入呀。比如模糊數學亂入,產生一堆新方法:模糊SVM、模糊神經網絡啥的。再比如比較綜合的數學亂入,商空間和粒運算啥的。再比如李群:李群機器學習。再比如微分幾何亂入,有什么流形學習。這些我覺得,看過全當娛樂吧。
應用領域
- 應用到圖,搖身一變為圖挖掘。
- 應用到數據庫和數據倉庫中,搖身一變為數據挖掘。
- 應用到社交網絡中,搖身一變為網絡科學。
- 應用到自然語言處理中,搖身一變為統計自然語言處理(多有錯誤,全當娛樂)。
- 應該到你的領域。。。。搖身一變。。。。 。。 其實,我覺得,你要是真的能對機器學習有個大體脈絡的了解,書單也無所謂。你照著上面的東西,百度出一些博客看看,可能更適合你。或者你去找一些論文,也行。 其實,我覺得,你在亞馬遜檢索機器學習,第一頁的書我應該是全看了,第二頁的書大部分都看了,第三頁亦然。。。。。你也可以這么做。。。
如果你非要推薦的話:
- Duda的《模式分類》。其實我個人更喜歡《現代模式識別》這本書,但是由于國人的崇洋媚外情緒實在太嚴重,確實國內很多書抄襲現象嚴重、基本上出書目的就是為了出書,根本不是給人看到。但也不能否認國內也很多好書!
- 《現代模式識別》(第二版),真心是好書,在我個人看法,完勝Duda那本無疑。
- Mitchell的《機器學習》。
- 第一本和第二本,數學都需要很多,買書或者借書,請務必看清前面序言中的關于數學知識部分的說明,否則您就只有一個勁的補數學了。第三本其實數學需要的不多,但內容太少,而且涉及一些淺顯的機器學習理論,也比較麻煩。這倒不如《機器學習引論》(An Introduce To Machine Learning),這本可以說用了最少的數學知識,講了一些內容,也很薄,很好看。 其實,夠了。為啥呢?因為問我看哪方面書的人挺多的(因為我覺得我成天就看書、看論文啥的)。 但他們反復的問,貌似你推薦他們幾本,他們看了看或者沒看,就又要你推薦。。。
說句心里話,學習哪一門新科目,都不是一帆風順的。你覺得你之前完全沒有基礎,200多頁的機器學習書,你可以用一個下午秒殺,那我覺得你。。。太有愛了。
所以說白了,書不是重要的,重要的是你的決心,你到底要不要學這門學科!你要是抱著半吊子的心態,那果斷你可以不用看了,因為半吊子的決心是不會學明白任何一門學科!你要是想學,就咬緊牙,堅持看,反復看,反復查。
轉自:http://blog.163.com/zhoulili1987619@126/blog/static/353082012015613104243192/