[機(jī)器學(xué)習(xí)]-邏輯回歸-原理及代碼實(shí)現(xiàn)(含數(shù)據(jù))

提出問題

二分類問題

圖像的寬x磕昼,高y譬重,根據(jù)x和y的大小医窿,將圖像分為橫向圖片和縱向圖片

寬x 高y 形狀label
80 150 縱向
60 110 縱向
35 130 縱向
160 50 橫向
160 20 橫向
125 30 橫向

邏輯回歸-概率分類

sigmoid函數(shù)

sigmoid函數(shù)的由來

幾率事件發(fā)生的概率除以未發(fā)生的概率 仰担,設(shè)p為事件發(fā)生的概率,則(1-p)為事件未發(fā)生的概率玷氏。此時(shí):

odds =\frac{p}{1-p}

定義域:p\in[0,1]堵未;值域:odds\in[0,+\infty)

將上式取對(duì)數(shù),可以將其擴(kuò)展到實(shí)數(shù)空間 盏触,就是logit函數(shù)

logit(p) = log_e(odds)=log_e(\frac{p}{1-p})

定義域:p\in(0,1)渗蟹;值域:logit(p)\in(-\infty,+\infty)

由于logit函數(shù)和線性回歸模型在同一取值范圍內(nèi),因此赞辩,可以用線性回歸模型來表示logit函數(shù):

logit(p)=\theta_1x_1+\theta_2x_2+bias

\theta_1x_1+\theta_2x_2+bias=z

則:

logit(p)=log_e(\frac{p}{1-p})=z

對(duì)上式等號(hào)兩邊取e:

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

至此雌芽,得到了sigmod函數(shù),用來將線性回歸模型 輸出的實(shí)數(shù)空間取值映射成為概率 辨嗽。

sigmoid函數(shù)的一般表達(dá)式如下:

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

sigmoid函數(shù)圖像

sigmoid

sigmoid函數(shù)性質(zhì)
定義域:(- \infty, + \infty)
值域:(0, 1)
z=0, g(z)=0.5
z<0, g(z)<0.5
z>0, g(z)>0.5

sigmoid導(dǎo)數(shù)性質(zhì)
g^{'}=g(1-g)

sigmoid函數(shù)的優(yōu)勢(shì)
????1. 引入了非線性映射世落,將線性回歸(- \infty, + \infty)的值域映射到(0, 1)之間,符合概率值區(qū)間[0, 1]
????2. 大于0.5表示陽性糟需,小于0.5表示陰性屉佳,有助于直觀地做出預(yù)測(cè)類型的判斷
????3. 數(shù)學(xué)特性好谷朝,便于求導(dǎo)

借助sigmoid函數(shù),生成邏輯回歸模型表達(dá)式 為:

f_{\theta}(x)=g(\theta^Tx)=\frac{1}{1+exp(-\theta^Tx)}

其中:

\theta^Tx=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\cdots+\theta_nx_n

該式表現(xiàn)為多元線性回歸(含有n個(gè)參數(shù))的模式武花。這也是邏輯回歸中圆凰,回歸二字的來源。

因?yàn)?/strong> 0<f_\theta(x)<1体箕,因此专钉,上式可以作為概率來使用。


決策邊界

定義概率計(jì)算式為:

\begin{aligned} P(y=1|\vec{x}) &=f_\theta(\vec{x})\\ P(y=0|\vec{x}) &=1-f_\theta(\vec{x}) \end{aligned}

該式含義:已知\vec{x}數(shù)據(jù)的條件下累铅,y=1的概率為f_\theta(\vec{x})驶沼。假設(shè)計(jì)算得到f_\theta(\vec{x})=0.8,則說明數(shù)據(jù)\vec{x}對(duì)應(yīng)的類別y1的概率為0.8

分類標(biāo)準(zhǔn)如下:(1:橫向争群;0:縱向)

y=\begin{cases} 1\quad&(f_\theta(\vec{x})\ge0.5)\\ 0\quad&(f_\theta(\vec{x})<0.5) \end{cases}

根據(jù)邏輯回歸模型表達(dá)式的定義,上式可改寫為

y=\begin{cases} 1\quad&(\theta^Tx\ge0)\\ 0\quad&(\theta^Tx<0) \end{cases}

將分類條件改為這種寫法的意義在于:\theta^Tx=0將作為分類邊界 大年,實(shí)現(xiàn)二分類的目的换薄。

決策邊界:用于數(shù)據(jù)分類的直線稱為決策邊界。上述討論中的 \theta^Tx=0就是邏輯回歸模型的決策邊界翔试。

