로지스틱 회귀

· 인공지능
사이킷런 머신러닝 패키지로 널리 사용된다. Numpy, Scipy와 상호 운용되도록 설계되었다. 사이킷런의 경사 하강법이 구현된 클래스는 SGDClassifier이다. 이 SGDClassifier를 이용하여 로지스틱 회귀 문제를 해결해 보자. 사이킷런으로 경사 하강법 적용 로지스틱 손실 함수 지정 sgd = SGDClassifier(loss = 'log', max_iter=100, tol=1e-3, random_state=42) loss를 'log'로 지정한다. max_iter는 반복 횟수를 나타내는 매개변수로 100번 반복한다. random_state를 통해 난수 초깃값을 42로 설정한다. tol은 반복할 때 로지스틱 손실 함수의 값이 변경되는 정도를 컨트롤한다. 만약 tol에 설정한 값보다 적게 변경..
· 인공지능
로지스틱 회귀 뉴런 만들기 우선 __init__(), forpass(), backprop()은 앞서 만든 뉴런과 별로 다르지 않다. class LogisticNeuron: def __int__(self): self.w = None self.b = None def forpass(self, x): z = np.sum(x * self.x) + self.b return z def backprop(self, x, err): w_grad = x * err b_grad = 1 * err return w_grad, b_grad forpass에서 np.sum은 numpy모듈에서 sum이라는 메서드를 이용하여 가중치와 입력의 곱을 더하는 것이다. 훈련 활성화 함수라는 것이 추가되었기 때문에 fit()함수를 조정해야 한다...
· 인공지능
시그모이드 역할 z = b + ∑ w_i x_i로 표현할 수 있다. z는 활성화 함수를 통과하여 a가 된다. 이때 시그모이드 함수는 z를 0~1 사이의 확률 값으로 변환시켜준다. 시그모이드 함수는 오즈비 → 로짓 함수 → 시그모이드 함수를 거쳐 탄생한다. 오즈비 오즈 비는 성공확률과 실패 확률의 비율을 나타내는 통계이다. 오즈 비를 그래프로 그리면 다음과 같다. 성공 확률이 0부터 1까지 증가할 때 오즈 비의 값은 처음에는 천천히 증가하지만 1에 가까워지면 급격히 증가한다. 로짓 함수 오즈 비에 로그 함수를 취하여 만든 함수를 로짓 함수라고 한다. 로짓 함수는 p가 0.5일 때 0 이되고 p가 0과 1일 때 각각 무한대로 음수와 양수가 된다. 이제부터 logit(p)를 z라 하자 로지스틱 함수 위 식을 ..
· 인공지능
로지스틱 회귀를 제대로 이해하기 위해서는 먼저 알아볼 개념이 몇 가지 있다. 그중 하나는 퍼셉트론이다. 퍼셉트론이란? 1957년 코넬 항공 연구소의 프랑크 로젠블라트는 이진 분류 문제에서 최적의 가중치를 학습하는 알고리즘을 발표했다 이것이 퍼셉트론이다. 선형 회귀와 유사하게 직선 방정식을 사용한다. 하지만 퍼셉트론은 마지막 단 게에서 샘플을 이진 분류하기 위하여 계단 함수를 사용한다. 계단 함수를 통과한 값을 다시 가중치와 절편을 업데이트하는 데 사용한다. 위 구조를 방정식으로 표현하면 w1x1 + w2x2 + b = z이다. z가 0보다 크거나 같으면 1로, 0보다 작으면 -1로 분류한다. 이때 1로 분류되는 걸 양성 클래스, -1을 음성 클래스라고 한다. 아달린 퍼셉트론에서 조금 더 개선한 적응형 선..