Machine Learning/Basic 22

[5-3-(2)] 트리의 앙상블 - 엑스트라 트리, 그레이디언트 부스팅, 히스토그램 기반 그레이디언트 부스팅

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한것 입니다. 엑스트라 트리(Extra Tree)는 랜덤 포레스트와 매우 비슷하게 동작한다. 기본적으로 100개의 결정 트리를 훈련한다. 랜덤 포레스트와 동일하게 결정 트리가 제공하는 대부분의 매개변수를 지원한다. 또한 전체 특성 중에 일부 특성을 랜덤하게 선택하여 노드를 분할하는 데 사용한다. 랜덤 포레스트와 엑스트라 트리의 차이점은 부트스트랩 샘플을 사용하지 않는다는 점이다. 즉 각 결정 트리를 만들 때 전체 훈련 세트를 사용한다. 대신 노드를 분할할 때 가장 좋은 분할을 찾는 것이 아니라 무작위로 분할한다. 하나의 결정 트리에서 특성을 무작위로 분할한다면 성능이 낮아지겠지만 많은 트리를 앙상블 하기 때문에 과대적합을 막고 검증 세트의 ..

[5-3-(1)] 트리의 앙상블 - 랜덤 포레스트

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝을 공부하고 정리한것 입니다. 지금까지 k-최근접 이웃, 선형 회귀, 릿지, 라쏘, 다항회귀, 로지스틱 회귀를 배웠고 확률적 경사 하강법 알고리즘을 사용한 분류기와 결정 트리 모델까지 공부했다. 테스트세트 사용 없이 모델의 성능을 평가하는 교차 검증과 하이퍼 파라미터 튜닝까지 공부했다. 지금까지 배운 머신러닝 알고리즘은 정형 데이터에 잘 맞는다. 그중에 정형 데이터를 다루는 데 가장 뛰어난 성과를 내는 알고리즘이 앙상블 학습(ensemble learning)이다. 이 알고리즘은 대부분 결정 트리를 기반으로 만들어져 있다. 이제 사이킷런에서 제공하는 정형 데이터의 끝판왕인 앙상블 학습 알고리즘을 알아보겠다. 랜덤 포레스트 랜덤 포레스트(Random Forest)..

[5-2] 교차 검증과 그리드 서치

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝을 공부하고 정리한 것입니다. 지금까지 훈련세트에서 모델을 훈련하고 테스트 세트에서 모델을 평가했다. 테스트 점수를 통해 일반화 성능을 가늠해 볼 수 있었다. 그런데 테스트 세트를 사용해 자꾸 성능을 확인하다 보면 점점 테스트 세트에 맞추게 된다. 이전 까지는 문제를 간단히 하려고 테스트 세트를 사용했다. 하지만 테스트 세트로 일반화 성능을 올바르게 예측하려면 가능한 한 테스트 세트를 사용하지 말아야 한다. 모델을 만들고 나서 마지막에 딱 한번만 사용하는 것이 좋다. 검증 세트 테스트 세트를 사용하지 않으면 모델이 과대적합인지 과소적합인지 판단하기 어렵다. 테스트 세트를 사용하지 않고 이를 측정하는 간단한 방법은 훈련 세트를 또 나누는 것이다. 이 데이터를 검..

[5-1] 결정 트리

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한것 입니다. 와인을 판매하는 상황을 가정해보자. 와인 종류에는 레드 와인과 화이트 와인이 있다. 그런데 와인의 표시가 누락되어있고 캔에 인쇄된 알코올 도수, 당도 , pH 값으로 와인 종류를 구별해야 한다. 로지스틱 회귀로 와인 분류하기 import pandas as pd wine=pd.read_csv('https://bit.ly/wine-date') wine.head() 레드 와인과 화이트 와인을 구분하는 이진 분류 문제이고, 화이트 와인이 양성 클래스 이다. 즉 전체 와인 데이터에서 화이트 와인을 골라내는 문제가 되었다. wine.info() 출력 결과를 보면 총 6497개의 샘플이 있고 4개의 열은 모두 실숫값이다. Non-Null ..

