Machine Learning 54

[6-2] k-평균

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝을 공부하고 정리한것 입니다. 이전 포스팅에서는 각 과일들에 있는 각 픽셀의 평균값을 구해서 가장 가까운 사진을 골랐다. 이 경우에는 사과, 파인애플, 바나나 사진임을 미리 알고 있었기 때문에 각 과일의 평균을 구할 수 있었다. 하지만 진짜 비지도학습에서는 사진에 어떤 과일이 들어 있는지 알지 못한다. 이런 경우 바로 k-평균(k-means) 군집 알고리즘이 평균값을 자동으로 찾아준다. 이 평균값이 클러스터의 중심에 위치하기 때문에 클러스터 중심(cluster center) 또는 센트로이드(centroid)라고 부른다. k-평균 알고리즘 소개 k-평균 알고리즘의 작동 방식은 다음과 같다. 1. 무작위로 k개의 클러스터 중심을 정한다. 2. 각 샘플에서 가장 가..

[6-1] 군집 알고리즘

이 포스팅은 혼자 공부하는 머신러닝 + 딥러닝 책을 공부하고 정리한것 입니다.비지도 학습 타깃을 모르는 사진을 종류별로 분류하려 할때 사용하는 머신러닝 알고리즘이 바로 비지도 학습이다(unsupervised learning) 사람이 가르쳐 주지 않아도 데이터에 있는 무언가를 학습하게 된다. 과일 데이터는 사과, 바나나, 파인애플을 담고 이는 흑백 사진이다. 이 데이터는 넘파이 배열의 기본 저장 포맷인 npy파일로 저장되어 있다. 넘파이에서 이 파일을 읽으려면 먼저 코랩으로 다운로드 해야한다.!wget https://bit.ly/fruits_300_data -O fruits_300.npy import numpy as np import matplotlib.pyplot as plt fruits=np.load(..

[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..