혼공학습단 18

혼공학습단 10기(혼자 공부하는 머신러닝)를 끝내면서....

약 한달간의 기간은 해볼만하다고 생각하고 무작정 달려들었지만... 나름 예전에 독학으로 반정도는 봤던 책이라 다시 시작하면 쉽게 쉽게 갈 수 있을줄 알았건만 다시 들여다본 책은 하얀건 종이요 까만건 글씨인건 변하지 않았더군요. 역시 책이란건 한번 봤으면 끝까지 다시 봐야 기억에 그나마 남는거 같았습니다. 중간에 그만둔 책을 다시 보니 아주 미세한 기억만이 남아있었습니다. 또한 직장인들의 주중 저녁시간은 비어있는듯 비어있지 않은 시간임을 다시 한번 깨닫게 되었네요. 항상 출근할때는 퇴근후에 한 챕터씩 진도를 나가야지를 다짐하지만 피곤함앞에서는 장사가 없었습니다. 그래도 가끔씩 주는 선물은 큰 힘이 되었고 ㅎㅎㅎ 선물을 받았으니 어떻게든 마무리를 해야겠다는 강력한 의지로 주중에 못한 작업들은 주말에 몰아서 ..

챕터 07 - 3

이전 7챕터들 에서는 인공 신경망에 대해 배우고 텐서플로의 케라스 API를 사용하는 법과 1개 이상의 층을 추가하여 심층 신경망을 구성하고 다양한 고급 옵티마이저들을 알아보았다. 이렇게 딥러닝에서는 모델의 구조를 직접 만들어간다는 느낌이 훨씬 강하다. 이번 절에서는 케라스 API를 사용해 모델을 훈련하는데 필요한 도구들을 알아보겠다. 손실곡선 fit() 메소드로 모델을 훈련하면 무엇인가를 반환하는데 이때 반환값이 History 클래스 객체를 반환한다. History 객체에는 훈련과정에서 계산한 지표, 즉 손실과 정확도 값이 저장되어 있다. 이 값을 사용하면 그래프를 그릴 수 있다. 챕터를 진행하기 전에 이전의 패션 데이터를 로드하고 훈련 세트와 검증 세트로 나누자. 그리고 모델을 만드는 간단한 함수를 정..

챕터 07 - 2

앞 챕터에서 사용한 인공 신경망은 사실 층이 1개짜리인데도 불구하고 로지스틱 회귀보다 높은 성능을 보여줬다. 이 인공 신경망은 층을 더 추가해서 성능을 높일수 있는데 그걸 알아보자. 역시 패션 데이터를 불러와서 테스트세트와 검증세트를 분리하는것까지 수행하자. 이제 전 챕터에서 만든 모델에서 중간에 밀집층이 추가한다. 이렇게 입력층과 출력층 사이에 있는 모든 층을 은닉층이라고 부른다. 그런데 은닉층에는 활성화 함수가 포함되는데 왜냐하면 은닉층에서 선형적인 산술 계산만 수행한다면 수행 역할이 없는 셈이라서 선형 계산을 적당하게 비선형적으로 비틀어 주어야 하는데 이 역활을 활성화 함수가 수행한다. 많이 사용하는 활성화 함수 중 하나는 시그모이드이다. 그럼 시그모이드 활성화 함수를 사용한 은닉층과 소프트맥스 함..

챕터 07 - 1

이제 생선에서 벗어나 패션 아이템이라는 새로운 데이터 셋을 사용하게 됐다. 아이템 분류 문제를 기존 로지스틱 회귀로도 다시 해보고 이번 챕터에서 새로 배울 인공 신경망을 통해서도 분류를 한다음 성능을 비교해보자. 우선 데이터를 로딩하는데 패션 MNIST 데이터는 워낙 유명하기 때문에 딥러닝 라이브러리에서 이 데이터를 바로 로딩해서 쓸수 있다. 라이브러리는 텐서플로라는 아주 유명한 라이브러리를 사용했고 로딩한 데이터를 출력해보고 샘플의 타깃값 10개와 레이블당 샘플수까지 확인해봤다. 이 훈련 샘플은 60,000개나 되기 때문에 전체 데이터를 한꺼번에 사용하여 모델을 훈련하는 것보다 샘플을 하나씩 꺼내서 훈련하는 방법이 더 효율적으로 보인다. 확률적 경사 하강법이다. 훈련전에 2차원인 샘플들을 1차원으로 펼..

