👩‍💻LEARN : ML&Data 91

[모두의 딥러닝] #4-14. 모델 성능 향상시키

#4-14. 모델 성능 향상시키기 모델을 만들고 학습셋 - 테스트셋으로 나누어 성능을 확인해보았다 (k겹 교차검증 등등) 단순히 성능을 확인만 하는 것이 아니라 동일한 데이터 셋으로 성능을 향상시킬수도 있다 ㅇㅅㅇ! 이를 위해선 앞으로 다음과 같은 절차가 필요하다. 1. 학습셋-검증셋(new!)-테스트셋 - model.fit() 함수에 validation_split 넣어주기 : model.fit(X_train, y_train, epoch=50, batch_size = 500, validation_split = 0.25) #학습셋의 25%라는 의미 2. 모델 업데이트 - 가장 성능이 좋은 모델을 확인하기 위해 에포크 마다 모델의 정확도 기록하기 a. 모델 저장경로 정하기 : modelpath = '경로/{..

[모두의 딥러닝] #4-13. 모델 성능 검증하기

앞서 모델 만들기 까지는 1. 우선 모델을 만들고 (모델 레이어 설정, 오차함수 및 경사하강법 설정) 2. epoch 만큼 모델을 실행해서 history에 저장했다. 이젠 학습셋과 검증셋을 분리하여 이게 진짜 ...괜찮나...? 확인해봐야 한다. #4-13. 모델 성능 검증하기 우선 이번에도, 실습을 하면서 새로운 개념을 익히는 것이기 때문에 먼저 따라해보고 새로 배운 내용 + 기억해야할 내용 위주로만 정리해보려고 한다. #라이브러리 가저오기 import pandas as pd from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense #data가져오기 !git clone https://github.com..

[모두의 딥러닝] #4-12 다중분류

#4-12 다중분류 binary와 다르게 3개 이상으로 분류하는 것이 필요할 경우 다중분류를 사용해야 한다. 사용하는 방법이 엄청나게 다르진 않지만 미묘~ 하게 다르며 몇가지 이해하고 가야할 내용들이 있다. 일단 먼저 분석할 준비를 한다. #필요한 라이브러리 가져오기 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import pandas as pd import seaborn as sns import matplotlib.pyplot as plt #data가져오기 !git clone https://github.com/taehojo/data.git df = pd.read_csv('./data/iri..

[모두의 딥러닝] #4-11. 데이터 다루기 : 피마 인디언 데이터 예측하기

#4-10. 데이터 다루기 피마 인디언 데이터를 바탕으로 diabetes 를 예측하는 모델을 만들어보자 먼저 데이터가 어떤 상황인지 확인해보자 1. 데이터 조사 #라이브러리 불러오기 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns #데이터 불러오기 !git clone https://github.com/taehojo/data.git df = pd.read_csv('./data/pima-indians-diabetes3.csv') df.head(5) Cloning into 'data'... remote: Enumerating objects: 21, done. remote: Counting objects: 100% (21/21)..

[모두의 딥러닝] #4-10. 딥러닝 모델 설계하기

#4-10. 딥러닝 모델 설계하기 기존에 함께 봤던 폐암 수술 환자 생존율 예측하기 딥러닝 모델을 바탕으로 지금까지 배워온 것을 정리해보자. 1. 환경 준비 # 텐서플로의 케라스 API에서 필요한 함수들을 불러옴 from tensorflow.keras.models import Sequential # 데이터를 다루는 데 필요한 라이브러리를 불러옵니다. from tensorflow.keras.layers import Dense # 데이터를 다루는 데 필요한 라이브러리를 불러옵니다. import numpy as np 2. 데이터준비 !git clone https://github.com/taehojo/data.git # 깃허브에 준비된 데이터를 가져옵니다. # 수술 환자 데이터를 불러옵니다. Data_set =..

[모두의 딥러닝] #3-8. 오차역전파 : 은닉층 오차 수정과 계산

#2-8. 오차역전파 1. 은닉층의 오차 수정하기 은닉층에 있는 가중치 w(11)을 업데이트 해보자. W(t+1)=W * t ​− ∂오차/∂W​ 이므로 w11(t+1)=w11* t ​− ∂오차 Y out /∂w11 이 때 Y h이 아닌 Y out​인 이유는, Yh 는 은닉층 안에 있기 때문에 그 값을 알 수 없기 때문이다. 알 수 있는 것은 출력층에 있으므로 Y out에서 시작해야 한다. ∂오차 Y out /∂w11 은 아래와 같이 알아볼 수 있다 (출력층과 유사) 모든 것은 같지만 yh1으로 미분을 진행해야 한다. 이는 아래와 같이 계산할 수 있다. 2. 은닉층 오차 계산법 즉 이를 바탕으로 출력층과 은닉층의 오차 업데이트를 정리해보면 아래와 같다. 지금까지 7차과정을 착실하게 밟은 문과생도 이해할 수..

