【機(jī)器學(xué)習(xí)】算法原理詳細(xì)推導(dǎo)與實(shí)現(xiàn)(二):邏輯回歸

【機(jī)器學(xué)習(xí)】算法原理詳細(xì)推導(dǎo)與實(shí)現(xiàn)(二):邏輯回歸

在上一篇算法中,線性回歸實(shí)際上是 連續(xù)型 的結(jié)果炕泳,即 y \in R ,而邏輯回歸的 y 是離散型物赶,只能取兩個(gè)值 y \in \{0,1\}橡庞,這可以用來處理一些分類的問題较坛。

logistic函數(shù)

我們可能會(huì)遇到一些分類問題,例如想要?jiǎng)澐?鳶尾花 的種類扒最,嘗試基于一些特征來判斷鳶尾花的品種丑勤,或者判斷上一篇文章中的房子,在6個(gè)月之后能否被賣掉吧趣,答案是 或者 法竞,或者一封郵件是否是垃圾郵件耙厚。所以這里是 x ,這里是 y 在一個(gè)分類問題中岔霸,y 只能取兩個(gè)值0和1薛躬,這就是一個(gè)二元分類的問題,如下所示:

image

可以使用線性回歸對(duì)以上數(shù)值進(jìn)行劃分呆细,可以擬合出如下那么一條線型宝,用 y=0.5 作為臨界點(diǎn),如果 x 在這個(gè)臨界點(diǎn)的右側(cè)絮爷,那么 y 的值就是1趴酣,如果在臨界點(diǎn)的左側(cè),那么 y 的值就是0略水,所以確實(shí)會(huì)有一些人會(huì)這么做价卤,用線性回歸解決分類問題:

image

線性回歸解決分類問題,有時(shí)候它的效果很好渊涝,但是通常用線性回歸解決像這樣的分類問題會(huì)是一個(gè)很糟糕的主意慎璧,加入存在一個(gè)額外的訓(xùn)練樣本 x=12,如果現(xiàn)在對(duì)這個(gè)訓(xùn)練集合做線性擬合跨释,那么可能擬合出來那么一條直線:

image

這時(shí)候y的臨界點(diǎn)估計(jì)已經(jīng)不太合適了胸私,可以知道線性回歸對(duì)于分類問題來說,不是一個(gè)很好的方法鳖谈。

假設(shè) h_\theta(x) \in [0,1]岁疼,當(dāng)如果已知 y\in \{0,1 \},那么至少應(yīng)該讓假設(shè) h_\theta(x) 預(yù)測(cè)出來的值不會(huì)比1大太多缆娃,也不會(huì)比0小太多捷绒,所以一般不會(huì)選擇線性函數(shù)作為假設(shè),而是會(huì)選擇一些稍微不同的函數(shù)圖像:

g(z)=\frac{1}{1+e^{-z}}

h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}

g(z) 被稱為 sigmoid函數(shù) 贯要,也通常被稱為 logistic函數(shù)暖侨,它的函數(shù)圖像是:

image

當(dāng) z 變得非常小的時(shí)候,g(x) 會(huì)趨向于0崇渗,當(dāng)z變得非常大的時(shí)候字逗,g(x) 會(huì)趨向于1,它和縱軸相較于0.5宅广。

邏輯回歸

那么我們的假設(shè)h_\theta(x) 要嘗試估計(jì) y\in \{0,1 \} 的概率葫掉,即:

P(y=1|x;\theta)=h_\theta(x)

P(y=0|x;\theta)=1-h_\theta(x)

以上可以把兩個(gè)公式合并簡寫為(如果y=1那么公式為h_\theta(x);如果y=0那么公式為1-h_\theta(x)):

P(y|x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}

如果對(duì)《概率論和數(shù)理統(tǒng)計(jì)》學(xué)得好的人不難看出跟狱,以上函數(shù)其實(shí)就是 伯努利分布 的函數(shù)俭厚。