챕터 06 - 3

주성분 분석 차원과 차원 축소 지금까지 데이터가 가진 속성을 특성이라고 불렀는데 과일 사진의 경우 10,000개의 픽셀이 있기 때문에 10,000개의 특성이 있는 셈이다. 머신러닝에서는 이런 특성을 차원이라도 부른다. 나중에 보겠지만 이런 차원을 줄일 수 있다면 저장 공간을 크게 절약할 수 있을 것이고 차원 축소된 데이터를 지도 학습 알고리즘이나 다른 비지도 학습 알고리즘에 재사용하여 성능을 높이거나 훈련 속도를 빠르게 만들 수도 있다. 즉 이번 챕터에서 배울 내용을 미리 요약하면 그림의 10,000 개의 픽셀을 해당 이미지의 특성을 가진 몇십개의 픽셀 정보로 줄여서 그걸 가지고 다른 분야에 사용할수 있다는 것이다. 아무튼 작업을 하는 대표적인 알고리즘이 주성분 분석 (PCA)이 있다.줄여서 PCA라고도..

챕터 06 - 2

전 챕터에서는 사실 정답을 알고 있었기 때문에 정답(평균)에 가까운 사진을 찾기를 수행했었다. 하지만 진짜 비지도 학습에서는 어떤 사진이 들어있는지 알지 못한다. 이런 경우 어떻게 평균값을 구할 수 있을까? 책에선 k-평균 군집 알고리즘이 평균값을 자동으로 찾아준다고 하던데... 이 평균값이 클러스터의 중심에 위치하기 때문에 클러스터 중심 또는 센트로이드라고 불린다. 작동 알고리즘은 거리 기반 알고리즘과 비슷한데 일단 정해진 숫자만큼 그룹을 짓고 거기의 평균값을 구한다음 비교하고 좌표를 조금 이동해서 다시 정해진 숫자만큼 그룹을 짓고 평균값을 구하고 비교하고... 이런식으로 그룹내에서 변동이 없으면 종료하는 방식이다. 그럼 다시 과일사진 300개를 다시 준비하고 이 사진들을 한 평면에 쫘악 펼쳐서 배치하..

챕터 06 - 1

지금까지 데이터와 정답이 있는 지도학습을 진행했다. 이제 정답없이 자동으로 학습을 하는 비지도학습을 익혀보자. 학습 예제로 무작위의 과일 사진모음을 자동으로 분류하기를 원하는 예제인데 타깃이 없는 상태이다. 이제 숫자가 아닌 이미지를 다루는데 어떤식으로 처리해야 할까? 정답은 픽셀이다. 픽셀 하나하나를 숫자로 치환해서 다루는게 핵심이다. 또한 본문에도 나오지만 높은 의미를 갖는 값을 흰색으로 하고 낮은 의미를 가진 값(예를 들면 바탕색)은 검은색으로 바꿔서 처리를 하면 계산이 쉽게된다. 머신러닝의 기본 작업 순서를 다시 되새겨서 크게 보면 1. 데이터 준비 및 파악 2. 적절한 전처리 3. 적절한 알고리즘으로 학습 4. 학습 평가 5. 하이퍼파라미터 조정을 통해 다시 학습 반복 6. 실제 활용 1. 데이..

챕터 05 - 3

