日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

逻辑回归是个什么逻辑

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逻辑回归是个什么逻辑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說到邏輯回歸,可以先回顧下前期的文章《線性回歸》。線性回歸能夠對連續值進行預測,如根據面積對房價進行預測。而在現實生活中,我們還有常見的另一類問題:分類問題。最簡單的是二分類問題,即是與否的問題,如得病與否,交易是否合理,能否發放貸款,郵件是否垃圾郵件等。

邏輯回歸(logistic regression),雖然名字上有“回歸”兩字,但它實際應用的是處理分類問題(classification)。它的核心思想是:如果回歸的結果輸出是一個連續值,而值的范圍是無法限定的,那么想辦法把這個連續結果值映射為可以幫助我們判斷的結果值,從而進行分類。所以,從本質上講,邏輯回歸是在回歸的基礎上,進行了特殊的改進,而被用于分類問題上。

下面用一個最簡單的例子來說明邏輯回歸的使用過程。使用的是非常著名的IRIS數據集,也稱為鳶尾花數據集。下載地址為:http://archive.ics.uci.edu/ml/。數據集包含150條數據,每條數據包含4個屬性,分別是花萼長度(sepal length)、花萼寬度(sepal width)、花瓣長度(petal length)、花瓣寬度(petal width),分為Setosa、Versicolour,Virginica這3個種類,每類50條數據。

由于這個數據集是三分類問題,為了簡便起見,重在理解邏輯回歸的原理,這里對數據集進行了裁剪,只選取Setosa、Versicolour這兩個種類進行二分類。

下面分別從策略、模型、算法三個方面給出問題解決框架。
(1)模型
模型就是所有學習的條件概率分布或決策函數。在這個實例中,我們已知4個影響戈尾花分類的變量花萼長度(sepal length)、花萼寬度(sepal width)、花瓣長度(petal length)、花瓣寬度(petal width),令其分別為x1,x2,x3,x4。我們構建的模型認為是這4個變量的線性組合,于是得到:

z=θ0+θ1x1+θ2x2+θ3x3+θ4x4
這里我們構建的是一個線性回歸模型,前面提到,邏輯回歸需要將線性模型進行一下映射,從而能用于分類。這里的映射函數或者叫分類器叫做sigmoid函數。詳細的介紹見前期文章《 sigmoid函數》。

通過sigmoid函數分類器,我們構建的邏輯回歸模型是:

P(y=1|x;θ)=11+e?z=11+e?(θ0+θ1x1+θ2x2+θ3x3+θ4x4)=11+e?θTx

(2)策略
在模型確定后,需要用一個損失函數(loss function)或代價函數(cost function)來度量預測錯誤的程度。常用的損失函數有以下幾種:

1)0-1損失函數:

L(Y,f(X))={1,Yf(X)0,Y=f(X)
2)平方損失函數:
L(Y,f(X))=(Y?f(X))2
3)絕對損失函數:
L(Y,f(X))=|Y?f(X)|
4)對數損失函數或對數似然損失函數:
L(Y,P(Y|X))=?logP(Y|X)
對于邏輯回歸模型,使用的是 對數損失函數作為代價函數,至于為什么要選取這個損失函數,以后再說。則本例中,邏輯回歸的損失函數為:
cost(y,p(y|x))={?logp(y|x)ify=1?log(1?p(y|x))ify=0

將上面的兩個表達式合并,則得到單個數據點上的log損失為:

cost(y,p(y|x))=?ylogp(y|x)?(1?y)log(1?p(y|x))
因為y只有兩種取值情況,1或0,分別令y=1或y=0,即可得到原來的分段表達式,即兩者是等價的。

全體樣本的損失函數則可表達為:

cost(y,p(y|x))=i=1m(?yilogp(yi|xi)?(1?yi)log(1?p(yi|xi)))
其中 p(y|x)由前面的邏輯回歸模型定義,令:
p(y|x)=hθ(x)=11+e?θTx
則最終的損失函數為:
cost(y,hθ(x))=i=1m(?yilog11+e?θTx?(1?yi)log(1?11+e?θTx))
(3)算法
算法是指學習模型的具體計算方法。在上述模型和損失函數定義后,剩下的就是基于訓練集 (xi,yi)來求解模型中的參數 θ。于是該問題變成了一個求解最優化問題。如果最優化問題有顯式的解析解,這個最優化問題就比較簡單。但通常解析解不存在,這就需要用數值計算的方法求解。如何保證找到全局最優解,并使得求解過程非常的高效,就成為一個重要問題。

對于該優化問題,存在多種求解方法,比較常用的有梯度下降法、牛頓法、共軛梯度法,還有啟發式算法,如模擬退火、遺傳算法、粒子群算法等。可以參考前期文章《梯度下降算法》。這里不再贅述。

(4)算例
這里直接使用scikit-learn機器學習包進行計算:

# -*- coding: utf-8 -*-from sklearn import datasets import numpy as npiris = datasets.load_iris() # 構建訓練集和測試集 iris_X_train = np.array(list(iris.data[:30]) + list(iris.data[50:80])) iris_X_test = np.array(list(iris.data[30:50]) + list(iris.data[80:100])) iris_Y_train = np.array(list(iris.target[:30]) + list(iris.target[50:80])) iris_Y_test = np.array(list(iris.target[30:50]) + list(iris.target[80:100]))from sklearn import linear_model # 構建模型 logistic = linear_model.LogisticRegression() # 擬合數據 logistic = logistic.fit(iris_X_train, iris_Y_train) # 顯示參數 print(logistic.coef_,logistic.intercept_) # 預測測試數據 print(logistic.predict(iris_X_test)) # 輸出原始數據 print(iris_Y_test)

輸出結果為:
[[-0.32346426 -1.32886149 1.94671978 0.8778639 ]] [-0.23860313]
即各參數為:
θ0=?0.23860313
θ1=?0.32346426
θ1=?1.32886149
θ3=1.94671978
θ4=0.8778639
最后邏輯回歸的分類預測結果輸出與測試集結果輸出完全一致:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]

總結

以上是生活随笔為你收集整理的逻辑回归是个什么逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。