Logistic[논리] Regression

2021. 9. 2. 03:34ai/Machine Learning

728x90

 

machine Learning model이 어떤값을 예측하는가?
-Regression(회기)   →   continuous[계속되는] value
x(시간) - 1 3 5 8 , t(점수) - 5 15 70 100

-classification(분류)  →  discrete[별개의] value
Linear Regression(선형회기)을 확장해서 classification model을 만들어 볼꺼에요!!
x(시간) - 1 3 5 8 , t(점수) - F F F T     


==  Logistic[논리] Regression 
초창기 인공지능(1960년대) 알고리즘'Perceptron[퍼셉트론]'을 발전시킨 개념
이는 뇌공학에서 따왔으며 이를 알고리즘으로 바꿨다/ 가치가있음 통과 아님 불통과
W1X1 W2X2 W3X3를 다 더한다 → Z→ 생긴게 계단이라 Step function : 값이 0보다크면1 작으면-1 

 

1. W1X1 W2X2 W3X3 입력값이 오면 다 더한다 [Linear Regression] →

2. Z(continious value) : 1의 결과값 →

3. 이 위치에 나오는 함수 , 즉 linear regration의 결과에 적용하는 함수 Activation[활성화] function

 Activation function 의 종류 : sigmoid , Relu, tanh 등등..→ 

sigmoid Activation function 의 대표적 함수로 x에 따라 y가 변환하는 함수로 y는 0 ~ 1

4. a(continious value) →

5. 임계함수 Threshold Function[결과값을 둘중하나로 분류, 연속값을 이상값으로 분류]  (step function처럼 생겼다) →

6. `y [discrete value 분류값]

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

# Logistic Regression을 다른 관점에서 한번 살펴보아요!
# 사용하는 Data Set은 mglearn이라는 module에서 가져다가 사용할께요!

# mglearn을 설치해 보아요!
import numpy as np
from sklearn import linear_model
import mglearn             #   예를 들기 괜찮은 dataset이 있다 
import matplotlib.pyplot as plt
import warnings  # warning 출력을 하지 않기위해 import

warnings.filterwarnings(action='ignore')   # warning이 출력되지 않아요!

# Training Data Set
x,y = mglearn.datasets.make_forge()
print(x)   # x는 2차원 ndarray 2개의 column이 있어요. 0번째 column이 x좌표, 1번째 column이 y좌표
print(y)   # x데이터로 표현되는 2차원 평면상의 점들이 각각 어떤값을 가지는지 알려주는 데이터.

x
y

mglearn.discrete_scatter(x[:,0], x[:,1], y)   

#점을 찍어주는(scatter) 를 그래프로 


model = linear_model.LinearRegression()  # Linear Regression Model 생성
model.fit(x[:,0].reshape(-1,1), x[:,1].reshape(-1,1))
print(model.coef_, model.intercept_)   # [[-0.17382295]] [4.5982984]

plt.plot(x[:,0], x[:,0]*model.coef_.ravel() + model.intercept_, color='r')
plt.show()

 

여기서 알수있는건 Logistic[논리] Regression  이  위 그림에서 선 이 판단기준이 될수있다 ?

 


 

 

22222222222222222222222222222222222222222222222222222222222222222222222222

 

 

 

 

 Machine Learning의 결과 model이 어떠한 값을 예측하는가 ?

-Regression(회기)   →   continuous[계속되는] value

-classification(분류)  →  discrete[별개의] value                   

 

    등 두가지 모델이 있다 . 두 모델중 어느것이든 구현하기 위해서 알고리즘을 사용할수 있는데

-Regression (Linear Regression, Logistic Regression)              !!!!!!!!!!!!!!!! 위와 비교해서 주의 다른 Regression

-Sum

-Decision Tree

-Random Forest

-Neural Network 등등 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

Logistic Regression

1. training Data Set

2.Logistic Regression

   (1)Linear Regression

   (2)classification[분류]  (activation function이용)

3.Threshold Function을 이용해서 결과값 출력

분류문제를 Linear Regression으로는 해결할 수 없나요?  네 해결할수 없어요

→ Logistic Regression으로 classificaion을 해결해야 해요!!

 

 

sigmoid (일반적으로 시그마라고 한다)

 


 

 

 

Linear Regression Model → y = Wx + b

최적의 w와 b를 구하기 위해 손실함수(loss function)을 미분해서  w,b 갱신

mean squard error
위 식의 그래프

 

Logistic Regression Model → y = 1 / 1 + exp(-1, Wx + b)

Linear Regression loss function 에서 변경

Logistic Regression Model lossfunction graph

위 graph를 보면 알다싶이 Logistic Regression Model 은 gradient descent algorism이 적용이 안된다

왜냐하면 시작을 잘못 잡으면 local Minima가 최소로잡힐수 있기 때문이다

그래서 만든것이 아래와 같다

 

 

Logistic Regression Model 의 loss function

 

Cross Entropy , log loss - Logistic Regression Model 의 loss function

 

Cross Entropy 은 binaryClassfication(이진분류) , Multinomial Classfication(다중분류) 각각 다른식이다

Cross Entropy의 원래의미는  Multinomial Classfication(다중분류) 의 lossfunction이나 편의상                                                                    binaryClassfication(이진분류) 에도 사용

 

1. Training Data Set

2. Linear Regression

3. classification (Sigmoid)

4. Cross Entropy

5. loss가 최적확인

6. 최적이면 END 아니라면 Weight, bias update"편미분"