핸즈온 머신러닝 1장 한눈에 보는 머신러닝 - 1.5 머신러닝의 주요 도전 과제

'데이터분석 관련 책 `핸즈온 머신러닝 2판`의 1장 1.5절 머신러닝의 주요 도전 과제 요약 및 정리

정민호정민호

1. 한눈에 보는 머신러닝


1.5. 머신러닝의 주요 도전 과제

  • 머신러닝의 주요 작업은 학습 알고리즘을 선택해서 어떤 데이터에 훈련시키는 것

  • 나쁜 알고리즘과 나쁜 데이터가 문제 될 수 있음

  • 데이터에 완벽히 맞추는 것과 일반화를 위해 단순한 모델을 유지하는 것 사이의 올바른 균형을 찾는 것이 좋음

  1. 충분하지 않은 양의 훈련 데이터

    • 대부분의 머신러닝 알고리즘이 잘 작동하려면 데이터가 많아야 함

알고리즘_대비_데이터의_중요성
Figure 1. scaling to very very large corpora for natural language disambiguation, 2001
  1. 대표성 없는 훈련 데이터

    • 일반화가 잘되려면 우리가 일반화 하기 원하는 새로운 사례를 훈련 데이터가 잘 대표하는 것이 중요

    • 샘플이 작으면 우연에 의한 대표성 없는 데이터로 샘플링 잡음(sampling noise) 발생

    • 샘플이 클 때 표본 추출 방법이 잘못되면 대표성을 가지지 못하는 샘플링 편향(sampling bias), 비응답 편향(nonresponse bias) 발생

  2. 낮은 품질의 데이터

    • 훈련 데이터가 에러, 이상치(outlier), 잡음으로 가득하면 내재된 패턴을 찾기 어려워 머신러닝 시스템이 잘 작동하지 않음

    • 따라서 훈련 데이터 정제에 많은 시간을 투자함

    • 일부 샘플에 특성 몇개가 빠졌을 때 훈련방법

      • 특성 모두 무시

      • 샘플 무시

      • 빠진 값을 임의의값(평균 등)으로 채움

      • 특성을 넣은 모델과 제외한 모델을 따로 훈련

  3. 관련 없는 특성

    • 훈련에 사용할 좋은 특성들을 찾는것으로 특성 공학(feature engineering)이라 함

    • 특성 공학의 작업

      • 특성 선택(feature selection) : 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택

      • 특성 추출(feature extraction) : 특성을 경합하여 더 유용한 특성을 만듬(차원축소 등)

      • 새로운 데이터를 수집해 새 특성을 만듬

  4. 훈련 데이터 과대적합(overfitting)

    • 모델이 훈련 데이터에 너무 잘 맞지만 일반성이 떨어지는것

    • 과대적합은 훈련 데이터에 있는 잡음의 양에 비해 모델이 너무 복잡할 떄 발생

    • 과대적합 해결방법

      • 파라미터 수가 적은 모델을 선택하거나, 훈련 데이터에 있는 특성 수를 줄이거나 제약을 가하여 단순화

      • 훈련 데이터를 더 많이 수집

      • 훈련 데이터의 잡음을 최소화(오류 데이터 수정, 이상치 제거 등)

    • 데이터에 완벽히 맞추는 것과 일반화를 위해 단순한 모델을 유지하는 것 사이의 올바른 균형을 찾는 것이 좋음

  5. 훈련 데이터 과소적합(underfitting)

    • 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 발생

    • 과소적합 해결방법

      • 모델 파라미터가 더 많은 강력한 모델 선택

      • 학습 알고리즘에 더 좋은 특성을 제공(특성공학)

      • 모델의 제약을 줄임(하이퍼파라미터 감소)

        • 하이퍼파라미터 : 학습알고리즘으로부터 영향을 받지 않으며, 훈련 전에 미리 지정되고, 훈련하는 동안에는 상수로 남아 있음


어떡하집 프로젝트 - 근황

오랜기간 멈춰있던 시스템 개발의 근황을 전달드립니다.

정민호정민호
Table of Contents

1. 2020.09.13 현재 상황

어떡하집 프로젝트는 04월 즘에 테스트 시스템까지 구축을 끝 마친 상태입니다.

시스템 구축 할 때 공공데이터포털에서 아파트 실거래 정보를 가져오던 중 API를 제공하는 서버에 문제가있어서 일시중단하게되었습니다. 그 후 5~6월 즘 다시 아파트 실거래 정보를 가져오려했지만 문제가 해결되지 않아 아직까지 중단된 상태입니다. 왜 그런지는 모르겠지만 현재(2020.09.13)까지 해결 되지 않았습니다. 추후 본격적으로 작업을 다시 시작할 때 다시 문의를 해봐야겠습니다.

초기 설계에선 logstash를 사용하였지만 실제구축에선 logstash를 nifi로 변경하여 진행하였습니다. 아래 사진은 개발진행상태(?) 입니다.

VB를 이용한 서버 구성
nifi 현황

핸즈온 머신러닝 소개

'데이터분석 관련 책 `핸즈온 머신러닝 2판`을 요약 및 정리하기전 간략히 소개하고자 한다.

정민호정민호
book_cover

핸즈온 머신러닝 2판(사이킷런, 케라스, 텐서플로 2를 활용한 머신러닝, 딥러닝 완벽 실무)은 '오렐리랑 제롱(Aurelien Geron)'이 집필하고 박해선님이 번역하신 책이다.

이 책을 사고나서 알게된것이지만 번역을 하신 박해선님이 이 분야와 관련한 여러 책을 번역하셨습니다. 그래서 그런지 본 책을 잘 읽히게 번역을 하셨다는 평이 많습니다.

