用貝葉斯判別分析再次預(yù)測股票漲跌情況

判別分析也是一種分類器,與邏輯回歸相比城豁,它具有以下優(yōu)勢:

當(dāng)類別的區(qū)分度高的時候肉迫,邏輯回歸的參數(shù)估計不夠穩(wěn)定验辞,它點在線性判別分析中是不存在的;
如果樣本量n比較小喊衫,而且在每一類響應(yīng)變量中預(yù)測變量X近似服從正態(tài)分布跌造,那么線性判別分析比邏輯回歸更穩(wěn)定;
多于兩類的分類問題時族购,線性判別分析更普遍壳贪。
貝葉斯分類器

貝葉斯分類的基本思想是:對于多分類(大于等于2類)的問題,計算在已知條件下各類別的條件概率寝杖,取條件概率最大的那一類作為分類結(jié)果违施。用公式描述如下:

Paste_Image.png

其中,是第k類的先驗概率瑟幕,是第k類的概率密度(當(dāng)然如果是離散型變量就是條件概率磕蒲,本文考慮連續(xù)型變量)。這個公式就是貝葉斯定理收苏。

線性判別分析(Linear Discriminant Analysis, LDA)

1亿卤、 一元線性判別分析

假設(shè)特征變量滿足正態(tài)分布,即:

Paste_Image.png

線性判別分析有一個重要假設(shè):假設(shè)所有K類的劃分方差相同鹿霸。根據(jù)貝葉斯定理有:

對分子取對數(shù)轉(zhuǎn)換排吴,可見最大等價于下式最大:

Paste_Image.png

(這里十分誠意地附上推導(dǎo)過程,沒興趣的可以直接跳過:)

Paste_Image.png

所以只要找到令上式最大的k值即可懦鼠。從上式可看出钻哩,一共有、肛冶、這三種參數(shù)需要估計擬合街氢。先驗概率可以根據(jù)業(yè)務(wù)知識進行預(yù)先估計,如果不行也可以直接以樣本中第k類的樣本在所有類的總樣本中的比例當(dāng)作先驗概率睦袖,即


Paste_Image.png

至于期望和方差珊肃,直接根據(jù)各類的觀測值計算即可:


Paste_Image.png

從上上式(我就不編號)可看出,是的線性函數(shù),這也是LDA名為“線性”的原因伦乔。

2厉亏、多元線性判別分析

多元LDA由于涉及到多個特征變量,因此用協(xié)方差矩陣來代替一維方差(協(xié)方差矩陣的概念可參考延伸閱讀文獻3)烈和。這里直接給結(jié)論爱只,線性模型就變成:

Paste_Image.png

.
除了方差變成協(xié)方差矩陣,和也變成了向量招刹。注意這里的還是一次恬试,仍然是線性模型。

二次判別分析(Quadratic Discriminant Analysis, QDA)

在LDA中假設(shè)所有的K類方差(或協(xié)方差矩陣)都相同疯暑,但這個假設(shè)有些嚴苛训柴,如果放寬這個假設(shè),允許每一類的觀測都各自服從一個正態(tài)分布缰儿,協(xié)方差矩陣可以不同畦粮,LDA就變成了QDA。這里依然直接給公式:

Paste_Image.png

可見是的二次函數(shù)乖阵,故名“二次判別分析”。

QDA與LDA的關(guān)系類似于多項式回歸與線性回歸的關(guān)系预麸,本質(zhì)上仍是偏差和方差的權(quán)衡瞪浸,這也是Machine Learning領(lǐng)域的一個核心問題。QDA比LDA光滑吏祸,偏差更小对蒲,但方差更大。那么它們的適用條件呢贡翘?

一般而言蹈矮,如果訓(xùn)練觀測數(shù)據(jù)量相對較少,LDA是一個比QDA更好的決策鸣驱,降低模型的方差很有必要泛鸟。相反地,如果訓(xùn)練集非常大踊东,則更傾向于使用QDA北滥,這時分類器的方差不再是一個主要關(guān)心的問題,或者說K類的協(xié)方差矩陣相同的假設(shè)是站不住腳的闸翅。

實戰(zhàn):用LDA(QDA)再次預(yù)測股票漲跌