為了獲得合理的決策邊界轻要,即求得正確的參數(shù)\vec\theta,需要定義目標(biāo)函數(shù) 垦缅,進(jìn)行微分冲泥,獲得參數(shù)更新表達(dá)式 ,然后利用現(xiàn)有數(shù)據(jù)壁涎,不斷更新\vec\theta來得到正確的決策邊界凡恍。該過程即為邏輯回歸模型。


似然函數(shù)(目標(biāo)函數(shù))

按照前述分析:

  • 當(dāng)y=1時(shí)怔球,我們希望概率P(y=1|\vec{x})是最大的
  • 當(dāng)y=0時(shí)嚼酝,我們希望概率P(y=0|\vec{x})是最大的

對(duì)于全部示例數(shù)據(jù),有如下信息:

圖像大小 形狀label x_1 x_2 y 概率
80 x 150 縱向 80 150 0 期待P(y=0|\vec{x})最大
60 x 110 縱向 60 110 0 期待P(y=0|\vec{x})最大
35 x 130 縱向 35 130 0 期待P(y=0|\vec{x})最大
160 x 50 橫向 160 50 1 期待P(y=1|\vec{x})最大
160 x 20 橫向 160 20 1 期待P(y=1|\vec{x})最大
125 x 30 橫向 125 30 1 期待P(y=1|\vec{x})最大

假定所有的訓(xùn)練數(shù)據(jù)都互不影響竟坛、獨(dú)立發(fā)生闽巩。這樣的話,整體的概率可用下面的聯(lián)合概率來表示:

L(\vec\theta)=P(y^{(1)}=0|\vec{x}^{(1)})\cdot P(y^{(2)}=0|\vec{x}^{(2)})\cdot P(y^{(3)}=0|\vec{x}^{(3)})\cdot P(y^{(4)}=1|\vec{x}^{(4)})\cdot P(y^{(5)}=1|\vec{x}^{(5)})\cdot P(y^{(6)}=1|\vec{x}^{(6)})

更一般化的寫法如下:

L(\vec\theta)=\prod_{i=1}^{m}P(y^{(i)}=1|\vec{x}^{(i)})^{y^{(i)}}\cdot P(y^{(i)}=0|\vec{x}^{(i)})^{1-y^{(i)}}\tag{1}

關(guān)鍵點(diǎn):這個(gè)表達(dá)式利用了任何數(shù)的0次方都是1的特性担汤。結(jié)合二分類的類別分別取0和1涎跨,得到所有樣本概率乘積的統(tǒng)一表達(dá)式。

m:表示共有m個(gè)樣本崭歧。

這里的目標(biāo)函數(shù)L(\vec\theta)也被稱為似然 隅很,L 取自似然的英文單詞Likelihood

回歸的時(shí)候,處理的是誤差率碾,因此需要使誤差最小化外构。

現(xiàn)在考慮的是聯(lián)合概率普泡,我們希望概率盡可能大,所以更新參數(shù)的目標(biāo)是使得概率盡可能大审编。


對(duì)數(shù)似然函數(shù)

上述目標(biāo)函數(shù)(似然函數(shù))直接求微分比較困難撼班,是因?yàn)椋?strong>(取對(duì)數(shù)的原因)
????1. 聯(lián)合概率都是小于1的,其乘積會(huì)更小垒酬,若值太小砰嘁,編程時(shí)會(huì)出現(xiàn)精度問題
????2. 乘法相比于加法,計(jì)算量要大很多

因此需要在微分前勘究,對(duì)函數(shù)進(jìn)行變形矮湘,即:取似然函數(shù)的對(duì)數(shù)

取對(duì)數(shù)的可行性:對(duì)數(shù)函數(shù)是單調(diào)遞增的,要獲取 L(\theta)的最大值口糕,即獲取 logL(\theta)的最大值

對(duì)式(1)取自然對(duì)數(shù)缅阳,得到對(duì)數(shù)似然函數(shù)如下所示:

\begin{aligned} L(\vec\theta) &=\prod_{i=1}^{m}P(y^{(i)}=1|\vec{x}^{(i)})^{y^{(i)}}\cdot P(y^{(i)}=0|\vec{x}^{(i)})^{1-y^{(i)}}\\ log\left(L(\vec\theta)\right) &=log\left(\prod_{i=1}^{m}P(y^{(i)}=1|\vec{x}^{(i)})^{y^{(i)}}\cdot P(y^{(i)}=0|\vec{x}^{(i)})^{1-y^{(i)}}\right)\\ &=\sum_{i=1}^{m}log\left(P(y^{(i)}=1|\vec{x}^{(i)})^{y^{(i)}}\cdot P(y^{(i)}=0|\vec{x}^{(i)})^{1-y^{(i)}}\right)\\ &=\sum_{i=1}^{m}\left(log(P(y^{(i)}=1|\vec{x}^{(i)})^{y^{(i)}}) + log(P(y^{(i)}=0|\vec{x}^{(i)})^{1-y^{(i)}})\right)\\ &=\sum_{i=1}^{m}\left({y^{(i)}}\cdot log(P(y^{(i)}=1|\vec{x}^{(i)})) + ({1-y^{(i)}})\cdot log(P(y^{(i)}=0|\vec{x}^{(i)}))\right)\\ &=\sum_{i=1}^{m}\left({y^{(i)}}\cdot log(P(y^{(i)}=1|\vec{x}^{(i)})) + ({1-y^{(i)}})\cdot log(1-P(y^{(i)}=1|\vec{x}^{(i)}))\right)\\ &=\sum_{i=1}^{m}\left({y^{(i)}}\cdot log(f_\theta(\vec{x}^{(i)})) + ({1-y^{(i)}})\cdot log(1-f_\theta(\vec{x}^{(i)}))\right)\\ \end{aligned}