[4-2] 확률적 경사 하강법

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝을 공부하고 정리한 것 입니다만약 데이터가 한 번에 준비되는 것이 아니라 조금씩 전달되는 상황이면 어떨까? 기존의 훈련 데이터에 새로운 데이터를 추가하여 모델을 매일매일 다시 훈련하면 될까? 이렇게 하면 매일 추가되는 새로운 데이터를 활용해 모델을 훈련할 수 있다. 그러나 시간이 지날수록 데이터가 늘어난다는 단점이 있다. 또 다른 방법은 새로운 데이터를 추가할 때 이전 데이터를 버림으로써 훈련 데이터 크기를 일정하게 유지하는 것이다. 이렇게 하면 데이터셋의 크기가 너무 커지지 않을 수 있다. 하지만 데이터를 버릴 때 다른 데이터에 없는 중요한 생선 데이터가 포함되어 있다면 큰일이다. 앞으로 모델이 그 생선을 예측하지 못할 것이기 때문이다. 위에 언급한 방법은 ..

[4-1] 로지스틱 회귀

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한 것입니다 이번에는 럭키백 이벤트를 예로 들어서 머신러닝 모델을 만들어볼 것이다. 럭키백은 구성품을 모른 채 먼저 구매하고 배송받은 다음에야 비로소 구성품을 알 수 있는 상품이다. 럭키백에 어떤 생선 확률이 높은지 표시를 할 것이다. 머신러닝으로 럭키백의 생선이 어떤 타깃에 속하는지 확률을 구할 수 있을까? 럭키백에 들어갈 수 있는 생선은 7개다. 이 이벤트를 잘 마치려면 럭키백에 들어간 생선의 크기, 무게 등이 주어졌을 때 7개 생선에 대한 확률을 출력할 것이다. 이번에는 길이, 높이, 두께 이외도 대각선 길이와 무게도 사용할 수 있다. 이 문제는 회귀일까 분류일까? k-최근접 이웃은 주변 이웃을 찾아줌으로 이웃의 클래스 비율을 확률이라..

[3-3] 특성 공학과 규제

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한것 입니다 다항 회귀로 농어의 무게를 어느 정도 예측할 수 있지만, 여전히 훈련 세트보다 테스트의 점수가 높다. 이 문제를 해결 하기 위해서는 하나의 특성을 사용하여 선형 회귀모델을 훈련시키는 방법이 아닌 여러 개의 특성을 사용한 선형 회귀 방법인 다중 회귀(multiple regression)방법을 사용해야 한다. 다중 회귀 이번에는 농어의 길이뿐만 아니라 농어의 높이와 두께도 함께 사용할 것이다. 또한 이전 모델처럼 3개의 특성을 각각 제곱하여 추가한다. 거기다가 각 특성을 서로 곱해서 또 다른 특성을 만들것이다. 이렇게 기존의 특성을 사용해 새로운 특성을 뽑아내는 작업을 특성공학(feature engineering)이라고 부른다 데이..

[3-2] 선형 회귀

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한 것 입니다. 만약 아주 큰 농어를 골라 무게를 예측하면 어떨까? 길이가 50cm정도 된다고 생각해보자. 앞서 만든 모델을 사용해 이 농어의 무게를 예측해보자 import numpy as np perch_length = np.array([8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0, 21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5, 22.5, 22.7, 23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5, 27.3, 27.5, 27.5, 27.5, 28.0, 28.7, 30.0, 32.8, 3..

[3-1] k-최근접 이웃 회귀

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한 것 입니다. 지도 학습 알고리즘은 크게 분류와 회귀(regression)으로 나뉜다. 분류는 앞에서 다루었는데 말 그대로 샘플을 몇 개의 클래스 중 하나로 분류하는 문제이다. 회귀는 클래스 중 하나로 분류하는 것이 아니라 임의의 어떤 숫자를 예측하는 문제이다. 예를 들면 내년도 경제 성장률을 예측하거나 배달이 도착할 시간을 예측하는 것이 회귀 문제이다. 또 이번에 만들 프로그램인 농어의 무게를 예측하는 것도 회귀가 된다. 회귀는 정해진 클래스가 없고 임의의 수치를 출력한다. k-최근접 이웃 분류 알고리즘은 예측하려는 샘플에 가장 가까운 샘플 k개를 선택하고 이 샘플들의 클래스를 확인하여 다수 클래스를 새로운 샘플의 클래스로 예측한다. k..

[2-2] 데이터 전처리

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한 것 입니다. 앞에서 만든 머신러닝 모델을 25cm,250g으로 테스트를 하면 도미가 아니라 빙어로 나온다. 그 이유는 무엇일까? 넘파이로 데이터 준비하기 fish_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0, 9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12..