Yet Never Lose Faith

- Good to Great , Jim Collins

How To Preprocess Image Data 자세히보기

All 126

[모델 구축] 이진분류 로지스틱 회귀모델 구현하기 - 심화

이번 포스팅에서는 이전 포스팅에서 만들었던 로지스틱 회귀 모델을 좀 더 다듬어본다. STEP1. 손실함수 결괏값 추적하기 저번 포스팅에서 로지스틱 회귀모델이 경사하강법을 통해 최적의 가중치를 찾도록 구현했다. 그런데 경사하강법은 손실함수의 결괏값을 최소화하는 방향으로 가중치를 업데이트 하기 때문에 손실함수 결괏값의 추이를 보면 가중치가 잘 업데이트 되었는지, 즉 모델의 학습과정이 타당했는지 판단할 수 있다. 위 그림과 같이 우하향하는 그래프라면 손실함수의 결괏값이 감소하고 있다는 뜻이기 때문에 모델이 올바른 방향으로 학습을 진행하고 있다고 볼 수 있다. 반면에 손실함수의 결괏값이 감소하지 않는다면 모델의 학습과정에 문제가 있는 것이다. (1) 초기화 함수 추가 # (1) 초기화 함수 추가 def __in..

[모델 구축] 이진분류 로지스틱 회귀모델 구현하기 - 기본

이번 포스팅에서는 python을 사용하여 로지스틱 회귀모델을 구현해본다. 로지스틱 회귀모델 구조 훈련단계 예측단계 기능 최적의 가중치와 절편을 찾음. 예측값 계산, 향후 성능평가에 사용. 사용 데이터세트 훈련세트 테스트세트 머신러닝 모델 구현로직은 크게 훈련단계와 예측단계로 나눌 수 있다. 훈련단계는 최적의 가중치와 절편을 찾는 로직인데, 입력데이터로 훈련세트를 사용한다. 예측단계는 훈련단계에서 찾은 가중치와 절편을 사용하여 예측을 실행하는 단계이다. 이때 출력된 예측값은 모델의 성능을 평가하는데 사용한다. 입력데이터로는 테스트세트를 사용한다. 로지스틱 회귀모델의 구조를 살펴보고, 각 단계에서 어떤 함수들이 필요한지 정리해보자. 로지스틱 회귀모델은 선형함수, 활성화함수, 임계함수로 이루어져 있다. 선형함..

[모델 평가] 훈련데이터셋 나누기 (feat.train_test_split())

이번 포스팅에서는 머신러닝/딥러닝 모델의 성능평가를 위해 훈련데이터셋을 나누는 이유와 방법에 대해 알아본다. WHY ? 인공지능 모델을 구축하면 실제 상황에 적용하기 전에 성능평가를 진행해야한다. 이때 훈련데이터 세트로 학습된 모델을 다시 훈련 데이터세트로 평가하면 높은 성능이 나올 것이다(과도하게 낙관적으로 일반화 성능이 추정되었다). 그 모델에는 이미 훈련데이터 셋에 맞는 규칙이 반영되었기 때문이다. 이런 문제를 해결하기 위해 훈련 데이터셋을 훈련용 데이터와 성능평가용 데이터로 나눈 후 성능평가 단계에서는 모델 학습에 이용하지 않은 성능평가용 데이터를 사용한다. 이때 훈련용 데이터를 훈련세트(training set), 성능평가용 데이터를 테스트세트(test set)이라고 한다. CONDITIONS! ..

[데이터 탐색] 데이터 탐색에 유용한 함수 2탄 - boxplot(), unique()

이번 포스팅에서는 데이터 탐색에 쓰이는 함수 2가지를 알아본다. 샘플 데이터 로드 from sklearn.datasets import load_breast_cancer cancer = load_breast_cancer() cancer 사이킷 런에서 제공하는 위스콘신 유방암 데이터 세트를 사용했다. 유방암 데이터 세트에는 유방암 세포의 특징 10개에 대해 평균, 표준오차, 최대 이상치가 기록되어 있다. 또한 각 세포가 악성종양(1)인지 정상종양(0)인지에 대한 정보가 target 데이터에 담겨있다. boxplot() # 박스플롯 그리기 import matplotlib.pyplot as plt plt.boxplot(cancer.data) plt.xlabel('feature') plt.ylabel('value..

[모델 구축] 로지스틱 손실함수와 오류 역전파 이해하기

이번 포스팅에서는 로지스틱 회귀 모델의 손실함수인 로지스틱 손실함수에 대해서 알아보고, 가중치를 업데이트하는 식을 작성한다. 로지스틱 손실함수 로지스틱 회귀모델의 손실함수는 로지스틱 손실함수이다. 로지스틱 손실함수는 크로스엔트로피 손실함수에서 변형한 것이다. 크로스엔트로피 손실함수는 다중분류 모델을 위한 손실함수인데, 로지스틱 회귀모델이 이진분류를 위한 모델이니 다중분류 모델의 손실함수에서 파생되었다는 것이 납득이 간다. 이진분류는 크게 보면 다중분류에 속하는 개념이고, 실무에서는 같은 개념으로 보기도 하기 때문이다. 로지스틱 손실함수가 손실함수로서 자격이 있을까? 로지스틱 손실함수는 결과가 양성 클래스일 때와 음성클래스일 때로 식을 분리해서 생각할 수 있다. 양성클래스 즉, y =1 일 때는 L = -..