綜上:邏輯回歸使用如下的對(duì)數(shù)似然函數(shù)作為目標(biāo)函數(shù):

logL(\theta)=\sum_{i=1}^{m}\left({y^{(i)}}\cdot log(f_\theta(x^{(i)})) + ({1-y^{(i)}})\cdot log(1-f_\theta(x^{(i)}))\right)

邏輯回歸參數(shù)學(xué)習(xí)更新的算法通常為梯度下降法擬牛頓法 ,這里采用梯度下降法景描,求導(dǎo)過程如下:

針對(duì)參數(shù)\theta_j十办,對(duì)上式兩邊求偏導(dǎo)如下:

\begin{aligned} \frac{\partial}{\partial\theta_j}logL(\theta)&= \frac{\partial}{\partial\theta_j}{\sum_{i=1}^{m}\left({y^{(i)}}\cdot log(f_\theta(x^{(i)})) + ({1-y^{(i)}})\cdot log(1-f_\theta(x^{(i)}))\right)}\\ &=\sum_{i=1}^{m}\left(y^{(i)}\cdot\frac{1}{f_\theta(x^{(i)})}\cdot \frac{\partial}{\partial\theta_j}f_\theta(x^{(i)})+(1-y^{(i)})\cdot\frac{-1}{1-f_\theta(x^{(i)})}\cdot \frac{\partial}{\partial\theta_j}f_\theta(x^{(i)})\right)\\ &=\sum_{i=1}^{m}\left((\frac{y^{(i)}}{f_\theta(x^{(i)})}-\frac{1-y^{(i)}}{1-f_\theta(x^{(i)})})\cdot \frac{\partial}{\partial\theta_j}f_\theta(x^{(i)})\right)\\ &=\sum_{i=1}^{m}\left((\frac{y^{(i)}}{f_\theta(x^{(i)})}-\frac{1-y^{(i)}}{1-f_\theta(x^{(i)})})\cdot f_\theta(x^{(i)})\cdot(1-f_\theta(x^{(i)}))\cdot \frac{\partial}{\partial\theta_j}\theta^Tx^{(i)}\right)\\ &=\sum_{i=1}^{m}\left( (y^{(i)}\cdot(1-f_\theta(x^{(i)}))-(1-y^{(i)})\cdot f_\theta(x^{(i)}))\cdot\frac{\partial}{\partial\theta_j}(\theta_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n)\right)\\ &=\sum_{i=1}^{m}\left( (y^{(i)}-f_\theta(x^{(i)}))\cdot x_j^{(i)}\right) \end{aligned}

其中:
???? i:第i個(gè)樣本
???? j:第j個(gè)參數(shù)

參數(shù)更新表達(dá)式如下所示:
\theta_j:=\theta_j+\eta\cdot\sum_{i=1}^{m}\left( (y^{(i)}-f_\theta(x^{(i)}))\cdot x_j^{(i)}\right)

因?yàn)橐顾迫缓瘮?shù)最大化,因此超棺,參數(shù) \theta 應(yīng)該向似然函數(shù)增大的方向移動(dòng) 向族,即:\theta_j的移動(dòng)方向應(yīng)該與微分符號(hào)一致 ,因此上式中使用加號(hào)"+"

\theta_j:第j個(gè)參數(shù)棠绘,共有n個(gè)參數(shù)
\eta學(xué)習(xí)率 件相,超參數(shù)
m:樣本的個(gè)數(shù)


線性不可分問題

通過構(gòu)造合理的\theta^Tx,即構(gòu)造不同形狀的決策邊界曲線\theta^Tx=0氧苍,使用邏輯回歸模型夜矗,即可處理線性不可分問題,示例如下

上圖中让虐,這兩類無法用一條直線來區(qū)分侯养,可以尋找一條曲線\theta^Tx=0來作為決策邊界,來解決這個(gè)線性不可分問題澄干。如下圖所示