對(duì)于每一個(gè)假設(shè)值h_\theta(x),為了使每一次假設(shè)值更準(zhǔn)確驶臊,即當(dāng) y=1 時(shí)估計(jì)函數(shù) P(y=1|x;\theta)=h_\theta(x) 趨向于1套腹,當(dāng)y=0 時(shí)估計(jì)函數(shù) P(y=0|x;\theta)=1-h_\theta(x) 趨向于0绪抛。則對(duì)于每一個(gè)(x_i,y_i),參數(shù) \theta 的似然估計(jì) L(\theta)為:

\begin{split} L(\theta)&=P(\vec{y}|X;\theta) \\ &=\prod_{i=1}^mP(y^{(i)}|x^{(i)};\theta) \\ &=\prod_{i=1}^m(h_\theta(x^{(i)}))^{y^{(i)}}(1-h_\theta(x^{(i)}))^{1-{y^{(i)}}} \\ \end{split}

如果每一個(gè)(x_i,y_i)都準(zhǔn)確电禀,即 P(y|x;\theta) 趨向于1幢码,則應(yīng)該使似然估計(jì) L(\theta) 最大化,也就是轉(zhuǎn)化成熟悉的問題:求解 L(\theta) 的極大似然估計(jì)尖飞。

為了調(diào)整參數(shù) \theta 使似然估計(jì) L(\theta) 最大化症副,推導(dǎo)如下(取 log 是為了去掉疊乘方便計(jì)算):

\begin{split} l(\theta)&=logL(\theta) \\ &=\sum_{i=1}^m{y^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))} \\ \end{split}

為了使這個(gè)函數(shù)最大,同樣可以使用前面學(xué)習(xí)過的梯度下降算法使對(duì)數(shù)似然估計(jì)最大化贞铣。之前學(xué)習(xí)的是要使誤差和 最小化沮明,所以梯度下降的公式為:

\theta:=\theta-\alpha\frac{\partial J(\theta)}{\partial\theta}=>\theta:=\theta-\alpha\nabla_\theta J(\theta)

而本次為了求解似然估計(jì)最大化辕坝,使用的是梯度上升:

\theta:=\theta+\alpha\nabla_\theta l(\theta)=>\theta:=\theta+\alpha\frac{\partial l(\theta)}{\partial\theta}

對(duì)數(shù)似然性是和 \theta 有關(guān),同樣的為了計(jì)算 梯度上升 最快的方向荐健,要對(duì)上述公式求偏導(dǎo)得到極值酱畅,即是上升最快的方向:

\begin{split} \frac{\partial l(\theta)}{\partial\theta_j}&=(y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})\frac{\partial}{\partial\theta_j}g(\theta^Tx) \\ &=(y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})g(\theta^Tx)(1-g(\theta^Tx))\frac{\partial}{\partial\theta_j}\theta^Tx \\ &=(y(1-g(\theta^Tx))-(1-y)g(\theta^Tx))x_j \\ &=(y-g(\theta^Tx))x_j \\ &=(y-h_{\theta}(x))x_j \end{split}

則對(duì)于 m 個(gè)樣本,則有:

\frac{\partial l(\theta)}{\partial\theta_j}=\sum_{i=1}^m{(y-h_{\theta}(x))x_j}

\theta_j:=\theta_j+\sum_{i=1}^m{(y^{(i)}-h_{\theta}(x^{(i)}))x^{(i)}_j}

所以總結(jié)來說:

邏輯回歸假設(shè)數(shù)據(jù)服從伯努利分布江场,通過極大化似然函數(shù)的方法纺酸,運(yùn)用梯度下降來求解參數(shù)址否,來達(dá)到將數(shù)據(jù)二分類的目的。

邏輯回歸是分類為什么叫做回歸

簡單來回答佑附,其實(shí)logistic regression是一種廣義線性模型z=\theta x+b樊诺,但是這個(gè)得到的輸出不在范圍[0,1](為什么需要是[0,1],因?yàn)槿绻龆诸惖脑挘?code>label是服從伯努利分布的)音同,為了使其輸出的結(jié)果在范圍[0,1]所以增加了sigmoid激活函數(shù)缸夹,對(duì)輸出值進(jìn)行再次激活痪寻。

從公式推理來說螺句,原始的回歸函數(shù)是:

z=\theta x+b

其中z \in R

為了使其線性函數(shù)達(dá)到分類的效果,對(duì)其結(jié)果z進(jìn)行類似一種“歸一化”的操作橡类,即增加激活函數(shù)sigmoid

