인공지능 (11) 썸네일형 리스트형 모두의 딥러닝 - 13장(과적합 피하기) 초음파 광물 예측 데이터 sonar.csv 파일을 이용해 딥러닝을 해볼 것이다.데이터는 그냥 sonar.csv를 검색하면 나오는 kaggle 사이트에서 가져왔다. 이전에 했던 것처럼 딥러닝 모델을 설계해서 작동시켰다. 200 epoch를 돌렸는데 정확도가 아예 1.0000이 나온다.이런 현상을 과적합이라고 한다.과적합을 설명하는 가장 적절한 그림이다.과적합은 모델이 학습 데이터셋 안에서는 높은 정확도를 보이지만 새로운 데이터에 적용하면 잘 맞지 않는 것이다.빨간색과 하얀색을 나누는 모델을 학습시켰다고 할 때, 과적합이 일어나면 주어진 샘플에 대해서는 정확히 맞게 선이 그어졌지만너무 주어진 데이터에만 최적화 되어있다.조금 다른 느낌이긴 하지만 이해를 돕기 위해서 개인적인 비유로 설명하자면, 1 2 3 4 .. 모두의 딥러닝 - 12장(다중 분류 문제 해결하기) 12장에서는 아이리스 품종 예측으로 다중 분류 실습을 한다.데이터는 kaggle에서 가져오고, 제대로 다운이 되어서 열리는지 확인해본다.데이터 전체를 확인해보니, 꽃의 종류별로 데이터 분포가 다른 것을 확인할 수 있다. 품종 예측을 하기 위해서 먼저 원핫 인코딩을 해야 한다.품종이 문자열로 표시되어 있기 때문에 클래스 이름을 숫자 형태로 바꿔줘야 한다. sklearn 라이브러리의 LabelEncode를 사용하면 된다.Y값이 문자열에서 0,1,2 세가지 숫자로 바뀐다.그리고 이렇게 to_categorical을 이용해 (1,0,0), (0,1,0), (0,0,1) 이렇게 Y값을 바꿔줄 수 있다. 이제 모델 설계를 해준다.다중 분류에 적절한 오차 함수 categorical_crossentropy를 사용하고, .. 모두의 딥러닝 - 11장(데이터 다루기) 11장에서는 피마 인디언 당뇨병 데이터를 분석하는 실습을 한다.데이터는 kaggle에서 가져올 수 있다. .head(5)를 이용해 데이터의 첫 5줄을 출력했다..info() 함수는 데이터에 대한 정보를 알려준다. 768개의 데이터가 있고, 9개의 열에 대해 각각 768개의 데이터가 전부 있다는 걸 확인할 수 있다. .describe() 함수는 각 열의 데이터에 대한 백분위, min, max 등 구체적인 정보를 준다.matplotlib과 seaborn 라이브러리를 이용해 각 열의 데이터들 사이의 상관관계도 볼 수 있다.발병여부를 나타내는 outcome과 가장 상관관계가 높은 항목이 glucose이다. glucose와 outcome을 따로 떼어서 보면, outcome이 1일 때는 glucose가 큰 경우가 .. 모두의 딥러닝 - 10장(모델 설계하기) 2장에서 작성했던 코드이다.Sequentail()은 딥러닝 모델을 생성하는 부분이다.생성한 딥러닝 모델에 model.add를 통해 층을 쉽게 추가할 수 있다.Dense는 층의 구조를 결정하는 함수이다.model.add(Dense(30, input_dim=16, activation='relu')) 에서 30은 노드의 개수이다.input_dim은 입력 데이터의 개수이고, activation은 activation funnction을 의미한다.keras에서는 입력층이 따로 있는 것이 아니라서 첫번째 Dense가 은닉층이자 입력층이기 때문에 input_dim을 지정해줘야 한다.그리고 마지막 은닉층이 출력층이 된다.위의 코드에서는 출력층의 출력값 개수는 1개이고, sigmoid 함수로 결정된다. model.comp.. 모두의 딥러닝 - 6장 ~ 9장(신경망) 6장부터는 신경망에 대한 내용을 다룬다.인간의 뇌에서 뉴런이 서로 연결되는 과정을 모방하여 여러 층의 퍼셉트론을연결시키고 복잡하게 조합하여 입력 값에 대한 판단을 하게 하는 것이 신경망의 원리이다. 앞에서 했던 회귀는 y = ax+b에서 a와 b를 찾는 과정이었다.퍼셉트론도 같은 원리인데 용어를 정리해보자면, y=wx+b로 표현을 하고w는 가중치(weight), b는 바이어스(bias)라고 한다.입력값 x와 w의 곱을 모두 더하고 b를 더한 값을 가중합이라고 부른다.이 가중합을 이용해 결과를 판단하는데, 이때 판단하는 함수를 활성화 함수(activation function)라고 한다.앞에서 사용했던 시그모이드 함수는 0과 1을 판단하는 대표적인 activation function이다. 퍼셉트론도 앞에서 .. 모두의 딥러닝 - 5장(로지스틱 회귀) 로지스틱 회귀는 참, 거짓 중에 하나를 결과로 내놓을 때 사용하는 회귀이다.예를 들어 공부한 시간이 독립변수 x일때 종속변수가 합격여부라고 한다면, 위의 그래프와 같이 점이 찍히고, 이를 이어주는 S자 형태의 곡선으로 예측선을 그어야 한다.이렇게 S자 형태로 그려지는 그래프 중 대표적인 것이 시그모이드 함수이다.결국 이 시그모이드 함수에서 ax+b의 a와 b의 값을 찾아내는 것이 로지스틱 회귀이다.a는 그래프의 경사도를 의미한다.b는 그래프의 좌우 이동을 의미한다. 적절한 a와 b를 찾아내기 위해서는 오차를 줄이는 방향으로 이동하며 경사 하강법을 사용해야 한다.로지스틱 회귀에서는 실제 값이 0,1 둘 중 하나이기 때문에 오차를 rmse로 구하면 안된다.그래서 이렇게 log를 활용한 식으로 오차를 구한다... 모두의 딥러닝 - 4장(경사 하강법) y = ax+b 로 선형 회귀식을 구할 때, 기울기 a에 따라 오차가 변한다. 이렇게 기울기가 커져도 오차가 커지고, 기울기가 작아도 오차가 커지기 때문에 오차가 최소인 적당한 기울기 a를 찾아야 한다.기울기 a에 따른 오차 변화를 나타낸 그래프이다.우리가 원하는 a는 오차가 최소가 되는 지점에서의 값이다.이를 찾기 위해 미분을 사용한다.a1에서 미분을 구하고, 기울기의 반대 방향으로 이동시켜서 a2에서 또 미분을 구하고, 이 과정을 반복한다.경사 하강법은 이렇게 기울기 a를 변화시키면서 최적의 a를 찾아내는 과정이다.그런데 a값을 이동시킬 때 너무 많이 이동시키면 값이 위로 튀어버린다.그래서 학습률이라는 값을 적절히 결정해줘야 한다.tensorflow를 이용해 경사하강법을 구현해본 코드이다.책이 좀 옛.. 모두의 딥러닝 - 3장(선형 회귀) 선형 회귀는 독립 변수 x를 사용해 종속 변수 y의 변화를 예측하는 작업이다.독립 변수 x가 하나인 경우 단순 선형 회귀라고 하고, x가 여러개인 경우에는 다중 선형 회귀라고 한다. 우선 단순 선형 회귀의 경우부터 살펴보면, 통계적으로 최소 제곱법이라는 표준 방식이 있다.이런 공식으로 설명 가능하다. 여러 개의 (x,y) 데이터에 대해 위의 공식을 적용하면, 선형 회귀식 y = ax+b에서 기울기 a를 구할 수 있다.y절편 b는 이렇게 구할 수 있다.이렇게 선형 회귀로 그어진 선은 데이터와의 차이가 있다.이 오차를 평가하는 방법 중 대표적인 것이 평균 제곱근 오차이다.rmse는 이 식으로 계산된다.p(i)는 예측값이고, y(i)는 실제값이다.굳이 오차를 제곱해서 더하고, 평균을 낸 뒤 루트를 씌우는 이유.. 이전 1 2 다음 목록 더보기