Logistic回帰アルゴリズム(勾配上昇)


Logistic回帰アルゴリズムは最適化アルゴリズムであり,回帰はフィッティングの過程である.Logistic回帰の考え方は,既存のデータを用いて分類境界に対して線形回帰式を確立することであり,今日,このアルゴリズムを用いて二値分類問題を解決する.
ここではSigmoidという公式を紹介します.この関数はステップ関数です.この関数を利用して二値分類問題を予測することができます.Logistic回帰分類器を使用するには、各特徴値に回帰係数を乗算し、すべての値を加算する必要があります.Sigmoid関数に代入すると,その値が0.5より大きいデータは1クラスに分類され,0.5より小さいものは0クラスに分類される.ここで最適回帰係数は種々の方法で決定でき,ここではまず勾配上昇最適化アルゴリズムを用いて回帰係数を解く方法を紹介する.testSet.txtダウンロード(抽出コード:0 dc 4)
from numpy import *

def loadDataSet():
    dataMat = []; labelMat = []
    fr = open('testSet.txt')
    for line in fr.readlines():
        lineArr = line.strip().split()
        dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
        labelMat.append(int(lineArr[2]))
    return dataMat,labelMat

def sigmoid(inX):
    return 1.0/(1+exp(-inX))

def gradAscent(dataMatIn, classLabels):
    dataMatrix = mat(dataMatIn)            
    labelMat = mat(classLabels).transpose() 
    m,n = shape(dataMatrix)
    alpha = 0.001
    maxCycles = 500
    weights = ones((n,1))
    for k in range(maxCycles):              
        h = sigmoid(dataMatrix*weights)     
        error = (labelMat - h)              
        weights = weights + alpha * dataMatrix.transpose()* error 
    return weights
最初の関数は初期化データか、dataMatは属性データセットであり、dataMatの最初の列が1に設定されているのは主に計算を容易にするためである.LabelMatはラベルデータを格納しています.2番目の関数はSigmoid関数式です.3番目の関数は最適回帰係数を計算するために最も主要な関数である.まず,特徴値を格納したリストをマトリクス形式に変換する.を使用して計算を行い、ラベルデータをカラムベクトルに変換します.Alphaはターゲットへ移動するステップ長であり,maxCyclesは反復回数であり,この2つの値を変えて最適な回帰係数を決定することができる.forサイクルの最初の2つの文は,真のカテゴリと予測カテゴリの差を計算し,次に差の方向に従って回帰係数を調整する.