참고: https://youtu.be/eOFShZfAsNQ?si=sbaQZBlrXOpip8aa
앞의 글에서 배운 Logistic Regression 이론은 상부 그림과 같다. 테스트 데이터를 통해 선형회귀식을 구하고 이 결과를 sigmoid 함수에 넣어서 그 확률을 테스트 데이터의 정답과 비교해서 그 오차를 줄여나가는 방식이다.
이것을 Keras 에서는 아래 그림과 같이 구현한다. 그림에서 보듯이 실제 계산은 노란색 원형부분에서 다 하지만, 앞에 flatten하는 부분이 필요하다. 그럼 이를 코드로 만들어 보자.
여기서는 google colab에서 동작하였고, 샘플 데이터는 링크에서 받을 수 있다. (본인 컴퓨터에서 해도 아무 문제없다.)
입력 데이터는 피마 인디언 부족의 당뇨병 발병 여부를 조사한 데이터이다.
x_data는 임신 횟수, 혈압 등의 입력 데이터이고, t_data는 당뇨병 발병여부의 정답 데이터이다.
한가지 보고 넘어가야 할 것은 t_data를 정할 때, loaded_data[:, -1] 하지 않고 loaded_data[:, [-1]] 했다는 것이다.
두 가지의 차이는 아래와 같다.
위에서 보듯이 두가지 array의 차원이 다르다. model에 넣기 위해서는 각 요소가 하나의 array가 되어야 하기 때문에 아래 방법을 사용한다.
입력이 8개, 출력이 1개 이므로 학습할 parameter는 총 9개가 된다.
optimizer는 SGD, 경사하강법을 사용하고, loss function은 binary_crossentropy를 사용하며, 측정 값은 accuracy이다.
학습결과를 보자. 데이터의 20%는 검증용으로 사용하고, 500번 학습을 했을 때, 오차는 0.48, 정확도는 0.78가 되었다.
첫번째 학습에서 오차는 0.67, 정확도는 0.53인것에 비하면 좋아졌지만.... 신뢰할 만한 수준은 아닌 듯하다.
이렇게 숫자만 보면 감이 잘 오지 않기에... 시각화해서 보자. (중요!)
다음 글에서는 deep learning에 대해서 알아보자.
'AI > TensorFlow 학습' 카테고리의 다른 글
7. TensorFlow 2.x - Neural Network MNIST 예제 (0) | 2024.07.31 |
---|---|
6. TensorFlow 2.x - Deep Learning 소개 (0) | 2024.07.31 |
4. TensorFlow 2.x - Logistic Regression / Classification 이론 (0) | 2024.07.30 |
3. TensorFlow 2.x - Linear Regression 예제 (0) | 2024.07.29 |
2. TensorFlow 2.x - Linear Regression 이론 (0) | 2024.07.29 |