AI

머신러닝을 마무리하고 이제 딥러닝을 공부해보자. 패션 MNIST MNIST는 머신러닝과 딥러닝을 배울 때 자주 사용하는 데이터셋이다. 딥러닝에서는 손으로 쓴 0~9까지의 숫자로 이루어진 데이터를 사용한다. 패션 MNIST는 크기와 개수가 동일하지만 숫자 대신 패션 아이템으로 이루어진 데이터이다. 패션 MNIST 데이터는 워낙 유명해서 많은 딥러닝 라이브러리에서 가져올 수 있는 도구를 제공한다. 이 책에서는 텐서 플로(Tensor Flow)를 사용해서 데이터를 불러온다. 패션 MNIST가 어떤 데이터인지 확인해 보자. 텐서 플로도 코랩에서 사용할 수 있다. 텐서 플로의 케라스(Keras) 패키지를 임포트해서 패션 MNIST 데이터를 다운로드하자. keras.datasets.fashion_mnist 모듈 아..
이전 글에서 KMeans 클래스를 이용하여 각 과일들을 클러스터링 했다. 또한 최적의 K를 찾는 법을 클러스터 중심과 클러스터에 속한 샘플 사이의 거리인 이너셔의 변화를 통해 찾아냈다. 그렇게 업로드된 사진을 클러스터로 분류하여 폴더별로 저장했지만, 너무 많은 사진이 등록되어 저장 공간이 부족하다. 사진의 용량을 줄이는 법은 없을까? 차원과 차원 축소 지금까지 데이터가 가진 속성을 특성이라고 했다. 과일 사진에는 가로 100, 세로 100으로 총 10,000개의 픽셀이 있기 때문에 10,000개의 특성이 있다고 할 수 있다. 머신러닝에서는 이런 특성을 차원(dimenstion)이라고도 부른다. 그렇다면 10,000개의 특성은 10,000개의 차원이라고 할 수 있다. 이 차원을 줄일 수 있다면 저장 공간을..
이전 글에서는 사과, 파인애플, 바나나에 있는 각 픽셀의 평균값을 구해서 분류를 했다. 그 사진이 어떤 과일인지 미리 알고 있었기 때문에 각 과일의 평균을 구할 수 있었다. 비지도 학습에서는 사진이 어떤 과일인지 알지 못하는데 이런 경우에는 어떻게 평균값을 구할 수 있을까? K-평균 알고리즘 K-평균 알고리즘의 작동 방식은 다음과 같다. 무작위로 k개의 클러스터 중심을 정한다. 각 샘플에서 가장 가까운 클러스터 중심을 찾아 해당 클러스터의 샘플로 지정한다. 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경한다. 클러스터 중심에 변화가 없을 때까지 2번으로 돌아가 반복한다. 이런식으로 거리를 이용해서 중심을 갱신하면서 군집을 형성한다. KMeans 데이터를 불러오자. (샘플 개수, 너비, 높이)로 이..
이전까지 타깃 데이터를 사용하는 지도 학습에 대해 공부했다. 이번 글에서는 타깃이 없는 데이터를 사용하는 비지도 학습과 대표적인 알고리즘을 공부해보자. 과일을 종류별로 분류하는 문제를 생각해보자. 하나하나 사람이 분류할 수도 없고, 생선처럼 미리 과일 분류기를 훈련하기에는 어떤 과일 사진이 들어올지 알 수 없기 때문에 곤란하다. 사진에 대한 정답(타깃)을 모르는데 어떻게 종류대로 분류할 수 있을까? 비지도 학습 (Unsupervised Learning) 비지도 학습은 타깃이 없을 때 사용하는 머신 러닝 알고리즘이다. 우리가 가르쳐주지 않아도 데이터에있는 무언가를 학습하는 것이다. 위에서 예시로 들었던 과일을 종류별로 분류하는 문제를 연습해보자. 이전에는 csv데이터를 불러와서 모델을 만들었지만 이번에는 ..
지금까지 꽤 많은 모델들을 설계해봤고 저번 글에서는 테스트 세트를 사용하지 않고 모델의 성능을 평가하고 하이퍼 파라미터 튜닝까지 해봤다. 이들 중에서 어떤 알고리즘이 가장 좋은 알고리즘인지 평가할 수 있을까? 문제마다 성능이 다르다 하더라도 대체로 성능이 좋은 알고리즘이 무엇일지 생각해보자. 정형 데이터와 비정형 데이터 앞에서 생선의 길이, 높이, 무게 등을 데이터로 사용하였다. 또한 이 데이터들은 CSV파일에 정리되어있었다. 쉽게 말해 어떤 구조로 되어있다는 뜻이다. 이를 정형 데이터(Structured Data)라고 한다. 이런 데이터들은 CSV나 데이터베이스, 엑셀에 저장하기 쉽다. 정형 데이터의 반대가 비정형 데이터(Unstructured Data)이다. 비정형 데이터는 데이터베이스나 엑셀로 표현..
이전 글에서 결정 트리를 이용하여 와인을 분류해보았다. 결정 트리는 어떤 식으로 분류가 진행되었는지 쉽게 알 수 있었다. 지금까지는 훈련 세트를 이용하여 테스트 세트의 점수를 확인했다. 하지만 테스트 세트를 사용하여 성능을 확인하다 보면 모델을 테스트 세트에 맞추게 되는 셈이다. 가능한 한 테스트 세트를 사용하지 말고 모델을 설계한 뒤에 한 번만 사용하는 것이 좋다. 이번 글에서는 결정 트리의 매개 변수들을 테스트해보자. 검증 세트(Validation Set) 테스트 세트를 사용하지 않고 과소/과대 적합을 판단하는 방법이 무엇일까? 훈련 세트를 조금 떼서 사용해보면 되지않을까? 너무 단순하지만 실제로 많이 사용하는 방법이라고 한다. 그리고 이렇게 훈련 세트에서 20~30% 정도 떼어 놓은 세트를 검증 세..
이전까지는 생선들의 종류를 분류하는 모델, 길이를 이용해 무게를 예측하는 모델, 특정 생선일 확률을 예측하는 모델 등을 설계했었다. 이번엔 캔 와인을 예시로 들어 캔에 인쇄되어있는 도수, 당도, pH 값으로 화이트 와인인지 레드 와인인지를 분류해보자. 분류를 시작하기 전에 생각해보면 길이와 무게 등의 데이터로 빙어인지 도미인지 구분하는 모델을 설계했었기 때문에 와인을 분류하는 것 또한 쉽게 해결할 수 있을 것 같다. 로지스틱 회귀를 이용한 와인 분류 일단 데이터셋을 불러와서 head() 메서드로 처음 5개의 샘플을 확인해보자. import pandas as pd wine = pd.read_csv('https://bit.ly/wine_csv_data') wine.head() 데이터셋에는 알코올 도수, 당도..
이전 글에서 어떤 생선이 7개의 생선들 중에서 어떤 생선 일지에 대한 확률을 구하는 방식으로 로지스틱 회귀를 이용하여 모델을 설계해봤다. 이번에는 데이터가 한 번에 준비되는 것이 아닌 점진적으로 준비되는 데이터로 모델을 훈련하는 법을 공부해보자. 점진적인 학습 7개의 생선에 대해 데이터가 한번에 주어지는 것이 아니라 조금씩 전달된다면 어떤 방식으로 훈련을 해야 할까? 기존의 훈련 데이터에 새로운 데이터를 추가하여 모델을 매일 훈련시키는 방법을 떠올릴 수 있을 것이다. 하지만 이 방법은 시간이 지날수록 데이터가 늘어난다는 것이다. 미래를 생각하면 좋지 않은 방법이다. 그렇다면 새로운 데이터를 추가할 때 이전 데이터를 버리면서 훈련 데이터 크기를 일정하게 유지하는 방법은 어떨까? 이 방법에도 문제가 있다. ..
aodtns
'AI' 카테고리의 글 목록