이번 챕터는 약간 정리하는 과정이 있다. 정형데이터와 비정형데이터 데이터의 종류는 크게 정형데이터와 비정형데이터로 나뉘는데 정형데이터는 즉 어떤 구조화된 데이터라는 뜻인데 머신러닝 알고리즘은 정형데이터에 잘 맞는데 그중에 정형 데이터를 다르는데 가장 뛰어난 성과를 내는 알고리즘이 앙상블 학습이고 이 알고리즘은 결정 트리 기반으로 만들어져 있다. 그럼 비정형 데이터는 어떤 알고리즘을 사용해야 할까? 신경망 알고리즘이다. 이제 앙상블 알고리즘을 학습해보자 랜덤포레스트 앙상블 학습의 대표 주자 중 대표 주자 중 하나로 안정적인 성능 덕분에 널리 사용되고 있다. 사용법은 랜덤포레스트는 각 트리를 훈련하기 위한 데이터를 랜덤하게 만드는데 이 데이터를 만드는 방법이 특이하다. 우리가 입력한 훈련데이터에서 랜덤하게 ..

챕터 05 - 2

앞에서 전체 데이터를 훈련세트와 테스트세트로 나눠서 훈련세트로 훈련한 값으로 테스트 세트를 평가하는 과정이 하나의 루틴처럼 굳어졌다. 그동안 평가 점수가 높게 나왔기 때문에 별문제가 없었지만 사실 하이퍼 파라미터를 이리저리 조정해서 테스트 세트의 점수가 높게 나오게 조정하면서 계속 학습한다면 테스트 세트로 테스트하는 의미가 약해진다. 즉 테스트 세트는 말그대로 테스트 할때 한번만 사용해야 한다. 검증세트 그럼 어떻게 해야 할까? 훈련세트를 또 나누는 방법이 있다. 전체 데이터중에서 20%를 테스트 세트로 나머지 80%를 훈련세트로 사용했는데 여기서 훈련세트에서 다시 20%를 떼어 내어 검증세트로 만든다. 위의 방법대로 와인문제를 다시 접근해보자. 훈련세트와 검증세트로 훈련하고 점수를 확인해보니 확실히 훈..

챕터 05 - 1

이제 생선 데이터를 벗어나 와인을 분류해보자. 주어진 문제는 알코올 도수, 당도, ph값으로 레드와인과 화이트와인을 분류하는 이진분류 문제이다. (화이트와인을 1로 양성 클래스) 사실 그동안의 과정을 통하면 가능한 작업이다. 와인데이터를 로드해서 데이터의 여러정보를 판다스의 기능을 이용해서 확인해보았다. 일단 데이터정보를 살펴보니 스케일이 다르기 때문에 표준화를 해야하고 데이터 안에 타겟값이 같이 들어있어 분류해내어서 써야 한다. 로지스틱 회귀를 써서 잘 분류까지 진행되는 작업이다. 하지만 위 내용은 책에서는 일반인이 계수와 절편값들이 의미하는 바를 이해하지 못하기 때문에 남들에게 좀 더 설명하기 쉬운 다른 알고리즘을 쓰는것으로 나온다. 즉 일반 순서도의 결정처리처럼 처리되게 하는 결정트리 알고리즘을 쓰..

챕터 04 - 2

책에서는 시나리오 예를 들어 잘 설명을 했는데 결론은 책 초반에는 데이터가 확정되어 있는 상태에서는 학습하고 결론을 끌어냈는데 이번 챕터에서는 훈련할 데이터가 계속 증가된다면 어떻게 처리할까이다. 앞에서 훈련한 모델을 버리지 않고 새로운 데이터에 대해서만 조금씩 더 훈련하는걸 점진적 학습이라고 부른다. 이런 점진적 학습 알고리즘에 대표가 확률적 경사 하강법이라는 것이다. 개념적으로 접근해보자면 확률적 경사 하강법이라는 문장에 여러 힌트가 있다. 일단 경사 하강법이라는 문장은 경사를 따라 내려가는 방법 (목표점을 향한 기울기정도로 이해) 어떤 목표에 도달하기 위해 경사를 급하게 주면 목표를 지나칠수도 있기 때문에 천천히 조금씩 내려와야 한다. 하지만 샘플을 하나하나 학습해서 순차적으로 경사를 구하는게 아닌..

챕터 04 - 1