[모델 선정] 이진분류 알고리즘 3가지 (퍼셉트론, 아달린, 로지스틱 회귀)

이번 포스팅에서는 이진분류 알고리즘 3가지를 알아본다. 먼저 이진분류의 개념에 대해서 짚고 넘어가자. 이진분류란 임의의 샘플 데이터를 True나 False로 구분하는 문제를 말한다. 예를 들어 특정 종양 샘플이 주어졌을 때 이 종양이 양성(True)인지 음성(False)인지 판단하는 것이 있다. 이진분류 알고리즘은 퍼셉트론 → 아달린 → 로지스틱 회귀 순으로 발전했다. 이번 포스팅에서 하나씩 살펴본다. | 1. 퍼셉트론(Perceptron) 퍼셉트론은 1957년 코넬 항공 연구소의 프랑크 로젠블라트가 발표한 알고리즘으로, 이진분류 문제에서 최적의 가중치를 학습하는 알고리즘이다. 퍼셉트론의 구조를 도식화하면 아래와 같다. 퍼셉트론 이전 포스팅에서 다뤘던 선형회귀 알고리즘과 유사하다. 선형회귀 알고리즘이 선..

[모델 구축] 선형회귀 알고리즘 구현하기 (전체 소스코드 첨부)

이번 포스팅에서는 선형회귀 알고리즘을 구현한다. 선형회귀 알고리즘의 틀을 아래와 같이 정리했다. 1. 가중치 초기화 for ( 에포크 반복 ) : for ( 샘플 반복 ) : 2. 예측값 구하기 3. 가중치 업데이트 하나하나씩 살펴보고 구현해보자. | 훈련 데이터 세팅 본격적으로 알고리즘을 구현하기 전에, 훈련데이터부터 세팅해보자. 사이킷런에서 제공하는 당뇨병 데이터를 로드해서 사용한다. 다만 특성을 2개 이상 사용하면 3차원 이상의 그래프를 그려야하기 때문에 x의 특성 중 하나만 선택했다. from sklearn.datasets import load_diabetes diabetes = load_diabetes() x = diabetes.data[:,2] y = diabetes.target | STEP ..

[데이터 탐색] 데이터 탐색을 위한 파이썬 명령어 3가지

이번 포스팅에서는 기본적인 데이터탐색에 사용할 수 있는 파이썬 명령어 3가지를 다룬다. 우선, 예시에서 사용할 데이터를 세팅해보자. 사이킷런에서 제공하는 당뇨병 환자의 데이터 세트를 로드해서 사용하겠다. 로드한 데이터 셋은 diabetes라는 변수에 저장했다. from sklearn.datasets import load_diabetes diabetes = load_diabetes() | 1. numpy 배열의 shape 속성 머신러닝에서는 데이터를 넘파이 배열로 저장하는 경우가 많다. 넘파이 배열의 shape 속성은 배열의 크기 정보를 담고있다. 배열의 크기정보를 통해서 우리는 데이터 세트에서 샘플의 개수와 특성의 수를 파악할 수 있다. 샘플이란 데이터 1 세트를 의미하고, 특성이란 한 샘플의 여러 특징..

[모델 구축] 경사하강법을 구현하는 방법 - ② 손실함수 미분하기

머신러닝 모델 구축 단계에서 가장 중요한 일은 정확한 예측값을 계산하는 좋은 규칙(가중치)을 찾는 것이다. 우리는 좋은 가중치를 찾기 위해서 여러가지 알고리즘을 사용할 수 있는데, 이번 포스팅에서는 경사하강법을 다룬다. 경사하강법의 정의는 아래와 같다. 모델이 데이터를 잘 표현할 수 있도록 변화율을 사용하여 모델을 조금씩 조정하는 최적화 알고리즘 정의에서 보면 알 수 있듯이 경사하강법을 구현하기 위해서는 변화율을 구해야한다.그리고 변화율을 구하는 방법은 2가지가 있다. 1. 직접 변화율을 계산하는 방법 2. 손실함수를 미분하는 방법 1.직접 변화율을 계산하는 방법은 아래 더보기 포스팅에서 다뤘다. 더보기 2020/06/25 - [Deep Learning/[Books] Do it! 정직하게 코딩하며 배우는..

[모델 구축] 경사하강법을 구현하는 방법 - ① 직접 변화율 계산하기

지난 포스팅에서 지도학습의 목표는 2가지로 나뉜다고 했다. 또한 2가지 목표 중 하나인 '회귀'에서 쓰이는 대표 알고리즘이 '선형회귀'이고, 선형회귀란 1차함수의 절편과 기울기를 찾는 것이라고 했다. 자세한 내용은 더보기의 걸어둔 이전 포스팅을 확인바란다. 더보기 2020/06/22 - [Deep Learning/[Books] Do it! 정직하게 코딩하며 배우는 딥러닝 입문] - 6. 머신러닝/딥러닝 '지도학습'의 목표 2가지 - 회귀와 분류 이번 포스팅에서는 선형회귀 알고리즘에서 어떻게 절편과 기울기를 찾는지! 그 방법을 알아보도록 한다. 선형회귀에서 절편과 기울기를 찾는 방법은 여러가지가 있다. 그 중에서도 오늘은 경사하강법에 대하서 알아볼 것이다. 경사하강법은 많은 양의 데이터에 사용하기 좋은 알..