라이트 머신러닝

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

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

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

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

    [라이트 머신러닝]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..

    [라이트 머신러닝] Session 5. 퍼셉트론의 메가 진화와 경사하강법!

    이전 세션 두 개에서 우리는 퍼셉트론 함수를 학습하고 왔습니다. 기억하시나요? 기억이 안 나신다면 앞 두 개 글을 보고 오시는 것을 추천드립니다. 제가 공부하는만큼 앞 글들이 주기적으로 수정될 수 있음을 알아주시길 바랍니다ㅜㅜ https://dnai-deny.tistory.com/5 https://dnai-deny.tistory.com/6 이번 세션에서는 퍼셉트론 알고리즘의 진화버전인 아달린과 머신러닝에 있어서 매우 중요한 개념인 경사하강법에 대해 알아보도록 하겠습니다. 1. 적응형 선형 뉴런, 아달린 아달린은 단일 층 신경망의 또 다른 종류입니다. 버나드 위드로우와 테드 호프가 개발한 알고리즘이죠. 제목에서 보이듯 퍼셉트론이 진화한 형태라고 할 수 있습니다. 왜냐하면, 아달린에서는 비용 함수(cost ..

    [라이트 머신러닝] Session 4. 파이썬으로 퍼셉트론 알고리즘 구현하기!

    이번 시간에는 드디어 마침내 프로그래밍이 등장합니다. 이전 섹션에서 공부한 수식들을 파이썬 클래스와 함수로 구현하고, 머신러닝의 대표적인 데이터 중 하나인 붓꽃 데이터셋을 학습시키는 것 까지 해보도록 하겠습니다. 각자 앞 세션에서 이야기한 아나콘다나 파이썬을 설치하셔도 좋습니다. 저는 google colaboratory를 사용하려고 합니다. 설치없이 간편하니 사용하셔도 좋습니다 :) https://colab.research.google.com/ Google Colaboratory colab.research.google.com 1. 객체 지향 퍼셉트론 API 코드를 보기 전에, 먼저 간단한 사전 코드 정의에 대해서 알려드리겠습니다. 아래 Perception 클래스를 초기화한 후 fit 메서드로 학습하고, ..

    [라이트 머신러닝] Session 3. 퍼셉트론 알고리즘의 수학적 정의

    제목에 놀라신 분들이 있을 거라고 생각합니다! 지난 시간까지 정말 '라이트' 하게 머신러닝에 대한 넓고 얕은 지식을 배웠다면, 이제는 야금야금 실습에 들어갈 시간입니다. 일단은, 먼저 머신러닝에 대한 간단한 역사와 퍼셉트론 학습 알고리즘에 대해 먼저 소개해드리도록 하겠습니다. 1. 인공 뉴런의 수학적 정의 머신 러닝은 AI를 설계하기 위해 우리 생물의 뇌가 동작하는 방식을 이해하려는 시도입니다. 1943년 워런 맥컬록과 월터 피츠가 처음으로 간소화된 뉴런 개념(맥컬록 피츠 뉴런)을 발표했습니다. 맥컬록과 피츠는 신경 세포를 이진 출력을 만드는 논리회로로 표현했습니다. 수상돌기에 신호가 도착하면 세포체에 합쳐지고, 누적된 신호가 임계값을 넘으면 출력 신호가 생성되어 축삭돌기(말단)을 통해 전달됩니다. 이후..