1. 程式人生 > >機器學習各演算法思想(極簡版)

機器學習各演算法思想(極簡版)

讀到的一篇不錯的文章,拿來和大家分享一下。
轉自–頭條公眾號–極數蝸牛

(1)線性迴歸

迴歸最早是由高爾頓研究子女身高與父母身高遺傳關係提出的,發現子女平均身高總是向中心迴歸而得名。其實“一分辛苦一分才”中就蘊含了線性迴歸演算法思想,比較簡單表現出才能與辛苦是正比關係。另外,經常聽說“成功=3分才能+6分機會+1分貴人幫”,這是標準的線性迴歸方程,其中成功是因變數;才能、機會和貴人是自變數;而自變數前邊的3、6和1是權重

(2)K-聚類

中國有句古話是“物以類聚,人以群分”,其實已經蘊含了聚類演算法的基本思想。比如說人,可以根據年齡分70後、80後、90後等;根據區域分北京、上海、廣東等;根據性別分男和女。人可以根據不同特徵屬性進行劃分,而在聚類演算法中是根據不同方式來計算兩個事物的距離

,如歐氏距離、皮爾森相似度等。

假如根據年齡可以每10年份劃分為70後、80後、90後等,也可以根據成長週期分童年、少年、青年、中年和老年。因此特徵刻度大小決定了群體的範圍,這反映在聚類演算法中就是通過不同方法處理事物間距離,來確定事物屬於哪個群體,如根據平均值、最大值等

其中K值是表示劃分群體的大小,如以區域為例,K=34,則劃分為全國省份;K=7,則劃分為東北,中原,華東,華北,華南,西北和西部等;K=2,則劃分為南方和北方。

(3)K-鄰近

中國還有句古話是“近朱者赤近墨者黑”,該句也蘊含了K-鄰近演算法的思想。比如判斷一個人是否是有錢人,可以根據其最近聯絡的人群中,有錢人的比例來推測。這就需要解決兩個問題,一是如何確定最近聯絡人,二是如何計算有錢人比例。這反映在K-鄰近演算法中就是首先確定不同事物樣本的距離,然後確定K值的大小,根據K值內的有錢人佔比,來預測未知使用者的狀態。

K值的大小將會直接決定預測結果,假如你有5個有錢人朋友,當K=8時,判定你為有錢人;但當K=12時,則判定你不是有錢人。因此在該演算法中K的選擇至關重要

(4)樸素貝葉斯

“吃一虧長一智”反映了樸素貝葉斯演算法思維,就是通過後驗經驗法,來對未知的預測。假如你經常買水果,發現10個青蘋果裡邊8個都是酸的,而10個紅蘋果裡有7個都是甜的,這種經驗告訴以後再挑選蘋果時,紅蘋果7/10是甜的,青蘋果2/10是甜的,如果你喜歡甜的,那就選紅蘋果吧。

(5)決策樹

在婚戀相親時經常被問到“你有車嗎?你有房嗎?你有錢嗎?”,這和決策樹的思維過程極其相似。決策樹是由樹枝,樹葉,節點組成的樹型結構,其中每個節點就是一個問題或特徵(如你有車嗎?),每個樹枝是問題的走向(如有),每個節點就是答案(相親成功)。


相親決策樹

(6)主成分分析

經常在網上看到兩個字“乾貨”。那怎麼定義“乾貨”,我覺得應該包括兩方面:一是資訊量大,二是沒有廢話。其實如何將“水貨”製作成乾貨的過程,與主成分分析有異曲同工之妙。“乾貨”能夠使原文到達“短小精悍”,而主成分分析能夠實現資料集降維,即用較少維度表示原有樣本含有的資訊,兩則都是通過其它語言或轉變維度來表達原有資訊。

“水貨”變成“乾貨”就是將意思相近或相似的句子進行濃縮或提煉,也就是將“水貨”裡的的水分擰乾;而主成分分析是根據樣本集的協方差矩陣,通過線性變換將原資料對映到新的座標系統,並將差異性較大特徵值的保留,以到達降維目的。

(7)隨機森林

“三個臭皮匠賽過諸葛亮”與隨機森林演算法核心類似。隨機森林是是由一棵棵的決策樹構成的,每決策樹的形成都是隨機的,它可以避免單一決策樹過擬合和偏向的毛病。

再以相親為例,對相親物件要求,你可能看重“有房”“有車”“有錢”;你媽看重“有房”“孝順”;你爸看重“事業”“顧家”“有車”等。其實你們每個人都是一個決策樹,可根據自己判斷標準決策出相親對手是否“滿意”,最後集合每個人的決策結果,來判斷最後是否相親成功。一個人相親是決策樹,全家人相親就是隨機森林。

