熱線電話:13121318867

登錄
首頁精彩閱讀邏輯回歸算法學習與思考
邏輯回歸算法學習與思考
2018-03-04
收藏

邏輯回歸算法學習與思考

本文是作者對于邏輯回歸算法的學習和思考,主要介紹:邏輯回歸的算法介紹、邏輯回歸的數學原理、邏輯回歸的實際應用、邏輯回歸的總結以及網絡安全場景預測,歡迎大家參考討論。

邏輯回歸的算法介紹

邏輯回歸(Logistic regression)是機器學習分類算法的其中一種,核心思想是利用現有數據對分類邊界建立回歸方程,以此進行分類?;貧w可以理解為最佳擬合,是一種選擇最優分類的算法。

邏輯歸回中會有一些新詞匯需要理解。

h函數: 根據輸入的數據預測類別的函數,Andrew Ng的公開課中稱為hypothesis function。

j函數: 我們需要一個機制去評估我們的h函數的好壞,j函數的作用是評估h函數的好壞,一般這個函數稱為損失函數(loss function)或者錯誤函數(error function)。

邏輯回歸的數學原理

h函數相關(預測函數)

首先,我們先看看邏輯回歸的預測函數,h函數!

其中含有θ (又稱:theta)的變量為(當x0=1時,可以進行矩陣變換):

h函數的原型函數為sigmoid函數,展示如下:

sigmoid方程的圖形如下,sigmoid函數的取值范圍為 (0,1)

這里進行下小結,邏輯回歸的預測函數使用sigmoid函數作為原型函數,然后對sigmoid函數的x進行替換,替換為一個多元一次方程。其中多元一次方程的θ為我要尋找最優組合的內容。

j函數相關

j函數的目標就是找到一組最佳θ,使得J(θ)的值最小。

我們可以利用梯度下降算法來求得J(θ)的值最小,根據梯度下降法可得θ的更新過程。j=0 時,代表更新j向量的第0分量,j=1 時,代表更新j向量的第1分量,以此類,為了方便理解,可以把j看成數組vector_j,j=0,就是更新vector_j[0]。α為學習步長。

經過一些數學推導的最終形式如下(推導過程為對θ求偏導數)。

ps:xj為x向量的第j分量,還可以理解為x數組的第j項,其實下圖是對θ數組的第j項進行更新的算式,然而真正代碼角度是對整個θ數組進行更新,也就是下下圖的樣子。

當我們把上式向量化處理就得到了代碼可以處理的形式。

對比著代碼看(代碼出自《機器學習實戰》)

這里進行下小結,我們為了尋找最佳的θ組合,設置了J(θ)函數,我們利用已知數據(建模的訓練數據)來尋找最優的θ組合使得J(θ)最小,而我們找最優θ組合的算法為梯度下降算法。

邏輯回歸的實際應用

目前單機使用機器學習算法的python庫為sklearn庫,實例如下。

使用該模型,需要手工調整函數的參數,這個需要對算法進行理解。

# !/usr/bin/env python
# -*- coding: utf-8 -*-
fromsklearnimportlinear_modelfromsklearn.metricsimportclassification_reportfromsklearn.metricsimportprecision_recall_curve,roc_curve,auc
defmain():train_data=[]train_result=[]foriinopen(‘train_data.txt’).readlines():”‘ 29119 3.440948 0.078331 1 前三位為訓練數據,最后一位為訓練結果 ‘”r=i[:–2].split(‘\t’)train_data.append(r[:3])train_result.append(r[–1])
    clf=linear_model.LogisticRegression(max_iter=10000,C=1e5)
    clf.fit(train_data,train_result)
    
    print‘輸出預測結果’
    printclf.predict([[68846,9,0.6]])
    
    print‘輸出預測概率分布’
    printclf.predict_proba([[68846,9,0.6]])
    
    print‘decision function的系數’
    printclf.coef_
    
    print‘decision function的截距’
    printclf.intercept_
輸出結果為

邏輯回歸的總結

Logistic Regression算法作為一個二分類算法,主要解決的是線性可分的問題,對于多分類算法,可以利用Softmax Regression算法。

Softmax Regression是一般化的Logistic Regression,可以把Logistic Regression看成Softmax Regression的特例。

那么Softmax Regression和Logistic Regression該怎么選擇呢?參考Stanford的文章的內容。

Softmax 回歸 vs. k 個二元分類器

如果你在開發一個音樂分類的應用,需要對k種類型的音樂進行識別,那么是選擇使用 softmax 分類器呢,還是使用 logistic 回歸算法建立 k 個獨立的二元分類器呢?

這一選擇取決于你的類別之間是否互斥,例如,如果你有四個類別的音樂,分別為:古典音樂、鄉村音樂、搖滾樂和爵士樂,那么你可以假設每個訓練樣本只會被打上一個標簽(即:一首歌只能屬于這四種音樂類型的其中一種),此時你應該使用類別數 k = 4 的softmax回歸。(如果在你的數據集中,有的歌曲不屬于以上四類的其中任何一類,那么你可以添加一個“其他類”,并將類別數 k 設為5。)

如果你的四個類別如下:人聲音樂、舞曲、影視原聲、流行歌曲,那么這些類別之間并不是互斥的。例如:一首歌曲可以來源于影視原聲,同時也包含人聲 。這種情況下,使用4個二分類的 logistic 回歸分類器更為合適。這樣,對于每個新的音樂作品 ,我們的算法可以分別判斷它是否屬于各個類別。

現在我們來看一個計算視覺領域的例子,你的任務是將圖像分到三個不同類別中。(i) 假設這三個類別分別是:室內場景、戶外城區場景、戶外荒野場景。你會使用sofmax回歸還是 3個logistic 回歸分類器呢? (ii) 現在假設這三個類別分別是室內場景、黑白圖片、包含人物的圖片,你又會選擇 softmax 回歸還是多個 logistic 回歸分類器呢?

在第一個例子中,三個類別是互斥的,因此更適于選擇softmax回歸分類器 。而在第二個例子中,建立三個獨立的 logistic回歸分類器更加合適。

網絡安全場景下的實踐

邏輯回歸算法作為一個二分類機器學習算法,主要優勢是學習速度快,算法好理解,預測速度快等特點,并且神經網絡在神經元上也是采用的是邏輯回歸算法,因此在這個深度學習的大背景下,安全人員還是要學習邏輯回歸算法。

對于在安全攻防上使用邏輯回歸算法,我們先要明白邏輯回歸算法的本質:邏輯回歸是分類算法。

吸星是安全在機器學習實踐上一個非常好的例子,由于吸星使用的是樸素貝葉斯分類算法,那么吸星能不能使用邏輯回顧呢?效果如何呢?這是值得實踐的。

異常流量識別,由于瞬時流量或者流量區間中會存在非常多的屬性,而且異常流量識別屬于二分類,邏輯回歸對于異常流量監測問題,這也是非常值得實踐的。

網站異常URL識別,對于一個網站,URL的形式具有一定特征的,那么如果被種植了webshell,那么webshell的URL可能會與正常URL存在差異,因此利用此邏輯回歸也是能解決這類問題的。

其實總結起來就是,只要每一條數據可以有多個屬性,就可以利用邏輯回歸。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