y=\frac{1}{1+e^{\theta x+b}}

上面這個(gè)函數(shù)倒推回來就可以變化成:

\ln\frac{y}{1-y}=z=\theta x+b

y看作樣本x為正例的可能性蛇尚,相應(yīng)的1-y就是樣本x為反例的可能性,兩者的比值\frac{y}{1-y}叫做幾率(odds)顾画,取對(duì)數(shù)\ln\frac{y}{1-y}后叫做對(duì)數(shù)幾率(logistic odds)取劫,對(duì)數(shù)幾率與x是線性關(guān)系匆笤,所以可以稱作“回歸”。

鳶尾花分類

為了劃分 鳶尾花 的種類谱邪,嘗試基于一些特征來判斷鳶尾花的品種炮捧,選取100條鳶尾花數(shù)據(jù)集如下所示:

花萼長度(單位cm) 花萼寬度(單位cm) 種類
5.1 3.5 0
4.9 3.0 0
4.7 3.2 0
7.0 3.2 1
6.4 3.2 1
... ... ...

其中:

種類 含義
0 山鳶尾(setosa)
1 變色鳶尾(versicolor)
2 維吉尼亞鳶尾(virginica)

數(shù)據(jù)集的圖像分布為:

image

計(jì)算損失函數(shù):

# 損失函數(shù)
def computeCost(theta, X, y):
    theta = np.matrix(theta)
    X = np.matrix(X)
    y = np.matrix(y)
    first = np.multiply(-y, np.log(sigmoid(X * theta.T)))
    second = np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T)))
    return np.sum(first - second) / (len(X))

梯度下降函數(shù)為:

# 梯度下降
def gradient(theta, X, y):
    theta = np.matrix(theta)
    X = np.matrix(X)
    y = np.matrix(y)

    parameters = int(theta.ravel().shape[1])
    grad = np.zeros(parameters)

    error = sigmoid(X * theta.T) - y

    for i in range(parameters):
        term = np.multiply(error, X[:, i])
        grad[i] = np.sum(term) / len(X)

    return grad

最終預(yù)測(cè)準(zhǔn)確率為:

accuracy = 99%

結(jié)果分類的圖像為:

image

數(shù)據(jù)和代碼下載請(qǐng)關(guān)注公眾號(hào)【 機(jī)器學(xué)習(xí)和大數(shù)據(jù)挖掘 】,后臺(tái)回復(fù)【 機(jī)器學(xué)習(xí) 】即可獲鹊胍:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咆课,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子扯俱,更是在濱河造成了極大的恐慌书蚪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迅栅,死亡現(xiàn)場(chǎng)離奇詭異殊校,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)读存,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門为流,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宪萄,你說我怎么就攤上這事艺谆。” “怎么了拜英?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵静汤,是天一觀的道長。 經(jīng)常有香客問我居凶,道長虫给,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任侠碧,我火速辦了婚禮抹估,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弄兜。我一直安慰自己药蜻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布替饿。 她就那樣靜靜地躺著语泽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪视卢。 梳的紋絲不亂的頭發(fā)上踱卵,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音据过,去河邊找鬼惋砂。 笑死妒挎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的西饵。 我是一名探鬼主播酝掩,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼眷柔!你這毒婦竟也來了庸队?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤闯割,失蹤者是張志新(化名)和其女友劉穎彻消,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宙拉,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宾尚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谢澈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煌贴。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锥忿,靈堂內(nèi)的尸體忽然破棺而出牛郑,到底是詐尸還是另有隱情,我是刑警寧澤敬鬓,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布淹朋,位于F島的核電站,受9級(jí)特大地震影響钉答,放射性物質(zhì)發(fā)生泄漏础芍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一数尿、第九天 我趴在偏房一處隱蔽的房頂上張望仑性。 院中可真熱鬧,春花似錦右蹦、人聲如沸诊杆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晨汹。三九已至,卻和暖如春甲献,著一層夾襖步出監(jiān)牢的瞬間宰缤,已是汗流浹背颂翼。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國打工晃洒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留慨灭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓球及,卻偏偏與公主長得像氧骤,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吃引,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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