這里為了方(tou)便(lan)再芋,依然使用延伸閱讀文獻4里的數(shù)據(jù)集,即ISLR包里的Smarket數(shù)據(jù)集坚冀。用不同方法做同樣的事济赎,其實也方便將不同方法進行對比。

> library(ISLR)
> library(MASS)
> attach(Smarket)
> lda.fit=lda(Direction~Lag1+Lag2,data=Smarket, subset=Year<2005)
> lda.fit
Call:
lda(Direction ~ Lag1 + Lag2, data = Smarket, subset = Year < 
    2005)

Prior probabilities of groups:
    Down       Up 
0.491984 0.508016 

Group means:
            Lag1        Lag2
Down  0.04279022  0.03389409
Up   -0.03954635 -0.03132544

Coefficients of linear discriminants:
            LD1
Lag1 -0.6420190
Lag2 -0.5135293

Prior probabilities of groups是先驗概率,實際上就是各類別在訓(xùn)練集中的比例:

> table(Smarket[Year<2005,9])/nrow(Smarket[Year<2005,])

    Down       Up 
0.491984 0.508016

Group means是對每類每個變量計算平均司训,用來估計參數(shù)构捡。通過Group means矩陣可看出:當(dāng)股票下跌時,前兩天的投資回報率會趨向于正豁遭;當(dāng)股票上漲時叭喜,前兩天的投資回報率會趨向于負。Coefficients of linear discriminants則是線性模型的系數(shù)蓖谢,說明當(dāng)很大時捂蕴,LDA分類器預(yù)測上漲;很小時闪幽,LDA分類器預(yù)測下跌啥辨。

> plot(lda.fit)
Paste_Image.png

上面的圖是對LDA模型的可視化,實際上它是訓(xùn)練集的分別在Down類和Up類的直方圖盯腌。下面驗證比較一下:

library(dplyr)
Lag1_1 <- Smarket %>% filter(Year<"2005", Direction=="Down") %>% select(Lag1)
Lag2_1 <- Smarket %>% filter(Year<"2005", Direction=="Down") %>% select(Lag2) 
Lag1_2 <- Smarket %>% filter(Year<"2005", Direction=="Up") %>% select(Lag1) 
Lag2_2 <- Smarket %>% filter(Year<"2005", Direction=="Up") %>% select(Lag2) 
lm_1 <- (-0.6420190*Lag1_1-0.5135293*Lag2_1)[,1]
lm_2 <- (-0.6420190*Lag1_2-0.5135293*Lag2_2)[,1]
par(mfrow=c(2,1))
hist(lm_1,breaks=16,freq = F,col="lightblue")
hist(lm_2,breaks=16,freq = F,col="lightblue")
Paste_Image.png

可見直方圖形狀完全一致溉知。

以上在訓(xùn)練集中對LDA模型的訓(xùn)練過程。下面在測試集中驗證LDA模型腕够。

> Smarket.2005=subset(Smarket,Year==2005)
> lda.pred=predict(lda.fit,Smarket.2005)
> class(lda.pred)
[1] "list"
> names(lda.pred)
[1] "class"     "posterior" "x"        
> data.frame(lda.pred)[1:5,]
     class posterior.Down posterior.Up         LD1
999     Up      0.4901792    0.5098208  0.08293096
1000    Up      0.4792185    0.5207815  0.59114102
1001    Up      0.4668185    0.5331815  1.16723063
1002    Up      0.4740011    0.5259989  0.83335022
1003    Up      0.4927877    0.5072123 -0.03792892
> table(lda.pred$class,Smarket.2005$Direction)

       Down  Up
  Down   35  35
  Up     76 106
> mean(lda.pred$class==Smarket.2005$Direction)
[1] 0.5595238

比較一下上一篇邏輯回歸(延伸閱讀文獻4)中的結(jié)果:

> glm.fit=glm(Direction~Lag1+Lag2,data=Smarket,family=binomial, subset=train)
> glm.probs=predict(glm.fit,newdata=Smarket[!train,],type="response") 
> glm.pred=ifelse(glm.probs >0.5,"Up","Down")
> table(glm.pred,Direction.2005)
        Direction.2005
glm.pred Down  Up
    Down   35  35
    Up     76 106
> mean(glm.pred==Direction.2005)
[1] 0.5595238

LDA的結(jié)果與邏輯回歸完全一致级乍!以一個數(shù)據(jù)分析獅敏銳的第六感,我們可以大膽猜測:LDA與邏輯回歸這兩種算法可能有某種內(nèi)在聯(lián)系!