책의 목차는 3개의 Part 19개의 Chapter로 구성되어있으며, 책 규격은 183*235mm, 1809g, 952p, ISBN : 9791162242964 입니다. (출처 : https://www.aladin.co.kr/shop/wproduct.aspx?ISBN=K532639960&start=pnaver_02)

  1. 머신러닝

    1. 한눈에 보는 머신러닝

    2. 머신러닝 프로젝트 처음부터 끝까지

    3. 분류

    4. 모델 훈련

    5. 서포트 벡터 머신

    6. 결정 트리

    7. 앙상블 학습과 랜덤 포레스트

    8. 차원 축소

    9. 비지도 학습

  2. 신경망과 머신러닝

    1. 케라스를 사용한 인공 신경망 소개

    2. 심층 신경망 훈련하기

    3. 텐서플로를 사용한 사용자 정의 모델과 훈련

    4. 텐서플로에서 데이터 적재와 전처리하기

    5. 합성곱 신경망을 사용한 컴퓨터 비전

    6. RNN과 CNN을 사용해 시퀀스 처리하기

    7. RNN과 어텐션을 사용한 자연어 처리

    8. 오토인코더와 GAN을 사용한 표현 학습과 생성적 학습

    9. 강화 학습

    10. 대규모 텐서플로 모델 훈련과 배포

  3. 부록

    1. 연습문제 정답

    2. 머신러닝 프로젝트 체크리스트

    3. SVM 쌍대 문제

    4. 자동 미분

    5. 유명한 다른 인공 신경망 구조

    6. 특수한 데이터 구조

    7. 텐서플로 그래프

그리고 본 책과 관련하여 유튜브에 강의를 올려 주셨습니다. 주소는 아래와 같으며 현재(2020.09.13) 8장까지 강좌가 있습니다.

본 책을 요약 및 정리하고자 생각하게된 계기는 기존에 데이터분석 분야를 공부하고 싶어서 이것저것 공부를 했었습니다. 하지만 중구난방으로 공부한다는 느낌이 다소 많이 들었고, 실제 사용해보지 않으니 잘 다가오지 않았습니다. 그러던 중 멘토님께 이 책을 추천 받게되어 책을 요약 및 정리하겠다고 생각하였습니다.

책은 2개월에 완독하는 것을 목표로 해보겠습니다. (2020.09.13(일) - 2020.11.08(일)) 평일에는 퇴근이 늦어 눈으로 읽게 될 것같고 주말에 실습위주가 되지 않을까 생각합니다.

진도는 단순히 수치로 계산해 봤을 때 약 16p 정도를 하루에 하면 될것 같습니다.(952p / 60일) 아래는 세부 일정입니다. 아직 책을 수령받기 전이기도하고 내용의 난이도를 잘 모르기에 대략적으로 구성해보았습니다. (Part1 : 3주, Part2 : 5주)

  • W1 ~ W8 - 핸즈온 머신러닝(30p - 928p, 100.0%)

    1. W1 ~ W3 - 머신러닝 (30p - 351p, 35.8%)

      1. W1 - 한눈에 보는 머신러닝 (30p - 67p, 4.1%)

      2. W1 - 머신러닝 프로젝트 처음부터 끝까지 (68p - 126p, 6.5%)

      3. W2 - 분류 (127p - 157p, 3.3%)

      4. W2 - 모델 훈련 (158p - 204p, 5.1%)

      5. W2 - 서포트 벡터 머신 (205p - 228p, 2.6%)

      6. W2 - 결정 트리 (229p - 245p, 1.8%)

      7. W2 - 앙상블 학습과 랜덤 포레스트 (246p - 273p, 3%)

      8. W3 - 차원 축소 (274p - 299p, 2.8%)

      9. W3 - 비지도 학습 (300p - 351p, 5.7%)

    2. W4 ~ W8 - 신경망과 머신러닝 (352p - 842p, 54.7%)

      1. W4 - 케라스를 사용한 인공 신경망 소개 (352p - 411p, 6.6%)

      2. W4 - 심층 신경망 훈련하기 (412p - 461p, 5.5%)

      3. W5 - 텐서플로를 사용한 사용자 정의 모델과 훈련 (462p - 503p, 4.6%)

      4. W5 - 텐서플로에서 데이터 적재와 전처리하기 (504p - 541p, 4.1%)

      5. W5 - 합성곱 신경망을 사용한 컴퓨터 비전 (542p - 597p, 6.1%)

      6. W6 - RNN과 CNN을 사용해 시퀀스 처리하기 (598p - 627p, 3.2%)

      7. W6 - RNN과 어텐션을 사용한 자연어 처리 (628p - 673p, 5%)

      8. W7 - 오토인코더와 GAN을 사용한 표현 학습과 생성적 학습 (674p - 719p, 5%)

      9. W7 - 강화 학습 (720p - 783p, 7%)

      10. W8 - 대규모 텐서플로 모델 훈련과 배포 (784p - 842p, 6.5%)

    3. W8 ~ W8 - 부록 (843p - 928p, 9.5%)

      1. W8 - 연습문제 정답 (843p - 880p, 4.1%)

      2. W8 - 머신러닝 프로젝트 체크리스트 (881p - 886p, 0.6%)

      3. W8 - SVM 쌍대 문제 (887p - 890p, 0.3%)

      4. W8 - 자동 미분 (891p - 898p, 0.8%)

      5. W8 - 유명한 다른 인공 신경망 구조 (899p - 908p, 1%)

      6. W8 - 특수한 데이터 구조 (909p - 916p, 0.8%)

      7. W8 - 텐서플로 그래프 (917p - 928p, 1.2%)

책을 정리하겠노라 마음은 먹었지만 실천하는것과 별개인것 같습니다. 시작이 반이라는데 이미 반을 했으니 중간에 흐지부지 그만두지 않기 위해 노력하겠습니다.