根據(jù)邏輯回歸模型中參數(shù)更新的方式逛揩,使用樣本進(jìn)行訓(xùn)練,不斷更新參數(shù)\theta麸俘,就可以得到合理的決策邊界辩稽,進(jìn)而完成線性不可分問題的分類。


邏輯回歸示例

現(xiàn)有數(shù)據(jù)集data3.csv从媚,如下所示:

data3.csv

劃分?jǐn)?shù)據(jù)集逞泄,并做圖如下

# 劃分?jǐn)?shù)據(jù)
 train = df.values
 train_x = train[:,:2]
 train_y = train[:,-1]
 
 
 # 作圖觀察數(shù)據(jù)
 df0 = df[df['y'] == 0]
 df1 = df[df['y'] == 1]
 plt.figure(dpi=150)
 plt.plot(df0['x1'], df0['x2'], 'x', label='class 0')
 plt.plot(df1['x1'], df1['x2'], 'o', label='class 1')
 plt.legend()
 plt.show()

根據(jù)圖像觀察樣本點(diǎn)分布位置,初步猜測(cè)決策邊界為二次函數(shù),如下所示:

\theta^Tx=\theta_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_1^2=0

據(jù)此喷众,共4個(gè)參數(shù)各谚,則輸入數(shù)據(jù)X應(yīng)該具有4列,如下所示

# 構(gòu)造輸入矩陣X
  X = np.c_[np.ones(len(train_x)), train_x, train_x[:,0]**2]
 
 # 隨機(jī)初始化4個(gè)參數(shù)
  theta = np.random.rand(4)

根據(jù)參數(shù)更新表達(dá)式到千,迭代更新參數(shù)

# 定義模型表達(dá)式
 def f(X):
  z = np.dot(X, theta)
  return 1 / (1 + np.exp(-z))
 
 # 設(shè)定學(xué)習(xí)率為0.001
 ETA = 0.001
 
 # 設(shè)置更新次數(shù)為5000
 epoch = 5000
 
 # 開始迭代更新
 for i in range(epoch):
  theta = theta + ETA * np.dot(train_y-f(X), X)

根據(jù)決策邊界:
\theta^Tx=\theta_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_1^2=0
計(jì)算得到昌渤,決策邊界曲線為:
x_2 = \frac{-(\theta_0+\theta_1x_1+\theta_3x_x^2)}{\theta_2}
作圖查看分類結(jié)果

 # 作圖查看分類結(jié)果
 df0 = df[df['y'] == 0]
 df1 = df[df['y'] == 1]
 
 x1 = np.linspace(-3, 5, 100)
 x2 = -(theta[0] + theta[1] * x1 + theta[3]*x1**2) / theta[2]
 
 plt.figure(dpi=100)
 plt.plot(df0['x1'], df0['x2'], 'x', label='class 0')
 plt.plot(df1['x1'], df1['x2'], 'o', label='class 1')
 plt.plot(x1, x2, '--')
 plt.legend()
 plt.show()
邏輯回歸解決線性不可分問題

參考內(nèi)容:《白話機(jī)器學(xué)習(xí)的數(shù)學(xué)》[日]立石賢吾
文中數(shù)據(jù):https://zlzsm.lanzoui.com/iSMCSu5wkzc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市憔四,隨后出現(xiàn)的幾起案子膀息,更是在濱河造成了極大的恐慌,老刑警劉巖了赵,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潜支,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡柿汛,警方通過查閱死者的電腦和手機(jī)冗酿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來络断,“玉大人裁替,你說我怎么就攤上這事〖搜颍” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵稍计,是天一觀的道長躁绸。 經(jīng)常有香客問我,道長臣嚣,這世上最難降的妖魔是什么净刮? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮硅则,結(jié)果婚禮上淹父,老公的妹妹穿的比我還像新娘。我一直安慰自己怎虫,他們只是感情好暑认,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著大审,像睡著了一般蘸际。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上徒扶,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天粮彤,我揣著相機(jī)與錄音,去河邊找鬼。 笑死导坟,一個(gè)胖子當(dāng)著我的面吹牛屿良,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惫周,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼尘惧,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了闯两?” 一聲冷哼從身側(cè)響起褥伴,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎漾狼,沒想到半個(gè)月后重慢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逊躁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年似踱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稽煤。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡核芽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酵熙,到底是詐尸還是另有隱情轧简,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布匾二,位于F島的核電站哮独,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏察藐。R本人自食惡果不足惜皮璧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望分飞。 院中可真熱鬧悴务,春花似錦、人聲如沸譬猫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽染服。三九已至裂垦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肌索,已是汗流浹背蕉拢。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工特碳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晕换。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓午乓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闸准。 傳聞我的和親對(duì)象是個(gè)殘疾皇子益愈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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