Pytorch實現Logistic回歸二分類
摘要:本文主要介紹使用深度學習框架Pytorch實現簡單的Logistic回歸模型,進而實現簡單的分類問題。
一.邏輯回歸簡述
邏輯回歸實質上是線性回歸,把特徵線性求和(一階)之後再使用Sigmoid函數將結果映射到[0,1]區間,得到分類結果為1的概率大小。具體表達式如下:
h(w,x) =1/(1+exp(-(w*x+b)))
其中x為特徵向量,可以表示為[x1,x2,....,xN],的取值範圍為[0,1]表示分類結果為1的概率大小。通過公式可以看出,邏輯回歸可以理解為單層的全連接網路加上sigmoid激活函數的神經網路結構,具體如下:
其中f(x)為sigmoid函數,函數圖像為:
二.Pytorch簡述
Pytorch是一個Python優先的深度學習框架,支持GPU加速、支持動態圖構建。你可以將它理解為類似Numpy的數學庫,換句話理解,Pytorch是GPU上運行的Numpy,主要包的模塊有:torch.autograd支持動態微分;torch.nn支持建立神經網路;torch.optim定義了各種優化函數;torch.multiprocessing支持多線程;torch.utils支持數據導入或處理。詳情可以參見:http://pytorch.org
三.數據簡述
本文實現邏輯回歸的二分類,主要使用UCI的機器學習數據,German信用數據,選擇numeric類型的數據。數據地址:https://archive.ics.uci.edu/ml/machine-learning-databases/statlog/german/。 數據主要有24個屬性,兩個類別(1表示GoodMan, 2表示Bad Man).數據格式如下:(1000*25,1000組數據,24個屬性,1個類別)
四.具體實現
(1)數據預處理
對於數據主要進行去中心化和標準化處理,避免不同屬性由於數值大小不同對分類結果產生偏差。
(2)模型定義
使用Pytorch的nn模塊,定義LR模型,使用Linear定義線性網路,再使用Functional的sigmoid函數來激活,具體如下。
(3)訓練與測試
訓練過程:定義損失函數為交叉熵函數,優化演算法為SGD演算法,使用backward進行迭代優化
測試過程:
(4)結果


TAG:SDN學習小組 |