전체 글 79

챕터 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. 데이터 준비 및 패턴 파악하기 ( 주로 그래프들을 그려가며 대..

로컬 깃랩 세팅하기

참조글은 https://ux.stories.pe.kr/161 을 참고해서 작성했다. 원래는 M1칩의 맥에서 세팅하려 했지만 실패후 정보검색을 해보니 2023.7 현재 M1 칩에서는 도커로 깃랩서버 설치가 잘 안된다고해서 리눅스로 변경했음. https://gksdudrb922.tistory.com/214 https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/6659 글에서는 CentOS 7 환경에서 작업을 했지만 Rocky 리눅스 9.x 버전에서 작업을 진행했다. 참조글대로 하면 잘되는데 몇가지 시행착오를 겪은걸 적어봤다. 1. 설치중 "일치하는 인수가 없습니다: policycoreutils-python " 이 메세지 나오면 policycoreutils-pytho..

개발환경 구축 2023.07.14

챕터 03 - 1

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

챕터 02 - 2

챕터 2-1 에서는 주어진 샘플을 훈련세트와 테스트세트로 나누어야 하는 이유와 랜덤처리를 위해 넘파이 라이브러리를 사용해봤다. 하지만 아직 데이터 입력 단계에서 할 일이 좀 더 남아있다. 사실 지금까지 한 작업은 무게와 길이의 스케일 범위가 틀리기때문에 제대로 작업한건 아니다. 그걸 맞춰가는 작업을 살펴보자. 문제 : 생선 길이, 무게로 도미 알아내기 + 수상한 도미 한마리 (2-1장에서 계속 이어짐) (아직도 이 문제는 해결이 안됐다. ㄷㄷㄷ) 2.1에서 작업한 모델로 수상한 도미 데이터(길이25cm, 무게 150g) 한마리를 예측해보니 빙어로 나오는 문제가 발생했다. 이걸 해결해보자. 먼저 넘파이라는 효율적인 라이브러리를 배웠기 때문에 작업환경을 다시 맞춰보자. 데이터 준비 사이킷런으로 훈련 세트와 ..