這里不做嚴謹?shù)耐茖?dǎo)(深層的推導(dǎo)可參考延伸閱讀文獻6)帚湘,只作一個簡單的驗證比較玫荣。為了簡單起見,只考慮二分類問題大诸,多分類問題可同理類推捅厂。

Paste_Image.png

可見這仍是關(guān)于x的線性函數(shù),與邏輯回歸形式一致资柔!雖然形式一致焙贷,但邏輯回歸的參數(shù)是通過極大似然法估計出來的,LDA的參數(shù)是概率密度函數(shù)計算出來的贿堰。

由于LDA與邏輯回歸形只是擬合過程不同辙芍,因此二者所得的結(jié)果應(yīng)該是接近的。事實上官边,這一情況經(jīng)常發(fā)生沸手,但并非必然。LDA假設(shè)觀測服從每一類的協(xié)方差矩陣都相同的正態(tài)分布注簿,當(dāng)這一假設(shè)近似成立時契吉,LDA效果比邏輯回歸好;相反诡渴,若這個假設(shè)不成立捐晶,則邏輯回歸效果比LDA好菲语。

下面練習(xí)QDA:

> qda.fit=qda(Direction~Lag1+Lag2,data=Smarket,subset=train)
> qda.fit
Call:
qda(Direction ~ Lag1 + Lag2, data = Smarket, subset = train)

Prior probabilities of groups:
    Down       Up 
0.491984 0.508016 

Group means:
            Lag1        Lag2
Down  0.04279022  0.03389409
Up   -0.03954635 -0.03132544
> qda.class=predict(qda.fit,Smarket.2005)$class
> table(qda.class,Direction.2005)
         Direction.2005
qda.class Down  Up
     Down   30  20
     Up     81 121
> mean(qda.class==Direction.2005)
[1] 0.5992063

可見QDA的準確率稍高于LDA。

參考文獻

Gareth James et al. An Introduction to Statistical Learning.

延伸閱讀

  1. 算法雜貨鋪——分類算法之樸素貝葉斯分類(Naive Bayesian classification)
  2. 算法雜貨鋪——分類算法之貝葉斯網(wǎng)絡(luò)(Bayesian networks)
  3. 協(xié)方差的意義和計算公式
  4. 邏輯回歸模型預(yù)測股票漲跌
  5. 機器學(xué)習(xí)筆記 線性判別分析(上)
  6. 機器學(xué)習(xí)筆記 線性判別分析(中)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惑灵,一起剝皮案震驚了整個濱河市山上,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌英支,老刑警劉巖佩憾,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異干花,居然都是意外死亡妄帘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門池凄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抡驼,“玉大人,你說我怎么就攤上這事肿仑≈旅耍” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵尤慰,是天一觀的道長馏锡。 經(jīng)常有香客問我,道長伟端,這世上最難降的妖魔是什么眷篇? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮荔泳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘虐杯。我一直安慰自己玛歌,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布擎椰。 她就那樣靜靜地躺著支子,像睡著了一般。 火紅的嫁衣襯著肌膚如雪达舒。 梳的紋絲不亂的頭發(fā)上值朋,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音巩搏,去河邊找鬼昨登。 笑死,一個胖子當(dāng)著我的面吹牛贯底,可吹牛的內(nèi)容都是我干的丰辣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笙什!你這毒婦竟也來了飘哨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤琐凭,失蹤者是張志新(化名)和其女友劉穎芽隆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體统屈,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡胚吁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸿吆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囤采。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惩淳,靈堂內(nèi)的尸體忽然破棺而出蕉毯,到底是詐尸還是另有隱情,我是刑警寧澤思犁,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布代虾,位于F島的核電站,受9級特大地震影響激蹲,放射性物質(zhì)發(fā)生泄漏棉磨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一学辱、第九天 我趴在偏房一處隱蔽的房頂上張望乘瓤。 院中可真熱鬧,春花似錦策泣、人聲如沸衙傀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽统抬。三九已至,卻和暖如春危队,著一層夾襖步出監(jiān)牢的瞬間聪建,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工茫陆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留金麸,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓盅弛,卻偏偏與公主長得像钱骂,于是被迫代替她去往敵國和親叔锐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容