박스안에 있는 것이 7개의 물고기중에 어떤것일까? 라는 문제 즉 각 생선별로 확률이 있고 전체 확률이 100%가 되어야 하는 문제 일종의 다중분류 문제이다. 물고기의 5개의 특성으로 7개의 생선으로 분류하는 과정을 다시 암기로... ㅎㅎ 1. 데이터 준비 및 데이터 패턴 파악하기 ( 주로 그래프들을 그려가며 대략적인 추세 파악 ) 2. 만약 스케일이 안맞는 데이터들이라면 스케일 맞추기 3. 훈련세트와 테스트세트 준비하기 4. 특정 알고리즘 (여기선 k-최근접 이웃 알고리즘 ) 으로 훈련하기 5. 과소적합, 과대적합 파악해서 파라미터 조정하기 6. 평가 7. 예측 및 사용하기 역시 시작은 만만한 k-최근접 이웃 모델로... 1. 데이터 준비 및 데이터 패턴 파악하기 ( 주로 그래프들을 그려가며 대략적인 추..

챕터 03 - 3

이제 다항 회귀로 농어의 무게를 어느정도 예측할 수 있지만, 좀 더 손을 봐서 결정계수와 예측율을 높여보자. 사실 3-2 에서 주어진 데이터는 농어의 길이말고 높이와 두께 데이터도 있는데 이걸 활용하면 더 높은 효과를 낼수 있을거라 한다. 3-2에서 하나의 특성을 사용하여 선형회귀 모델을 훈련시켰는데 그 특성을 여러개로 늘려서 다항회귀를 사용했었고 여러 개의 특성을 사용한 선형회귀를 다중회귀라고 해서 차이가 있다. 이번 챕터에서는 길이, 무게, 높이 뿐 만아니라 3개의 특성을 각각 제곱해서 추가하고 거기다가 각 특성을 서로 곱해서 또 다른 특성을만든다고 함. 이렇게 기존의 특성을 사용해 새로운 특성을 뽑아내는 작업을 특성 공학이라고 한다. 또한 이번에는 넘파이보다 좀 더 데이터 분석기능(주로 행렬)이 강..

챕터 03 - 2

머신러닝의 지도학습을 계속 익히고 있는중이다. 앞의 학습과정을 정리하면 (과정이 점점 늘고있다 ㅡㅡ;;;) 1. 데이터 준비 및 데이터 패턴 파악하기 ( 주로 그래프들을 그려가며 대략적인 추세 파악 ) 2. 만약 스케일이 안맞는 데이터들이라면 스케일 맞추기 3. 훈련세트와 테스트세트 준비하기 4. 특정 알고리즘 (여기선 k-최근접 이웃 알고리즘 ) 으로 훈련하기 5. 과소적합, 과대적합 파악해서 파라미터 조정하기 6. 평가 7. 예측 및 사용하기 앞의 과정을 거친 모델을 사용중에 예측 할 데이터로 다시 예측을 해보는데 실데이터와 예측데이터와 큰 차이가 발생했다면? 그럼 모델 사용에 또 뭔가 수정할 부분이 생겼다는 말이다. 그걸 살펴보자. 1. 데이터 준비 및 패턴 파악하기 ( 주로 그래프들을 그려가며 대..

챕터 03 - 1

미리 결론부터 말하면 이번 챕터도 머신러닝의 학습과정이 익숙해지는 연습이다. 또한 앞의 두 챕터는 무게와 길이로 도미인지 빙어인지 분류하는 작업이었고 이번 챕터는 주어진 데이터로 농어의 무게를 예측하는 문제를 풀어나가는 챕터이다. 즉 이번 챕터는 특정값을 예측하는 문제(회귀 regression)이다. 알고리즘 또한 1,2장에서 썼던 k-최근접 이웃 알고리즘을 여기서도 똑같이 적용해보면서 익혀보자. 전체과정을 아예 외우기 위해 여기까지 학습한 작업 순서대로 나열해보자면 1. 데이터 준비 및 데이터 패턴 파악하기 ( 주로 그래프들을 그려가며 대략적인 추세 파악 ) 2. 만약 스케일이 안맞는 데이터들이라면 스케일 맞추기 3. 훈련세트와 테스트세트 준비하기 4. 특정 알고리즘 (여기선 k-최근접 이웃 알고리즘 ..