분류 전체보기

    [머신 러닝] 비지도 학습

    비지도 학습이란? 실제로 사용할 수 있는 데이터는 대부분 레이블이 없습니다. 레이블이 없는 데이터를 이용해서 데이터가 어떻게 구성되어있는지를 알아내는 문제의 범주에 속합니다. 이번 포스트에서는 몇 가지 비지도 학습과 알고리즘을 알아보겠습니다. 군집 (clustering) 이상치 탐지 (outlier detection) 밀도 추정 (density estimation) 군집 (clustering) 비슷한 샘플을 구별해 하나의 클러스터 또는 비슷한 샘플의 그룹으로 할당하는 작업입니다. 분류처럼 각 샘플은 하나의 그룹에 할당됩니다. 하지만 분류와 달리 군집은 비지도학습입니다. 위 그림을 보면 왼쪽에는 각 샘플의 클래스가 구분되어 나타나 있습니다. 이 데이터셋은 레이블이 되어있습니다. 오른쪽은 동일한 데이터셋이지..

    [머신 러닝] 차원 축소

    차원 축소 실제로 머신 러닝 문제를 다룰 때에는 훈련 샘플이 수천 심지어 수백만 개의 특성을 갖고 있을 것입니다. 이런 많은 특성은 훈련을 느리게 하고, 좋은 솔루션을 찾기 어렵게 만듭니다. 이런 문제를 차원의 저주라고 합니다. 다행히도 실전 문제에서는 특성 수를 크게 줄여서 불가능한 문제를 가능한 범위로 바꿀 수 있는 경우가 많습니다. 차원의 축소는 분류 문제에 크게 중요하지 않은 부분을 걸러내어 특성 수를 줄이는 것입니다. 차원을 축소시키면 일부 정보가 유실되므로 속도는 빨라질 수 있지만 시스템의 성능이 나빠질 수 있습니다. 그리고 작업 파이프라인이 복잡해지고 유지 관리가 어려워집니다. 따라서 차원 축소를 고려하기 전에 훈련이 너무 느린지먼저 테스트해봐야합니다. 어떤 경우에는 차원을 축소시키면 잡음이..

    [머신 러닝] 서포트 벡터 머신 (support vector machine)

    서포트 벡터 머신이란? 서포트 벡터 머신(SVM)은 매우 강력하고 선형이나 비선형 분류, 회귀, 이상치 탐색에도 사용할 수 있는 다목적 머신러닝 모델입니다. 서포트 벡터 머신 모델은 가장 인기 있는 모델에 속합니다. 이 모델은 특히 복잡한 분류 모델에 잘 들어맞으면 중간 크기의 데이터셋에 적합합니다. 선형 SVM 분류 SVM의 기본 아이디어는 그림으로 설명하는 것이 가장 좋습니다. 그림을 보며 설명하겠습니다. 위 그림에서 H3는 클래스를 올바르게 분류하고 있지 않습니다. H1과 H2는 클래스를 올바르게 분류하는데, H1은 결정 경계가 샘플에 너무 가까워 새로운 샘플에 대해서는 잘 작동하기 힘듭니다. H2는 결정 경계가 샘플과 멀리 떨어져있어 새로운 샘플에 대해 상대적으로 더 잘 작동할 것입니다. 여기 있..

    [머신 러닝] 경사 하강법 (Gradient descent)

    앞서 선형 회귀를 다룰 때 경사 하강법을 간단하게 설명한 적이 있는데, 경사 하강법은 많은 머신 러닝 및 딥러닝 알고리즘에 사용되므로 좀 더 자세히 설명하고 넘어가겠습니다. 데이터 준비 HTML 삽입 미리보기할 수 없는 소스 배치 경사 하강법 경사 하강법을 구현하려면 각 모델 파라미터에 대해 비용 함수의 그레이디언트를 계산해야 합니다. 다시 말해서, 모델 파라미터가 조금 변경될 때 비용 함수가 얼마나 바뀌는지를 계산해야 합니다. 배치 경사 하강법에서는 매 경사 하강법 스텝에서 전체 훈련 세트에 대해 계산합니다. 그래서 이 알고리즘을 배치 경사 하강법이라고 합니다. 매 스텝에서 훈련 데이터 전체를 사용하기 때문에 매우 큰 훈련 세트에서는 아주 느립니다. 이 알고리즘을 간단하게 구현해보겠습니다. HTML 삽..

    [머신 러닝] 분류 (Classification)

    MNIST 불러오기 이번 포스트에서는 고등학생과 미국 인구조사국 직원들이 쓴 70,000개의 작은 숫자 이미지를 모은 MNIST 데이터셋을 사용하겠습니다. sklearn으로 MNIST를 불러오는 코드입니다. HTML 삽입 미리보기할 수 없는 소스 이진 분류기 훈련 문제를 단순화해서 모든 숫자가 5인지 아닌지만 분류해보겠습니다. 이 분류기는 '5'와 '5 아님'의 두 가지 클래스를 구분할 수 있는 이진 분류기(binary classifier)의 한 예입니다. HTML 삽입 미리보기할 수 없는 소스 성능 측정 분류기 평가는 회귀 모델보다 훨씬 어렵기 때문에 조금 길게 설명하도록 하겠습니다. HTML 삽입 미리보기할 수 없는 소스 다중 분류 여태 다룬 이진 분류는 두 개의 클래스를 구별하는 반면 다중 분류기(..

    [머신 러닝] 간단한 머신 러닝 프로젝트 해보기

    동기 지금 Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow로 공부하고 있는데, chapter 2에서 간단한 머신 러닝 프로젝트를 해볼 수 있는 내용이 있어서 따라해보려고 합니다. 데이터 설명 이 프로젝트는 StatLib 저장소에 있는 캘리포니아 주택 가격 데이터셋을 사용합니다. 이 데이터는 캘리포니아의 블록 그룹마다 인구, 중간 소득, 중간 주택 가격 등을 담고 있습니다. 목표 이 데이터로 모델을 학습시켜서 다른 측정 데이터가 주어졌을 때 구역의 중간 주택 가격을 예측해야 합니다. 문제 정의 먼저 문제를 정의해야 합니다. 우리에게는 레이블된 훈련 샘플이 있으니 지도 학습이고, 값을 예측해야 하고 예측에 사용할 특성이 여러개이므로 다중 회귀..

    [머신 러닝] 행렬 인수분해 (Matrix Factorization)

    행렬 인수분해 사람들의 각 항목에 대한 기호 정보가 있는 행렬이 있을 때, 이 행렬은 두 개의 행렬의 곱으로 나타낼 수 있습니다. 이를 이용한 예측이 가능한데, 예를 들어서 아래와 같이 몇 칸이 비어있는 행렬이 있다고 하겠습니다. 항목 1 항목 2 항목 3 사람 1 4 1 5 사람 2 2 ? 3 사람 3 ? 3 1 몇 칸이 비어있기 때문에 곱했을 때 완벽히 똑같은 두 개의 행렬은 구하기 힘들 수도 있습니다. 따라서 이 행렬을 인수분해해서 곱했을 때 가장 가까운 두 개의 행렬의 곱으로 나타낸다면, 두 행렬의 곱으로 빈 칸의 값을 예측할 수 있습니다. 속성 학습 여기서 속성을 학습할 때에도 경사 하강법을 이용합니다. 먼저 두 행렬에 임의의 값을 넣고 곱해서 목표 행렬과 얼마나 차이가 나는지 구합니다. 여기서..

    [머신 러닝] 협업 필터링 (collaborative filtering)

    협업 필터링 협업 필터링은 많은 사용자들로부터 얻은 기호 정보(taste information)에 따라 사용자들의 관심사들을 자동적으로 예측하게 해주는 방법입니다. 예를 들어, 아래와 같은 데이터가 있고, 혜린이의 항목 4에 대한 기호 정보를 알고 싶다고 하겠습니다. 이름 항목 1 항목 2 항목 3 항목 4 지원 4 3 4 4 혜린 4 3 5 ? 이 경우에 혜린이의 항목1, 2, 3에 대한 기호 정보가 지원이와 유사하기 때문에 혜린이는 지원이와 비슷하다고 할 수 있고, 따라서 혜린이가 항목 4에 높은 점수를 줄 것이라 예측할 수 있습니다. 실제로는 데이터가 훨씬 많을 경우를 다루게 될 텐데 예를 들어 혜린이와 항목 1, 2, 3이 비슷한 사람이 1000명 있다면 그 1000명의 항목 4에 대한 평균을 혜..