머신러닝

    [라이트 머신러닝] Session 17. 학습과 검증 곡선, 그리고 그리드 서치

    이번 세션에서는 두 가지 곡선을 이용해 알고리즘을 디버깅하여 보다 나은 모델을 만드는 방법 하나와, 그리드 서치를 이용해 하이퍼파라미터를 튜닝하는 방법 두 가지를 살펴보도록 하겠습니다. 지난 세션과 어느정도 이어지는 주제이니, 16을 보고 오셔도 좋습니다! A. 학습 곡선과 검증 곡선을 사용한 알고리즘 디버깅 1. 학습 곡선으로 편향과 분산 문제 분석 학습 곡선, 즉 그래프를 이용하면 모델의 훈련 정확도와 검증 정확도를 모델의 높은 분산에 문제가 있는지, 편향에 문제가 있는지를 쉽게 확인하고 고칠 수 있습니다. 데이터를 더 모으는 것은 사실 불가능한 경우가 꽤 있기 때문에, 꼭 데이터를 더 모아야하는지를 판단할 수 있게 해주죠. 왼쪽 위 그래프는 편향이 높은 모델입니다. 이 모델은 훈련과 교차검증의 정확..

    [라이트 머신러닝] Session 15. 커널 PCA를 이용한 비선형 매핑

    C. 커널 PCA를 사용한 비선형 매핑여태까지 많은 머신 러닝 알고리즘은 입력 데이터가 선형적으로 구분이 가능하다는 가정을 합니다. 다른 알고리즘들-아달린, 로지스틱 회귀, SVM-은 선형적으로 완벽하게 분리되지 않는 이유를 잡음때문이라고 이야기합니다.실전에서는 더 자주 비선형 문제들을 맞닥뜨립니다. 이 경우에 항상 PCA나 LDA와 같은 차원 축소 기법이 최선이라고는 말할 수 없겠죠. 이제부터 알아볼 것은 PCA의 커널화 버전인 KPCA입니다. 1. 커널 함수와 커널 트릭앞선 세션에서 커널 SVM에 대해 이야기한 것을 떠올려보면, 비선형 문제를 풀기 위해 고차원 공간으로 데이터를 투영해 풀었습니다. k 고차원 부분 공간에 있는 샘플을 변환하기 위해 비선형 매핑 함수를 정의합니다. 이 함수를 d차원 보다..

    [라이트 머신러닝] Session 14. LDA를 통한 지도학습방식 데이터 압축

    선형 판별 분석(Linear Discriminant Analysis)은 규제가 없는 모델에서 오버피팅 정도를 줄이고 계산 효율정을 높이기 위해 사용되는 특성추출 기법입니다. LDA의 개념은 PCA와 상당히 유사합니다. PCA가 데이터셋의 분산이 최대인 성분축을 찾는 것이 목표라면 LDA는 클래스를 최적으로 구분할 수 있는 특성 부분 공간을 찾는 것입니다. 1. 주성분 분석 vs 선형 판별 분석 PCA와 LDA 모두 데이터셋의 차원 개수를 줄이는 선형 변환 기법이지만 PCA는 비지도, LDA는 지도학습이라는 점에서 다릅니다. 여기서 여러분은 LDA가 클래스 구분을 위해 특성 부분 공간을 찾는 것이기 때문에 더 분류에 뛰어나다고 생각하실 수 있는데요, 사실은 그렇지는 않습니다. 마르티네스는 PCA를 통한 전..

    [라이트 머신러닝] Session 12. 순차 특성 선택 알고리즘과 랜덤 포레스트 특성 중요도 사용

    이번 세션에서는 순차 특성 선택을 하는 방법과 랜덤 포레스트에서 특성 중요도를 사용하는 방법을 알아보겠습니다. 가볼까요? 1. 순차 특성 선택 알고리즘 모델 복잡도를 줄이는 방법을 Session 11에서 소개했었는데요, 다른 방법은 특성 선택을 통한 차원 축소(dimensionality reduction)가 있습니다. 규제가 없는 모델에서 유용하죠. 차원 축소에는 주요 카테고리인 특성 선택(feature selection)과 특성 추출(feature extraction)이 있습니다. 특성 선택은 특성 중에서 선택하는 것이고, 추출은 특성에서 얻은 정보들로 새 특성을 만드는 것입니다. 특성 선택에 있어서 중요한 것은 문제에 가장 관련이 높은 특성 부분집합을 자동선택하는 것입니다. 이번에는 특성 선택 알고리..

    [라이트 머신러닝] Session 11. 데이터셋 나누기와 특성 스케일과 선택

    이번 세션에서는 말로만 듣던 훈련 세트와 테스트 세트로 데이터 셋을 분할하는 작업을 하는 방법에 대해서, 그리고 특성 스케일을 조정하는 방법에 대해서 알아보도록 하겠습니다. 1. 데이터셋 나누기 이번에는 새로운 데이터인 Wine 을 사용합니다. 붓꽃 데이터에서 벗어나신 걸 축하드려요! wine 데이터는 UCI 머신러닝 저장소 에서 다운받을 수 있습니다. 판다스를 이용해 바로 읽어드리는 코드는 아래와 같습니다. df_wine = pd.read_csv('https://archive.ics.uci.edu/' 'ml/machine-learning-databases/wine/wine.data', header=None) # UCI 머신 러닝 저장소에서 Wine 데이터셋을 다운로드할 수 없을 때 # df_wine =..

    [라이트 머신러닝] Session 10. 누락 데이터와 범주형 데이터 다루기

    이번 세션에서는 데이터 전처리 중에서 누락 데이터와 범주형 데이터를 다루는 방법에 대해서 알아보도록 하겠습니다! 1. 누락된 데이터 다루기 실제 모델에서는 여러 이유로 값이 누락된 샘플이 있는 경우가 허다합니다. 보통 누락된 값은 데이터 테이블에 빈 공간이나 예약된 문자열(NULL, NaN)으로 채워집니다. 그럼 이제 샘플을 제거하거나 다른 샘플이나 특성에서 누락된 값을 대체하는 방법을 소개하겠습니다. 첫번째 과정은 당연히 누락된 값을 식별하는 것이겠죠. 일단 예제 데이터셋을 만들어보도록 하겠습니다. read_csv함수는 csv포맷 데이터를 판다스의 데이터 프레임으로 읽어옵니다. 여기 예제에서는 누락 데이터는 NaN으로 표시됩니다. 그리고 아래 코드에 쓰인 StringIO 는 csv_data에 저장된 문..

    [라이트 머신러닝] Session 9. 결정 트리 학습

    이번 세션에서는 모델의 결정 과정을 설명할 때 아주 중요한 결정 트리(decision tree) 분류기라는 모델을 소개해드리도록 하겠습니다. 1. 결정트리란? 결정 트리는 어떤 질문에 대한 결정을 통해서 데이터를 분해하는 모델이라고 할 수 있습니다. 그림 1에서 예를 들어볼까요? 결정 트리는 훈련 데이터의 특성을 기반으로 샘플의 클래스 레이블을 추정할 수 있는 질문을 학습합니다. 예시는 범주형 변수를 사용했지만 동일한 개념은 붓꽃 데이터셋 같은 실수형 특성에서도 적용됩니다. 예를 들어 "꽃잎의 길이가 3cm보다 긴가요?"라는 예/아니오 질문을 할 수 있습니다. 결정 알고리즘을 사용하면 트리의 루트, 그러니까 트리의 기원이 되는 부분부터 시작해서 정보 이득(Information Gain, IG)가 최대가 ..

    [라이트 머신러닝] Session 8. 최대 마진 분류와 비선형 문제 풀기

    이번 세션에서는 최대 마진과 SVM, 비선형 분류 문제를 풀어보도록 하겠습니다. 1. 서포트 벡터 머신과 최대 마진 분류 서포트 벡터 머신(support vector machine, SVM)은 퍼셉트론의 확장이라고 할 수 있습니다. 퍼셉트론이 분류 오차를 최소화했다면 SVM의 최적화 대상은 마진을 최대화하는 것입니다. 마진은 클래스를 구분하는 결정 경계와 결정 경계에 가장 가까운 훈련 샘플 사이의 거리입니다. 이 가장 가까운 훈련 샘플을 서포트 벡터(support vector)라고 합니다. 우리가 마진이 큰 결정 경계를 원하는 이유는 일반화할 때 오차가 낮아지는 경향이 있기 때문입니다. 마진이 작으면 작을 수록 결정 경계와 샘플의 거리가 가까워져 오버피팅될 가능성이 높습니다. 마진 최대화의 이해를 위해 ..

    [라이트 머신러닝]Session 7. 로지스틱 회귀(logistic regression)

    이전까지 설명했던 퍼셉트론 알고리즘은 간단하고 좋지만 클래스가 선형적으로 구분되지 않을 때는 수렴하지 않습니다. 따라서, 더 강력한 알고리즘 로지스틱 회귀를 설명하려고 합니다. 이름은 회귀지만 사실은 분류 알고리즘임을 잊지마세요! 1. 로지스틱 회귀의 이해와 조건부 확률 먼저, 오즈비(odds ratio)를 소개하도록 하겠습니다. 오즈는 특정한 상황이 발생활 확률로, 그림 1과 같은 수식을 갖습니다. 여기서 P는 예측할 대상, 양성 샘플을 의미합니다. 여기에 로그 함수를 취하면 로짓(logit)함수가 됩니다. 여기서의 로그는 예상하셨듯 자연로그입니다. logit함수는 0에서 1사이의 값을 입력받아서 실수 범위의 값으로 변환합니다. 가중치 w로 표현되었던 앞선 함수를 기억하시나요? 특성 가중치 합과 로그 ..

    [라이트 머신러닝] Session 6. 사이킷런 입문!

    이번 세션에서는 사이킷런 라이브러리를 이용해서 퍼셉트론을 훈련해봄으로써 사이킷런을 시작하도록 하겠습니다. 이번 세션도 전과 마찬가지로 저는 Google Colab으로 실습합니다. Colab에는 이미 사이킷런이 설치되어있으므로 별도의 설치없이 사용하시면 됩니다! https://colab.research.google.com Google Colaboratory colab.research.google.com 1. 데이터 주입과 표준화 이번 세션에서는 세션 4와 5에서 구현한 것과 비슷한 퍼셉트론 모델을 사용할 것입니다. 사용할 붓꽃 데이터 셋은 이미 사이킷런에 포함되어있으므로, 따로 다운받을 필요는 없습니다. 꽃 샘플 중에 꽃입 길이와 너비를 행렬 X에, 꽃 품종을 벡터 Y에 할당합니다. from sklearn..