[모두의 딥러닝] #3-8. 오차역전파 : 출력층 가중치 확인까지

퍼셉트론의 한계, 은닉층에 있는 가중치를 자체적으로 학습하는 방법이 없었으나 이를 해결한 것이 제프리 힌튼의 오차역전파이다. 간단하게 정리해보자면, 한번 x 입력층에서 y 출력층까지 순서대로 계산해 각 가중치의 초기값을 확인한 다음, 이 초기값의 값과 실제값을 비교하며 오차를 수정해나가는 과정이다. 그 과정에서 은닉층에 있는 가중치들을 y 출력층의 최종값으로부터 역계산(오차공식+편미분)해나가야 한다. 이 때 활성화 함수로 사용된 시그모이드 함수를 계속 미분하게 되면 0.**이 나와 계속 곱하다보면 0에 수렴하는 문제점이 있어 이를 해결하기 위해 ReLu함수를 사용한다. 이렇게 정리해놓으면 개념적으론 이해가 되었는데, 이 과정에서의 수식들이...꽤나 골치가 아프다... 비록 이 책이 매우매우 친절한 편이지..

[모두의 딥러닝] #2-7. 퍼셉트론

#2-7. 퍼셉트론과 인공지능의 시작 1. 퍼셉트론이란 퍼셉트론 : 인공신경망 연구로 입력값을 여러개 받아 출력을 만드는데, 이 때 입력 값에 가중치를 조절할 수 있게 만들음 아달라인 : 퍼셉트론에 경사하강법을 도입해 최적의 경계선을 그릴 수 있게 함. 아달라인이 추후 발전하면서 로지스틱 회귀 알고리즘도 생겨남 2. 퍼셉트론의 과제 : XOR문제 논리연산에서 논리합(OR), 논리곱(AND),배타적논리합(XOR)을 좌표평면에 나타내고 선을 그어 구분할 시 퍼셉트론의 한계가 XOR의 논리연산에서 1과 0 을 구분할수 없다는 것을 확인할 수 있음 논리연산 논리곱(AND) x1 = 1 AND x2 = 1 : 1 x1 x2 결과값 0 0 0 0 1 0 1 0 0 1 1 1 논리합(OR) x1 = 1 OR x2 =..

[모두의 딥러닝] #2-6. 로지스틱 회귀 모델

로지스틱 회귀, 결론만 생각하면 y가 범주형으로 나뉘는 (참과 거짓 등)걸 예측하는 것인데 이걸 수학적으로 이해하려니 쉽지가 않다. 시그모이드 함수는 그냥 존재만 알고 이해할 생각을 안하던 함수인데 ...! 이해를 안하고 그냥 하려니까 찝찝한데 이해하기가 쉽지 않다..... #2-6. 로지스틱 회귀 모델 1. 정의 데이터를 설명하는 적절한 선을 그려가는 과정이나, 참(1)과 거짓(0) 사이를 구분하는 s 자 형태의 선을 그어주는 과정이다 2. 시그모이드 함수 시그모이드 함수를 이용하여 로지스틱 회귀를 푸는 공식 a = 그래프의 경사도를 결정 b = 그래프의 좌우이동을 의미 a값과 b값에 따라 오차가 변함 a에 따라 변화하는 오차 a가 작아지면 수평선에 가까운 그래프가 되어 오차가 무한대로 커짐 a가 커지..

[모두의 딥러닝] #2-5. 선형회귀모델 : 먼저 긋고 수정하기

#2-5. 선형회귀모델 : 먼저 긋고 수정하기 1. 경사 하강법의 개요 포물선모양의 함수 그래프에서 최소값(맨 꼭지점)을 갖는 함수는 x와 평행하는 평행선 함수로 기울기가 0이다. 즉 미분 값이 0 인 지점을 찾으면 최솟값을 찾을 수 있다. 미분값이 0인 지점을 찾는 법 특정 x(a1이라 하자)에서의 미분(=기울기)을 구한다 구한 기울기의 반대방향(+-)으로 얼마간 이동시킨 a2에서 미분을 구한다 앞에서 구한 미분값이 0이 아니면 앞 과정을 반복한다 > 기울기가 0인 한 점으로 수렴 경사하강법이란 오차의 변화에 따라 이차 함수 그래프를 만들고 적절한 학습률을 설정해 미분 값이 0인 지점을 찾는 것 학습률 : a값을 얼마나 이동할 지 이동 거리를 정해주는 것. 적절히 바꾸면서 최적의 학습률을 찾아가야 함 ..