相親隨機森林

(8)最大熵模型

“不要把雞蛋放在一個籃子裡”是最大熵模型比較樸素的說法,也反映了該演算法的本質,就是對不確定的或未知的,儘量保持隨機和均勻分佈,能夠將風險降到最低。其實在生活中大家應該都不自覺的應用了該模型。比如,去年P2P較火的時候,很多人被其高收益吸引,但由於P2P魚龍混雜,又擔心跑路;因此採取比較保險的舉措,就是多投幾家公司。

其實,熵是對無序狀態的描述,而最大熵就是表示樣本是均勻分佈,可能性概率相同。

(9)AdaBoost

在學生時代,考試有個技巧就是構建自己的“錯題本”,每次考試前都加強對“錯題本”學習,通過不斷強化“錯題本”上題目,最終可能獲得較高分數。其實這個學習過程與AdaBoost是演算法邏輯是相同的。

假設每次考試作為一次模型訓練,每道題目作為一個樣本,分數作為預測準確率,而“錯題本”就是預測錯誤的樣本;當再次進行預測訓練考試的時候,AdaBoost演算法策略就是會對上次預測“錯誤的樣本”加大權重,並以此不斷迭代,通過多次訓練,最後能夠組合成一個較強的分類器(即考試高分)。

(10)關聯規則

是否耳熟“我看你天賦異稟、骨骼驚奇,想來是百年難得一見的練武奇才”“貧道夜觀天象,發現北斗星南移,天狼星耀青光,帝王星顯現”等臺詞。其實這裡邊就蘊含了關聯規則,通過經驗積累發現骨骼與練武,北斗星與帝王等之間關聯。

“用生辰八字來算命”雖然被成為偽科學,但偶爾能算準,這是這麼回事?用關聯規則演算法就容易解釋,首先理解兩個概念支援度和置信度。

支援度是指A(某生辰八字)和B(某命運)同時發生的佔比,如某生辰對應某命運的人數佔總人數比值;置信度是指A發生後B發生的概率,如某生辰中當官的人數/某生辰總人數。如果置信度是100%,如果A發生,那麼B一定發生。算命先生就將生辰和命運的置信度定為100%。

如果算命先生學過機器學習演算法,就不會很肯定指出你將來一定當官,而是說你將來當官的支援度為20%,置信度為30%。

(11)邏輯迴歸

邏輯迴歸與線性迴歸都是廣義線性模型,只所以在迴歸前加上“邏輯”,是因為他線上性迴歸的基礎上穿上了一件馬甲(轉變函式)。比如人的成功公式: “成功=3分才能+6分機會+1分貴人幫”,但通過計算可能得出如1,5,99,200等各種數字,如果就想知道是否是成功人士,你就需要一個“成功評委”來對結果進行評價,最終輸出量化指標,如成功率是80%,其中越接近100%,說明越成功。而這個“成功評委”就是一個轉變函式

(12)因子分析

中國有句古話是“三歲看老”和“性格決定命運”,這與因子分析的思維類似,就是將影響或決定事物的本質東西總結出來。網路上將有喝綠茶飲料,穿361運動鞋,週末在家打遊戲,留著平頭等特徵行為的人,稱為具有“屌絲”氣質。因子分析過程也類似,就是對具有關聯行為或相似事件,進行共性因子提取,將具有共同本質的特徵行為歸為一個因子。像土豪,即使有錢了,依然沒有改變“土”的因子。

(13)人工神經網路

其實全國人民大會代表選舉過程與人工神經網路運算流程是類似。首先由基層人民選取鄉/縣級人民代表,再有縣級選舉市級,由市級選舉省級,最後產生全國人民代表。其實,在選舉過程中,每個人/代表相當於人工神經網路的一個神經元,而縣、市、省等行政級別,相當於人工神經網路的層級,最後選取的代表相當於輸出結果。層級越多代表越複雜,深度學習就是多層神經網路。現在終於明白國家領導人考察農村,叫做深入基層。

選舉的人工神經網網路

(14)SVM(支援向量機)

以相親為例,假如你根據學歷,身高,年齡,相貌等指標,綜合評估下來依然有較多候選人,你不知道這麼辦?這時候你閨蜜告訴你個方法:“就是看看他的父母和朋友情況”,這時候你豁然開朗,根據他的父母健康並是高官,朋友都年輕有為等指標,很快就確定了候選者。其實這個過程與SVM模型的思維邏輯相同的。SVM的核心思維就是將低維資料(一個人)對映到高維空間(多個人),從而實現資料可分(可選擇);你閨蜜的方法在SVM中就是核函式。這是一個拼“爹”的時代。