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