핸즈온 머신러닝 1장, 2장

핸즈온 머신러닝 2판이 출간되었습니다. 2판은 더욱 더 알차고 폭넓은 주제를 다루고 있습니다. 1판에서 아쉬웠던 비지도 학습과 텐서플로 2로 바뀌면서 변경된 내용, 새로운 신경망 구조를 가득 담고 있습니다. 952페이지 풀 컬러입니다. 딥러닝을 다루는 2부의 내용이 크게 늘었습니다. 케라스 뿐만 아니라 RNN의 최근 발전을 많이 포함하고 있고 GAN을 새롭게 추가했습니다.

b9267655530_l이 글은 한빛미디어에서 출간한 “핸즈온 머신러닝” 도서의 1장과 2장의 내용입니다. 1장, 2장은 머신러닝에 대한 개괄적인 소개와 머신러닝 프로젝트를 진행하는 자세한 단계를 포함하고 있어서 많은 사람들에게 유익한 자료가 되길 기대합니다. 이 책은 온라인(YES24교보문고)/오프라인 서점에서 구입하실 수 있습니다. 구입하시면 저에게 큰 도움이 됩니다. 🙂

★★★★★ 제가 본 한국어로 된 ML책중에서 최고의 기량을 갖추었습니다.(bk**ys 님)
♥♥♥♥ 좋은 책입니다. 꼭 읽어봅시다.(we**lifema 님)
★★★★ 현존하는 머신러닝 책중 최고.(wnghdcjfe 님)
★★★★★ 머신러닝/딥러닝계의 바이블이라고 생각합니다!(Kebee 님)
★★★★★ 책장에 꽂아두고 마르고 닳도록 꺼내 보는 그러한 책인 것이다.(dragmove 님)

도서의 내용을 공개할 수 있도록 허락해 주신 한빛미디어 출판사에 깊이 감사드립니다. 이 책의 저작권은 한빛미디어(주)에 있으므로 무단 복제 및 무단 전제를 금합니다.

추천의 글

옮긴이의 말

이 책에 대하여

감사의 글

1. 한눈에 보는 머신러닝

  1. 머신러닝이란?
  2. 왜 머신러닝을 사용하는가?
  3. 머신러닝 시스템의 종류
    1. 지도 학습과 비지도 학습
    2. 배치 학습과 온라인 학습
    3. 사례 기반 학습과 모델 기반 학습
  4. 머신러닝의 주요 도전 과제
    1. 충분하지 않은 양의 훈련 데이터
    2. 대표성 없는 훈련 데이터
    3. 낮은 품질의 데이터
    4. 관련 없는 특성
    5. 훈련 데이터 과대적합
    6. 훈련 데이터 과소적합
    7. 한걸음 물러서서
  5. 테스트와 검증
  6. 연습문제

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

  1. 실제 데이터로 작업하기
  2. 큰 그림 보기
    1. 문제 정의
    2. 성능 측정 지표 선택
    3. 가정 검사
  3. 데이터 가져오기
    1. 작업환경 만들기
    2. 데이터 다운로드
    3. 데이터 구조 훑어보기
    4. 테스트 세트 만들기
  4. 데이터 이해를 위한 탐색과 시각화
    1. 지리적 데이터 시각화
    2. 상관관계 조사
    3. 특성 조합으로 실험
  5. 머신러닝 알고리즘을 위한 데이터 준비
    1. 데이터 정제
    2. 텍스트와 범주형 특성 다루기
    3. 나만의 변환기
    4. 특성 스케일링
    5. 변환 파이프라인
  6. 모델 선택과 훈련
    1. 훈련 세트에서 훈련하고 평가하기
    2. 교차 검증을 사용한 평가
  7. 모델 세부 튜닝
    1. 그리드 탐색
    2. 랜덤 탐색
    3. 앙상블 방법
    4. 최상의 모델과 오차 분석
    5. 테스트 세트로 시스템 평가하기
  8. 론칭, 모니터링, 그리고 시스템 유지 보수
  9. 직접 해보세요!
  10. 연습문제

