Logistic Regression(論理回帰)
10901 ワード
Logistic Regressionとは?
一般化線形モデル(Generalized Linear Model)の一種で、独立変数の線形結合を利用してイベント発生の可能性を予測する確率モデルである.
複数の変数xの行列から,dサイズを有するm個のサンプルデータと重み行列の積をsigmoid関数により0と1でバイナリ分類するモデルを生成する.
このとき損失関数は以下のようになります.
庫:トーチ、トーチ.nn, torch.nn.functional, torch.optim
DataSet:以前と同様に、
signoid関数の作成:
nn.module: nn.継承モジュールは、クラスで線形関数とSigmoid関数を定義し、オブジェクトとして学習できるようにします.
損失関数:torch.nn.functionalの
predictive:少数の値を1に近い値を1、0に近い値を0とする予測値
Correct prediction:実際のトレーニングの値と同じかどうかを確認し、真/偽の値を返します.この値の平均値から精度を算出する.
コード
一般化線形モデル(Generalized Linear Model)の一種で、独立変数の線形結合を利用してイベント発生の可能性を予測する確率モデルである.
論理回帰モデルの作成方法について
複数の変数xの行列から,dサイズを有するm個のサンプルデータと重み行列の積をsigmoid関数により0と1でバイナリ分類するモデルを生成する.
このとき損失関数は以下のようになります.
Pythonで実施
勉強する
庫:トーチ、トーチ.nn, torch.nn.functional, torch.optim
DataSet:以前と同様に、
torch.FloatTensor()
を使用してデータ値を格納します.データが大きい場合はmini-batchでデータセットを分類できます.signoid関数の作成:
torch.exp()
を使用して、次のsignoid関数の指数計算、直接関数の実装、またはtorch.Sigmoid
関数を使用して、数式に指数の演算値を直接代入できます.nn.module: nn.継承モジュールは、クラスで線形関数とSigmoid関数を定義し、オブジェクトとして学習できるようにします.
損失関数:torch.nn.functionalの
F.binary_cross_entropy()
関数を用いてCost関数を簡単に計算できる.評価
predictive:少数の値を1に近い値を1、0に近い値を0とする予測値
Correct prediction:実際のトレーニングの値と同じかどうかを確認し、真/偽の値を返します.この値の平均値から精度を算出する.
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
# For reproducibility
torch.manual_seed(1)
x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]]
y_data = [[0], [0], [0], [1], [1], [1]]
x_train = torch.FloatTensor(x_data)
y_train = torch.FloatTensor(y_data)
class BinaryClassifier(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(8, 1)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
return self.sigmoid(self.linear(x))
model = BinaryClassifier()
# optimizer 설정
optimizer = optim.SGD(model.parameters(), lr=1)
nb_epochs = 100
for epoch in range(nb_epochs + 1):
# H(x) 계산
hypothesis = model(x_train)
# cost 계산
cost = F.binary_cross_entropy(hypothesis, y_train)
# cost로 H(x) 개선
optimizer.zero_grad()
cost.backward()
optimizer.step()
# 20번마다 로그 출력
if epoch % 10 == 0:
prediction = hypothesis >= torch.FloatTensor([0.5])
correct_prediction = prediction.float() == y_train
accuracy = correct_prediction.sum().item() / len(correct_prediction)
print('Epoch {:4d}/{} Cost: {:.6f} Accuracy {:2.2f}%'.format(
epoch, nb_epochs, cost.item(), accuracy * 100,
))
Reference
この問題について(Logistic Regression(論理回帰)), 我々は、より多くの情報をここで見つけました https://velog.io/@uonmf97/Logistic-Regression-로지스틱-회귀テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol