Logistic回归——二分类 —— matlab
目錄
1.簡介
2.應(yīng)用范圍
3.分類
3.應(yīng)用條件
4.原理詳解
4.1?sigmod分類函數(shù)
4.2 建立目標(biāo)函數(shù)
4.3 求解相關(guān)參數(shù)
5.實列分析
5.1 讀取數(shù)據(jù)(excel文件)
5.2 分離數(shù)據(jù)集
5.3 求解前設(shè)定
5.4 求解目標(biāo)函數(shù)
5.5 預(yù)測
5.6 預(yù)測分類
5.7 準(zhǔn)確率
6.matlab自帶函數(shù)
1.簡介
Logistic回歸又稱logistic回歸分析,是一種廣義的線性回歸分析模型,常用于數(shù)據(jù)挖掘 ,Logistic回歸雖說是回歸,但實際更屬于判別分析。
2.應(yīng)用范圍
① 適用于流行病學(xué)資料的危險因素分析
② 實驗室中藥物的劑量-反應(yīng)關(guān)系
③ 臨床試驗評價
④ 疾病的預(yù)后因素分析
3.分類
①按因變量的資料類型分:
二分類
多分類
其中二分較為常用
② 按研究方法分:
條 件Logistic回歸
非條件Logistic回歸
兩者針對的資料類型不一樣,前者針對配對研究,后者針對成組研究。
3.應(yīng)用條件
① 獨立性。各觀測對象間是相互獨立的;
② LogitP與自變量是線性關(guān)系;
③ 樣本量。經(jīng)驗值是病例對照各50例以上或為自變量的5-10倍(以10倍為宜),不過隨著統(tǒng)計技術(shù)和軟件的發(fā)展,樣本量較小或不能進(jìn)行似然估計的情況下可采用精確logistic回歸分析,此時要求分析變量不能太多,且變量分類不能太多;
④ 當(dāng)隊列資料進(jìn)行l(wèi)ogistic回歸分析時,觀察時間應(yīng)該相同,否則需考慮觀察時間的影響(建議用Poisson回歸)。
4.原理詳解
4.1?sigmod分類函數(shù)
之所以在這里介紹,是因為下面會用到這個函數(shù)
Sigmoid函數(shù):
曲線表示:
由圖可見當(dāng)范圍為0-1,當(dāng)X<0時,Y趨向于0,X>0時,Y趨向于1,適合用于0-1二分類。
所以我們就可以設(shè)分類函數(shù)如下:
????????其中為自變量,即特征數(shù)據(jù)。實際因變量為,為0-1變量,為預(yù)測值范圍為0-1。顯然這個模型需要求解的變量為。
4.2 建立目標(biāo)函數(shù)
對于輸入變量,設(shè)為輸出為1的概率,則為輸出0的概率。則可表示成如下:
求解損失函數(shù):用概率論中的極大似然估計的方法,構(gòu)建概率函數(shù)如下,
? ? ? ? 對損失函數(shù)可以理解為,當(dāng)時,的值越大,P的值越大;時,的值越小,P的值越小。即可以認(rèn)為,當(dāng)P值越大時預(yù)測的越準(zhǔn)確。單個輸入的目標(biāo)即為P取最大。對M個輸入樣本,可以構(gòu)建以下目標(biāo)函數(shù):
????????對目標(biāo)函數(shù)取對數(shù)可以將目標(biāo)函數(shù)的連乘變?yōu)檫B加:
4.3 求解相關(guān)參數(shù)
????????設(shè),求的最大值,可以用梯度上升的方法進(jìn)行求解,如果在前面加上一個負(fù)號,則就轉(zhuǎn)化為梯度下降。在這里用梯度上升法求解系數(shù)??:
?其中,為學(xué)習(xí)率。對目標(biāo)函數(shù)求梯度、即求導(dǎo)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ??
其中:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
將其帶入原式可得:
?
5.實列分析
相關(guān)數(shù)據(jù)如下:
| fbs | restecg | thalach | exang | 0ldpeak | sl0pe | ca | thal | target |
| 0 | 1 | 168 | 0 | 1 | 2 | 2 | 3 | 0 |
| 1 | 0 | 155 | 1 | 3.1 | 0 | 0 | 3 | 0 |
| 0 | 1 | 125 | 1 | 2.6 | 0 | 0 | 3 | 0 |
| 0 | 1 | 161 | 0 | 0 | 2 | 1 | 3 | 0 |
| 1 | 1 | 106 | 0 | 1.9 | 1 | 3 | 2 | 0 |
| 0 | 0 | 122 | 0 | 1 | 1 | 0 | 2 | 1 |
| 0 | 2 | 140 | 0 | 4.4 | 0 | 3 | 1 | 0 |
| 0 | 0 | 145 | 1 | 0.8 | 1 | 1 | 3 | 0 |
| 0 | 0 | 144 | 0 | 0.8 | 2 | 0 | 3 | 0 |
| 0 | 0 | 116 | 1 | 3.2 | 1 | 2 | 2 | 0 |
| 0 | 1 | 125 | 0 | 1.6 | 1 | 0 | 2 | 1 |
| 1 | 0 | 136 | 1 | 3 | 1 | 0 | 3 | 0 |
5.1 讀取數(shù)據(jù)(excel文件)
data=xlsread('D:\桌面\data.xlsx')返回:發(fā)現(xiàn)數(shù)據(jù)直接從不是標(biāo)題的第一行開始讀取了
5.2 分離數(shù)據(jù)集
正式介紹之前補(bǔ)充一點東西
????????行數(shù) =?size(data,1)
????????列數(shù) =?size(data,2)
好,開始進(jìn)入正題
此為通過比例確定,選擇多少行數(shù)據(jù)作為測試集
num=round(0.8*size(data,1));%取整個數(shù)據(jù)0.8的比例訓(xùn)練此為,選出相應(yīng)比例的數(shù)據(jù)作為測試集
train_data=data(1:num,:)此為,將剩余數(shù)據(jù)作為驗證集
test_data=data(num+1:end,:)分離測試集的x和y
n=size(data,2) train_y=train_data(:,n); %確定y所對應(yīng)的數(shù)據(jù) train_x=train_data(:,1:n-1); %除去y將剩余的數(shù)據(jù)都?xì)w于x同理分離驗證集的x和y
test_y=test_data(:,n); test_x=test_data(:,1:n-1);5.3 求解前設(shè)定
詳看上面過程公式4.1的分類函數(shù)的解析
train_x1=[ones(size(train_x,1),1),train_x];%在基礎(chǔ)上增加常數(shù)項 test_x1=[ones(size(test_x,1),1),test_x]; w=zeros(size(train_x1,2),1); lr=0.001;%學(xué)習(xí)率5.4 求解目標(biāo)函數(shù)
pred_f= train_x1*w; %預(yù)測出的方程式取值 pred_y=1./(1+exp(-pred_f)); %Sigmoid函數(shù) d_w=(train_y-pred_y)'*train_x1; w=w+lr*d_w';返回:
5.5 預(yù)測
pred_y=1./(1+exp(-test_x1*w)) %%Sigmoid函數(shù)預(yù)測出的y返回:
5.6 預(yù)測分類
fenlei=(pred_y>=0.5)返回:
5.7 準(zhǔn)確率
accu=1-sum(abs(fenlei-test_y))./length(test_y)返回:
我們用預(yù)測的和原始數(shù)據(jù)對比一下,確實是只對了一個
6.matlab自帶函數(shù)
fitglm?
官方文檔:Create generalized linear regression model - MATLAB fitglm- MathWorks 中國
Create generalized linear regression model?創(chuàng)建廣義線性回歸模型
mdl = fitglm(x,y,'distribution','binomal')? 構(gòu)建二項式?logistic模型
接下來我們再對上述數(shù)據(jù)進(jìn)行擬合
數(shù)據(jù)集劃分部分就不重復(fù)了
GM= fitglm(x,y); y_p = predict(GM,x_t); fenlei=(y_p>=0.5) accu=1-sum(abs(fenlei-y_t))./length(y_p)返回:
可以發(fā)現(xiàn)和上面結(jié)果一致。
線性回歸結(jié)果分析:
1.??回歸系數(shù)置信區(qū)間應(yīng)不包含零點
2.??stats統(tǒng)計量:
1)?:? ??的值越接近 1,變量的線性相關(guān)性越強(qiáng),
2)F?:? ? 當(dāng) F > F1-α(m,n-m-1) ,即認(rèn)為因變量 y 與自變量?x1,x2,...,xm?之間有顯著的線性相關(guān)關(guān)系;
? ? ? ? ? ? ? ? 否則認(rèn)為因變量 y 與自變量?x1,x2,...,xm?之間線性相關(guān)關(guān)系不顯著。
3)p?:? ?若 p < α(α 為預(yù)定顯著水平),則說明因變量 y 與自變量?x1,x2,...,xm之間顯著地有線性相關(guān)關(guān)系。
4)??? ? 主要用來比較模型是否有改進(jìn),其值越小說明模型精度越高。
本次就到這里了,如果有錯誤的話及時聯(lián)系我進(jìn)行改正哦,謝謝。
總結(jié)
以上是生活随笔為你收集整理的Logistic回归——二分类 —— matlab的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: esp8266手机端网络调试助手_esp
- 下一篇: 机器学习之线性回归(matlab)