넘파이 튜토리얼

핸즈온 머신러닝 1장, 2장”에 대한 47개의 생각

  1. gyogyo

    from sklearn.datasets import fetch_mldata
    mnist = fetch_mldata(‘MNIST original’)

    이 두 줄을 실행하면 아래의 에러가 뜹니다. 왜 그럴까요?
    IndexError: index out of range

    좋아요

    응답
    1. 박해선 글의 글쓴이

      사이킷런은 mldata.org 사이트에서 예제 데이터를 다운로드하는데요. 이 사이트 지금 접속이 안되네요. ㅠ.ㅠ 아마도 데이터를 제대로 다운받지 못해서 발생하는 문제인 것 같습니다. 제 컴퓨터의 ~/scikit_learn_data/mldata/mnist-original.mat 파일 사이즈가 53메가 정도되는데 비교해서 확인해 보시면 좋을 것 같네요.

      좋아요

      응답
      1. 전창민

        mldata.org에 계속 접근이 안되는데 혹시 다른 방법이 있을까요…?
        코드 실행하면 TimeoutError가 뜨고 mldata.org자체도 로딩이 안되네요

        좋아요

      2. gyogyo

        Copy 해도 index out of range 에러가 계속 뜹니다. 파일이 없다는 것이 아니고, 뭔가 다른 에러가 아닐까요?

        좋아요

      3. 박해선 글의 글쓴이

        mnist-original.mat 파일을 확실히 덮어 썼는지 확인해 보시겠어요? 이 파일의 사이즈는 55,440,440 바이트입니다. 사이즈가 맞다면 인터넷 연결이 없어도 fetch_mldata(‘MNIST original’) 함수 호출에서 에러가 발생하지 않을 것 같습니다.

        좋아요

      4. gyogyo

        왜 그런지 모르겠지만, fetch_mldata(‘MNIST original’)를 몇번 재실행 하니 됩니다.
        고맙습니다~

        Liked by 1명

  2. gyogyo

    p228 Gini impurity 계산하는 본문에 오류가 있습니다. 식 6-1의 윗줄에 ” 예를 들어, 깊이 2의 왼쪽 노드의 gini 점수는 1- (0/54)^2 – (49/54)^2 ∽ 0.168입니다. ” 라는 문구가 있는데요. 계산수식에 -(5/54)^2 항을 추가해야 할 듯 합니다.

    번역이 너무너무 깔끔해서 공부하기 좋네요. 정말 감사드립니다.

    좋아요

    응답
  3. 박인혁

    책124p
    from sklearn.datasets import fetch_mldata
    mnist = fetch_mldata(‘MNIST original’)
    mnist

    실행하면
    TimeoutError: [WinError 10060] 연결된 구성원으로부터 응답이 없어 연결하지 못했거나, 호스트로부터 응답이 없어 연결이 끊어졌습니다

    라고 뜨는데 제가 사용하고 있는 인터넷에는 아무 문제가 없습니다.
    어떻게해야되죠..?

    좋아요

    응답
      1. 박인혁

        죄송한데요.. 사이킷런 0.20.2로 업데이트 했고 알려주신대로 fetch_mldata를 fetch_openml로 수정했음에도 불구하고 같은 에러가 뜹니다.. 다른 문제가 있는건가요 ㅠㅠㅠㅠ

        좋아요

      2. 박해선 글의 글쓴이

        안녕하세요. 0.20.2 버전에서 정상 다운로드 확인됩니다. ~/scikit_learn_data/openml 폴더를 삭제하시고 다시 시도해 보시겠어요.

        좋아요

      1. 박해선 글의 글쓴이

        fetch_openml 함수에서 데이터를 올바르게 다운로드하지 못해서 생기는 문제 같습니다. 사용자 홈 폴더 아래 scikit_learn_data/openml/openml.org/ 폴더를 지우고 다시 시도해 보세요.

        좋아요

  4. 김동현

    안녕하세요, 이 책을 사서 공부하고 있는 학생입니다. 다름 아니라 블로그에 공부한 내용을 정리 및 요약을 해서 글을 쓰는 중인데 혹시 계속 이렇게 해도 괜찮은가 해서 여쭤봅니다. 안되면 글 내리려고 합니다. https://blog.naver.com/zoown13

    좋아요

    응답
    1. 박해선 글의 글쓴이

      안녕하세요. 사실 책의 내용에 대한 저작권은 출판사에 있답니다. 명확한 기준이 없다는 것도 특징입니다. 🙂
      일반적으로 책의 내용을 요약하는 것이 문제되지는 않습니다. 여러 문단을 통채로 옮기거나 이미지를 복사하시면 출판사에서 수정을 요청하실 수도 있습니다. 자주 있는 일은 아닙니다. 깃허브에 공개된 텍스트나 그래프, 이미지, 코드는 모두 재 사용 가능합니다.
      책을 구매해 주셔서 감사합니다. 도움이 되시길 바랄께요!

      좋아요

      응답
  5. 김은호

    같은 저자의 “Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow (2nd Edition)”를 번역할 계획이 있는지 궁금합니다.

    Liked by 1명

    응답
  6. 광영

    2판 109페이지 하단, 임계값에 따라 희소행렬 혹은 밀집행렬을 반환한다 라는 부분이 잘 이해가 가지 않습니다.

    좋아요

    응답
    1. 박해선 글의 글쓴이

      안녕하세요. 그 앞의 문단을 함께 참고하세요. ColumnTransformer는 0이 아닌 원소가 임곗값보다 많으면 밀집 행렬을 반환합니다. 그 반대의 경우는 희소행렬을 반환합니다.

      좋아요

      응답
  7. 광영

    4장 식 4-5 편도함수 식에서 왜 위첨자 i는 다 괄호가 붙어있는 건가요? 괄호의 의미가 뭔지 모르겠습니다. 파라미터 j에 대한 배치 m개 안의 개별 요소 i 들이라는 의미라면 괄호가 없어도 무방할거 같은데요;;

    좋아요

    응답
    1. 박해선 글의 글쓴이

      안녕하세요. 무슨 의미가 있는 것은 아닙니다. 2장 초반에 저자가 책에 사용할 표기법을 그렇게 정의했기 때문입니다. 🙂

      좋아요

      응답
  8. 광영

    선생님 4장의 180쪽 그림 4-14와 같은 모양을 그려내는데는 성공하였습니다.
    다만 이 과정에서 의아했던것이 파이프라인으로 폴리피쳐와 스케일러를 핏&도란스포즈 시켜주고 마지막에 리니어를 핏 시켜주는데, 선생님 코드에서 파이프라인이기 때문에 모든 과정에서 X와 y를 모두 사용합니다. 이때 폴리피쳐를 핏 시키는 것은 사실 X만 사용해야 하는 것이 아닌가요?
    폴리피쳐를 핏&트랜스 시켜주면서 y도 같이 사용하는 것이 이해가 가지 않습니다.
    스케일러에 y가 섞인 폴리피쳐가 들어가게 되는데요;;;;;

    좋아요

    응답
    1. 광영

      자답입니다. PolynomialFeatures, StandardScaler 는 y가 들어가도 무시합니다. 핏엔 도란스폼 형식을 파이프라인으로 받을 때도 문제 없게 하기 위해서 그런거 같습니다. 안 쓰면, 넣어줘도 무시하는 식으로

      Liked by 1명

      응답
  9. 광영

    5.4.2 목적함수로 시작 부분에서

    “결정함수의 기울기를 생각해보면 이는 가중치 벡터의 노름 ||w||와 같습니다” 라는 문장이 도저히 이해가 안갑니다.

    “이는” 이 지칭하는 것이 무엇인가요? 결정함수의 기울기가 바로 가중치 벡터의 놈 이라는 것입니까?

    느낌상으로는 “결정함수의 기울기를 생각해보면 마진은 가중치 벡터의 노름 ||w||에 비례합니다” 가 맞는 문장 아닌가 싶습니다.

    좋아요

    응답
      1. 광영

        기울기는 양음 으로 방향이 갈리는데, 놈은 방향이 없는 벡터의 절대값이지 않습니까? 결정함수의 기울기가 벡터의 크기 이다 라는 말씀은, 양음은 관계 없이 큰 놈은 큰 절대값 기울기를 보인다는 말씀이신가요?

        좋아요

  10. 광영

    선생님 그리드서치cv에서 어떻게 프로그레스를 출력하셨습니까? 선생님 깃헙 handson-ml2/blob/master/09_unsupervised_learning.ipynb 에서 성공적으로 89번 셀에서 그리드서치 과정을 출력하셨는데, 저는 버보스를 바꿔봐도 출력되지 않습니다. https://stackoverflow.com/questions/24121018/sklearn-gridsearch-how-to-print-out-progress-during-the-execution
    “if you are using IPython Notebook, the output is in the IPython terminal window, not in the interactive session.”
    라고 해서 안보이는게 정상이라고 하긴 하는데…… 방법을 알려주시면 감사하겠습니다.

    좋아요

    응답
  11. 이동규

    안녕하세요. 늦깎이로 머신러닝에 입문하려고 애쓰는 독자입니다.
    핸즈온 머신러닝 2판을 구매하여 이제 컴퓨터를 켜고 시작하는데,
    2.3.1 작업환경 만들기 부터 막혔습니다. 염치 불구하고 도움을 부탁드립니다.
    python을 설치하고 처음으로 터미널을 실행해서 작업 디렉터리를 만드는데
    export ML_PATH=”$HOME/ml”을 입력하면
    “Syntax error: invalid syntax”만 나옵니다.
    책에 나와있는 이후의 모든 명령에도 같은 에러가 나옵니다.
    (mkdir, pip3 등등)
    windows 10, 64bit,최신 업데이트 되어 있으며, python 3.9 64bit입니다.
    구글을 검색해봐도 잘 모르겠고…여러번 재설치 해도 마찬가지 이며, 다른 컴퓨터에서도 같은 에러가 나오는거 보면, python설치만으로는 위의 명령이 안되는것인가요?
    너무 초보적인 내용의 질문을 드려서 죄송합니다.

    좋아요

    응답
    1. 박해선 글의 글쓴이

      안녕하세요. 혹시 파이썬 쉘에서 실행하셨나요? 책에 $로 시작하는 명령은 리눅스 쉘 명령입니다. 대부분의 명령은 윈도에서도 그대로 사용할 수 있습니다. 윈도에서 파이썬을 사용하실 때는 아나콘다 프롬프트 창을 사용하세요. 감사합니다.

      좋아요

      응답
  12. 박인철

    안녕하세요. 혹시 핸즈온 머신러닝과 함께 보면 좋을 만한 피처 엔지니어링 관련된 책을 추천해주실 수 있으실까요? 피처 엔지니어링 관련된 책을 찾아봐도 이거다 싶은 게 없네요….

    좋아요

    응답
    1. 박해선 글의 글쓴이

      안녕하세요. 시중에 특성 공학 책이 몇 권 나와 있지만 제가 읽어 본 것이 없어서 추천을 하기가 어렵네요. 양해 부탁드립니다. 감사합니다.

      좋아요

      응답
  13. 김정석

    안녕하십니까? 혼공머신을 사서 즐겁게 공부하였습니다. 손코딩을 하면 모든 것이 잘되어 좋았습니다.
    그래서 5.5만 거금(ㅋ!)으로 핸즈온을 사서 따라하는데 잘 안됩니다.
    구글 코랩을 쓰기 때문에 2장의 ‘작업환경 만들기'(75~79p)를 건너 띄고, 2.3.2 데이터 다운로드 부터 코딩을 하였습니다.
    그런데 2.3.3 표가 코딩이 에러나고, 그 다음에는 모든 코딩에서 아래같은 ‘housing’이 에러가 나서 진행을 할 수 없습니다. 지도해 주시기 바랍니다.

    32 train_set, test_set = split_train_test(housing, 0.2)
    33 len(train_set)
    34 len(test_set)

    NameError: name ‘housing’ is not defined

    추신; 참고로 저는 6명이 하는 스터디 그룹 리더로 혼공머신의 매력에 빠져 신뢰하고 이 책을 구입하여 열공하고 있습니다.
    김정석 010 7180 3506 드림

    좋아요

    응답
      1. 김정석

        빠른 답에 감사 드립니다. ^^!
        그런데 안내 해 주신 사이트에서 주피터 노트북 코딩을 그대로 카피해서 붙였는데도 아래 둘째 코딩 assert sys . version_info > = ( 3 , 5 )에서 에러가 납니다.
        왜 그런지 지도 바랍니다.
        김정석 드림

        # 정식 ≥3.5 필수
        import sys
        assert sys . version_info > = ( 3 , 5 )

        # 사이 킷런 ≥0.20 필수
        import sklearn
        assert sklearn . __version__ > = “0.20”

        좋아요

  14. 손의정

    안녕하세요. 좋은 책을 번역해주심에 항상 도움을 받고 있습니다. 한가지 질문이 있습니다.
    7장 연습문제 7번의 그래디언트 부스팅이 과대 적합이 되었을때 이를 해결방안으로 학습률(learning_rate) 를 높여야 하는지 낮춰야 하는지에 대한 질문인데요.
    과대적합이된 경우는 learning_rate는 작게 설정이 되어서 학습 데이트를 촘촘하게 이동하면서 학습을 하고, n_estimatros 는 크게 설정을 하여 많은 학습기가 사용되어진 경우일 것입니다. 그렇다면 과대적합을 해결하기 위해서는 learning_rate 는 높여야 규제의 효과가 발생하여 덜 촘촘하게 학습을 하게 될것이고 특정 학습데이터에 한정되어진 overfit 현상의 해결과 일반화가 되어야 다른 테스트 샘플등에 사용을 할때도 prediction 등의 좋은 결과를 도출할수 있을것이라 생각됩니다.
    연습문제의 답이 학습률을 낮춰야 한다고 되어 있어서 질문드립니다.

    좋아요

    응답
    1. 박해선 글의 글쓴이

      안녕하세요. 박해선입니다. 부스팅 알고리즘의 학습률은 경사 하강법의 학습률과 다릅니다. 부스팅에서 학습률은 이전 트리의 오차를 얼마나 강하게 보정할 것인지를 결정합니다. 따라서 학습률이 커지면 복잡한 모델이 만들어 집니다. 감사합니다.

      좋아요

      응답
  15. 손의정

    안녕하세요.. 빠르고 정확하게 지적해주신 내용을 정리해보자면..
    -경사 하강법의 학습률(learning_rate)은 step size 의 개념으로
    낮추면 조금씩 움직이며 발산하지 않으나 최적의 값을 도출하는데 많은 시간을 소요 및 과대적합의 가능성이 있음.
    – 부스팅 의 학습률은 이전 트리의 오차를 보정하는 값으로
    높이면 오차를 강하게 보정하며 복잡한 모델( 분산이 크다 )로서 과대적합의 가능성이 있음.
    즉, 그래디언트 부스팅이 과대적합이 되었다면 학습률을 낮춰서 해결합니다~
    p.s : 박해선 작가님의 거의 모든 책을 수집한 사람으로서 앞으로도 좋은 서적 출간 부탁 드립니다~

    Liked by 1명

    응답
    1. 박해선 글의 글쓴이

      네 맞습니다. 제 책을 많이 구매하셨다니 정말 감사드립니다. 덕분에 저도 큰 도움을 받고 있습니다. 앞으로 출간될 책들도 기대해 주세요! 😀

      좋아요

      응답

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.