2020년을 회고하며..

작년 말부터 참여했던 일이 연초부터 삐그덕거리기 시작했습니다. 프로젝트가 순탄하게 진행되지 못하면 서로에게 언짢은 일을 만들게됩니다. 제겐 익숙한 분야라서 사실 어렵지 않게 진행할 수 있었는데 체력도 인내심도 한계인 것 같습니다. 이 때 한창 집 수리를 했습니다. 살림살이를 모두 창고에 보내고 한 겨울에 세 식구가 좁은 원룸에서 지냈습니다. 그래서 더 피곤하고 힘들었던 것 같습니다.

집 수리가 끝나고 홍대에 있던 작은 소호 사무실을 정리하고 집으로 컴퓨터와 책들을 옮겼습니다. 계획된 일정이었지만 겉보기에는 코로나를 피해 집으로 들어온 것처럼 되어 버렸죠. 코로나가 점점 심해지면서 텐서플로 서밋을 참여해야 하는지 걱정이 많았습니다. 같이 가기로 했던 텐서플로 코리아 운영진 이지민 님과 고민 끝에 안가기로 결정했습니다. 나중에는 텐서플로 서밋이 아예 취소되었습니다. 그다음 부터 줄줄이 오프라인 행사들이 연이어 취소되고 온라인으로 바뀌었습니다.

덕분에(?) 너무 늦지 않게 <핸즈온 머신러닝 2>을 완료해서 상반기에 출간을 했습니다. 2판에서 페이지 수가 많이 늘어났고 딥러닝 부분에 저자가 많은 공을 들인 것을 느낄 수 있었습니다. 번역 작업을 할 때 에러타를 종종 신고했는데요. 오렐리앙이 고마워하며 개정판을 낼 때 꼭 감사 인사를 넣겠다고 했는데 2판 감사의 말에 친절하게 제 이름을 써 주어 너무 기뻤습니다. 2판을 내면서 유튜브에 동영상 강의를 올리기 시작했습니다. 아직도 절반 밖에 진행을 못해서 아쉽지만 꼭 완주하려고 맘 먹고 있습니다.

여름에 장인 어른이 돌아가셨습니다. 오래 아프셨는데 이제 아프지 않고 좋은 곳에 계시리라 믿습니다. 아내가 많이 힘들어했습니다. 슬픔을 달래기 위해 오랫동안 쉬었던 방송통신대학을 다시 복학하라고 적극 권유했습니다. 아내는 한참을 망설였지만 막상 시작하니 아주 잘 2학기를 마쳤습니다. 숙제를 낼 때는 며칠 밤을 새며 고생하더니 결국 장학금까지 받게 되었습니다.:) 내년에는 아내를 응원하기 위해 저도 또 한번 방송통신대학에 편입합니다. 이번에는 통계-데이터학과에 지원했습니다. 원래 정보통계학과인데 이름이 바뀌었네요. 바뀐 이름에 걸맞게 커리큘럼도 좋아지길 기대해 봅니다.

가을에 <GAN 인 액션>을 번역하여 냈습니다. 다른 번역자가 시작한 작업인데 중도에 포기해서 제가 맡게 되었습니다. 번역하고 집필하는 일이 생계가 되다보니 독자층이 넓지 않은 책은 조금 부담스러운 것이 사실입니다. 공교롭게도 작년에 낸 <미술관에 GAN 딥러닝>과 함께 GAN 책을 두 권이나 번역하게 되었습니다. 그다음 <딥러닝 일러스트레이티드> 작업을 진행했습니다. 사실 훨씬 더 일찍 끝냈어야 하는데 이런 저런 일들이 겹쳐서 많이 늦어졌죠. 출판사에서 저 때문에 애를 많이 태우셨습니다.ㅠ.ㅠ 다른 일을 모두 물리고 이 책을 마무리하는데 노력했습니다. 이 자리를 빌어 양해해 주신 타사 출판사 담당자님에게 감사드립니다. 🙂

페이스북에 <텐서 ≈ 스터디 그룹>을 만들었습니다. 원래 홍대 머신러닝 스터디 모임이었지만 코로나 시대에 걸맞게(?) 온라인으로 전환했죠. 첫 번째 스터디로 구글 미트와 줌을 사용해 코세라의 텐서플로 자격증 과정을 함께 공부했습니다. 지금은 <혼자 공부하는 머신러닝+딥러닝> 스터디를 진행하고 있습니다. 쓰거나 번역하는 책을 모두 스터디로 열 수는 없지만 가능하면 끊기지 않게 계속 진행하려고 생각하고 있습니다. 유튜브에 <핸즈온 머신러닝 2>와 함께 올리고 있던 <Do It! 딥러닝 입문> 유튜브 강의를 완료했습니다. 강의라 하기에는 많이 부족하지만 의외로 여러 사람에게 도움이 되는 것 같아 소소한 보람을 느낍니다. 연말에 <핸즈온 머신러닝 2>가 교보문고 2020년 머신러닝/딥러닝 부분에서 올해의 책으로 선정되었습니다. 또 Yes24 2020 베스트 IT 전문서에도 뽑혀서 너무 기뻤습니다.

12월에 <혼자 공부하는 머신러닝+딥러닝>을 출간했습니다. 아이디어에서부터 집필, 수정, 리뷰까지 1년이 걸린 작업이었습니다. 긴 시간 동안 제 글을 재미있게 읽고 용기를 북돋아 준 한빛미디어 조희진 차장님께 감사합니다. 이 책에는 제가 그린 그림을 전문 작가님이 제대로 그려서 넣어 주셨는데요. 조희진 차장님은 제 그림을 너무(?) 좋아하셔서 별책부록인 혼공 노트에는 제 그림이 일부 들어가 있습니다.ㅎ 이 책은 스토리와 비유를 적절히 넣어 독자들이 이해하기 쉽도록 썼습니다. 스토리와 비유가 너무 과하지 않도록 주의하면서 흥미를 잃지 않을만큼 충분히 넣어 전체적인 균형을 잃지 않도록 애썼습니다. 모쪼록 독자들에게 재미있고 이 분야를 더 탐구하고 싶은 욕구를 불어 넣을 수 있기를 바랍니다.

내년에도 재미있는 책들이 많이 기다리고 있습니다. 요즘은 Python Machine Learning 3판으로 <머신 러닝 교과서>의 개정판을 준비하고 있습니다. 사이킷런과 텐서플로 최신 버전을 반영하고 새롭게 GAN과 강화 학습 챕터가 추가되었습니다. 그 외에도 저의 첫 파이토치 번역이 될 Natural Language Processing with PyTorch, 아마존 베스트 셀러로 머신러닝 애플리케이션을 만들기 위한 베스트 프랙티스가 담긴 Building Machine Learning Powered Applications, TensorFlow.js를 다룬 Deep Learning with Javascript, 머신러닝 끝판 왕인 XGBoost를 다룬 Hands-on Gradient Boosting with XGBoost and Scikit-learn, 프로그래머를 위한 딥러닝 책인 AI and Machine Learning for Coders 등이 기대됩니다. 게으름을 피우지 않고 모두 잘 해내야 할 텐데 걱정입니다. 🙂

2020년이 지났습니다. 올 한해 제 책을 사랑해 주신 모든 분들께 정말 감사드립니다. 새해 복 많이 받으세요!

박해선

“Do It! 딥러닝 입문” 동영상 강의 완결!

지난 5월부터 만들기 시작한 <Do It! 딥러닝 입문>의 동영상 강의를 모두 완결했습니다(유튜브 플레이리스트). 대단한 컨텐츠도 아닌데 짬짬이 시간을 내기가 쉽지 않았던 것 같습니다. 모쪼록 혼자 책을 보시기 어려울 때 도움이 되었으면 좋겠습니다! 🙂

이번에 출간한 <혼자 공부하는 머신러닝+딥러닝>은 초반부터 바짝 스터디를 진행해서 동영상 컨텐츠를 만들어 올릴 생각입니다. 두 책이 어떻게 다른지 궁금하신 분이 많은 것 같습니다. 제가 쓰거나 번역한 책을 비교해 보려면 “어떤 책을 봐야 하나요?” 페이지를 참고해 주세요. 한 눈에 전체 책을 조망해 볼 수 있도록 재미난 그림을 그려보았습니다. ㅎㅎ 즐거운 한 주간 되세요!

“핸즈온 머신러닝 2” 교보문고 2020 올해의 책 선정!

교보문고에서 진행한 “2020 올해의 책 IT 전문서” 투표에서 머신러닝/딥러닝 부분에서 “핸즈온 머신러닝 2“가 선정되었습니다. 정말 큰 영광입니다. 긴 시간 함께 노력해준 한빛미디어 윤나리 님께도 감사드립니다. 이 책을 좋아해 주고 투표에 참여해 주신 모든 독자 분들께 감사드립니다. 책은 늘 오타가 있습니다. 오류를 찾아 알려 주신 독자분들께 정말 깊이 감사드립니다. Yes24 “2020 IT 연말결산“에서도 2020 베스트 IT 전문서에 “핸즈온 머신러닝 2“가 선정되었습니다!

konlpy와 soynlp를 사용한 네이버 영화 리뷰 감성 분류

한글 데이터를 사용한 감성 분류 예제로는 네이버 영화 리뷰 데이터셋(https://github.com/e9t/nsmc)이 유명하죠. 파이썬에서 konlpysoynlp를 사용하여 네이버 영화 리뷰 데이터셋을 다룬 예제가 필요하신가요? “머신 러닝 교과서 2판”에 관련된 예제를 실을 예정입니다. 하지만 미리 맛보지 않을 이유는 없겠죠? Enjoy! 🙂

https://github.com/rickiepark/python-machine-learning-book-3rd-edition/blob/master/ch08/naver_movie_review.ipynb

* 참 konlpy 예제는 “(개정판)파이썬 라이브러리를 활용한 머신러닝” 책에도 있습니다! ㅎ

핸즈온 머신러닝 2 에러타 안내

안녕하세요. 핸즈온 머신러닝 2에 새롭게 에러타가 많이 추가되었습니다. 이번 에러타는 원서에 누적된 오류 보고를 포함하였고 사이킷런과 텐서플로 최신 버전에서 변경된 내용을 반영하였습니다. 다음 에러타 항목을 참고해 주세요. 핸즈온 머신러닝 2의 전체 에러타는 여기를 참고해 주세요. 감사합니다!

  1. (p100) 두 번째 문단 끝에 다음처럼 주석을 추가합니다. “… SimpleImputer의 객체를 생성합니다.<주석>옮긴이_ 사이킷런 0.22버전에서 최근접 이웃 방식으로 누락된 값을 대체하는 KNNImputer 클래스가 추가되었습니다.</주석>”
  2. (p109) 첫 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 변환을 적용해보겠습니다.<주석>옮긴이_ 사이킷런 0.22버전에서 열 이름이나 데이터 타입을 기반으로 열을 선택할 수 있는 make_column_selector() 함수가 추가되었습니다.</주석>”
  3. (p118) 54번 주석 끝에 다음 문장을 추가합니다. “사이킷런 0.24버전에서 파라미터 탐색 범위를 좁혀가면서 컴퓨팅 자원을 늘려가는 HalvingGridSearchCV와 HalvingRandomSearchCV가 추가됩니다. 이 예제는 https://bit.ly/halving-grid-search를 참고하세요.”
  4. (p128) 첫 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 구조를 가지고 있습니다.<주석>옮긴이_ 사이킷런 0.22버전에서 fetch_openml() 함수에 as_frame 매개변수가 추가되었습니다. 이 매개변수를 True로 설정하면 판다스 데이터프레임을 반환합니다.</주석>”
  5. (p140) 6번 주석 끝에 다음 문장을 추가합니다. “사이킷런 0.22버전에서 정밀도/재현율 곡선을 그려주는 plot_precision_recall_curve() 함수가 추가되었습니다.”
  6. (p142) 첫 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 그래프를 그립니다.<주석>옮긴이_ 사이킷런 0.22버전에서 ROC 곡선을 그려주는 plot_roc_curve() 함수가 추가되었습니다.</주석>”
  7. (p149) 첫 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 편리할 때가 많습니다.<주석>옮긴이_ 사이킷런 0.22버전에서 오차 행렬을 그래프로 그려주는 plot_confusion_matrix() 함수가 추가되었습니다.</주석>”
  8. (p188) 첫 번째 문단 2번째 줄에서 “2차방정식처럼 보이며 거의 선형적입니다“를 “3차방정식처럼 보입니다“로 정정합니다.
  9. (p230) 1번 주석 끝에 다음 문장을 추가합니다. “사이킷런 0.21버전에서 dot 파일을 만들지 않고 바로 트리를 그릴 수 있는 plot_tree() 함수도 추가되었습니다.”
  10. (p236) 5번 주석을 다음과 같이 바꿉니다. “옮긴이_ 사이킷런 0.21버전에서 히스토그램 기반 그레이디언트 부스팅이 추가되었고 presort 매개변수로 얻을 수 있는 성능 향상이 크지 않기 때문에 사이킷런 0.24버전에서 결정 트리와 그레이디언트 부스팅 클래스의 presort 매개변수가 삭제됩니다.”
  11. (p238) 9번 주석에서 “… min_impurity_decrease 분할 대상이 되기 위해 … min_impurity_split가 추가되었습니다“를 “… min_impurity_decrease가 추가되었습니다. 분할 대상이 되기 위해 … min_impurity_split는 0.25버전에서 삭제됩니다“로 수정합니다. 또 10번 주석 끝에서 “… 지원합니다“를 “… 지원했지만 0.22버전에서 비용 복잡도 기반의 사후 가지치기를 위한 ccp_alpha 매개변수가 결정 트리와 트리 기반의 앙상블 모델에 추가되었습니다“로 수정합니다.
  12. (p254) 7.4절 아래 두 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 크기로 지정합니다.<주석>옮긴이_ 사이킷런 0.22버전에서 랜덤 포레스트 클래스에 부트스트랩 샘플 크기를 지정할 수 있는 max_samples 매개변수가 추가되었습니다. 샘플 크기를 정수로 입력하거나 비율을 실수로 지정할 수 있습니다. 기본값은 훈련 세트 전체 크기입니다.<주석>”
  13. (p262) 7.5.2절에서 두 번째 문단, 첫 번째 줄에서 “그레이디언트 부스팅은 회귀 문제에도 아주 잘 작동합니다”를 “그레이디언트 부스팅은 분류 문제에도 아주 잘 작동합니다”로 정정합니다.
  14. (p266) 첫 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 훈련을 멈춥니다.<주석>옮긴이_ 사이킷런 0.20버전에서 그래디언트 부스팅에 조기 종료 기능이 추가되었습니다. 훈련 데이터에서 validation_fraction 비율(기본값 0.1)만큼 떼어 내어 측정한 손실이 n_iter_no_change 반복 동안에 tol 값(기본값 1e-4) 이상 향상되지 않으면 훈련이 멈춥니다.</주석>”
  15. (p267) 두 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 매우 비슷합니다.<주석>옮긴이_ 이외에도 히스토그램 기반 그레이디언트 부스팅을 구현한 LightGBM(https://lightgbm.readthedocs.io)이 있습니다. 사이킷런 0.21버전에서 히스토그램 기반 그레이디언트 부스팅을 구현한 HistGradientBoostingClassifier와 HistGradientBoostingRegressor가 추가되었습니다.</주석>”
  16. (p271) 첫 번째 문장 끝에서 다음처럼 주석을 추가합니다. “… 지원하지 않습니다.<주석>옮긴이_ 사이킷런 0.22버전에서 StackingClassifier와 StackingRegressor가 추가되었습니다.</주석>”
  17. (p319) 9.1.5절 아래 첫 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 훈련해보겠습니다.<주석>옮긴이_ 사이킷런 0.24버전에서 준지도 학습을 위한 SelfTrainingClassifier가 추가됩니다.</주석>”
  18. (p358) 첫 번째 문단 끝에서 “… 다중 출력 분류기multioutput classifier입니다.”를 “… 다중 레이블 분류기multilabel classifier입니다.”로 정정합니다.
  19. (p380) 아래에서 두 번째 문단 끝에서 “(89% 검증 정확도에 가까이 도달할 것입니다)”를 “(89.4% 검증 정확도에 가까이 도달할 것입니다)”로 수정합니다.
  20. (p405) 페이지 끝에 다음처럼 주석을 추가합니다. “… 배치 크기를 사용해보세요.<주석>옮긴이_ 텐서플로 2.4버전에서 케라스 모델의 compile() 메서드에 있는 steps_per_execution 매개변수를 1이상으로 설정하면 계산 그래프를 한 번 실행할 때 여러 배치를 처리할 수 있기 때문에 GPU를 최대로 활용하고 배치 크기를 바꾸지 않고 훈련 속도를 높일 수 있습니다.</주석>”
  21. (p408) 6번 문제 두 번째와 세 번째 항목에서 “가중치 벡터“를 “가중치 행렬“로 정정합니다.
  22. (p465) 12.2절 아래 첫 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 방법을 알아봅니다.<주석>옮긴이_ 텐서플로 2.4버전에서 넘파이 호환 API인 tf.experimental.numpy가 추가되었습니다.</주석>”
  23. (p475) 첫 번째 코드 블럭에서 my_softplus 함수 옆의 주석을 “# tf.nn.softplus(z)와 반환값이 같습니다.“에서 “# tf.nn.softplus(z)가 큰 입력을 더 잘 다룹니다.“로 수정합니다.
  24. (p492) 22번 주석 끝에 다음 문장을 추가합니다. “이 예는 번역서 깃허브에 있는 custom_model_in_keras.ipynb 주피터 노트북을 참고하세요.”
  25. (p531) 13.3.3절 아래 첫 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 노력하고 있습니다.<주석>옮긴이_ tf.keras.layers.experimental.preprocessing 아래 이미지 처리, 이미지 증식, 범주형 데이터에 관련된 전처리 층이 추가되었습니다.</주석>”
  26. (p633) 첫 번째 문단 마지막 부분에 “타깃(마지막 글자)를 분리하겠습니다”를 “타깃(마지막 100개의글자)를 분리하겠습니다”로 정정합니다.
  27. (p662) [식 16-2] 위 두 번째 줄에서 “아래쪽에 (전치되어) 표현되어 있습니다”를 “위쪽에 (전치되어) 표현되어 있습니다”로 정정합니다.
  28. (p663) 위에서 네 번째 줄에서 “왼쪽 아래 수직 점선으로”를 “왼쪽  수직 점선으로”로 정정합니다.
  29. (p711) [그림 17-19] 위의 “예를 들어 생성자의 출력을 ~ 풀링 층이 뒤따릅니다).” 문단을 다음 문단으로 교체합니다.
    “예를 들어 생성자의 출력을 4 × 4에서 8 × 8로 크게하려면(그림 17-19) 기존 합성곱 층(“합성곱 층 1”)에 (최근접 이웃 필터링을 사용한27) 업샘플링 층을 추가하여 8 × 8 크기 특성 맵을 출력합니다. 이 특성 맵이 새로운 합성곱 층(“합성곱 층 2”)으로 주입되고 다시 새로운 출력 합성곱 층으로 주입됩니다. “합성곱 층 1”의 훈련된 가중치를 잃지 않기 위해 ([그림 17-19]에 점선으로 표시된) 두 개의 새로운 합성곱 층을 점진적으로 페이드-인fade-in하고 원래 출력층을 페이드-아웃fade-out합니다. 이렇게 하기위해 새로운 출력(가중치 α)과 원래 출력(가중치 1 – α)의 가중치 합으로 최종 출력을 만듭니다. 비슷한 페이드-인fade-in/페이드-아웃fade-out 기법이 판별자에 새로운 합성곱 층을 추가할 때 사용됩니다(다운샘플링을 위해 평균 풀링 층이 뒤따릅니다). 모든 합성곱 층은 “same” 스트라이드 1을 사용하므로 입력의 높이와 너비를 보존합니다. 원래 합성곱 층도 마찬가지입니다. 따라서 (입력이 8 × 8이기 때문에) 8 × 8 출력을 만듭니다. 마지막으로 출력층의 커널 크기는 1입니다. 이를 사용해 입력을 필요한 컬러 채널 수 (일반적으로 3)로 투영합니다.”
  30. (p756) 위에서 3번째 줄에 “오차는 전이 (s, r, s’)가 매우 놀랍다는”를 오차는 전이 (s, a, s’)가 매우 놀랍다는”로 정정합니다.
  31. (p811) 주석 16번 끝에 다음 문장을 추가합니다. “텐서플로 2.4에서 GPU 메모리 사용량을 반환하는 tf.config.experimental.get_memory_usage() 함수가 추가되었습니다.”
  32. (p834) 첫 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 훈련 코드를 실행합니다.<주석>옮긴이_MultiWorkerMirroredStrategy는 텐서플로 2.4에서 experimental을 벗어나 안정 API가 됩니다.</주석>” 또한 마지막 문단, 마지막 문장 끝에 다음처럼 주석을 추가합니다. “… 생성자에 전달하세요.<주석>옮긴이_ 텐서플로 2.4에서 CollectiveCommunication 클래스의 이름이 CommunicationImplementation로 바뀝니다.</주석>
  33. (p835) 두 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 전략과 동일합니다).<주석>옮긴이_TPUStrategy는 텐서플로 2.3에서 experimental을 벗어나 안정 API가 되었습니다.</주석>
  34. (p849) 7번 문제 답의 마지막 항목에서 “\textbf{A}는 \textbf{A}'의 오른쪽에서 m \times n 단위 행렬 \textbf{I}_m이 추가되고 … 채워진 행렬입니다.”를 “\textbf{A}는 \textbf{A}'의 오른쪽에서 -\textbf{I}_m이 추가되고 … 채워진 행렬입니다(\textbf{I}_m은 m \times n단위 행렬).”로 정정합니다. 또한 바로 아래 A 행렬의 첫 번째 행 [\textbf{A}' \;\; \textbf{I}_m]을 [\textbf{A}' \,\, -\textbf{I}_m]으로 정정합니다.
  35. (p857) 6번 문제 답에서 2번째, 3번째 항목에 “가중치 벡터“를 “가중치 행렬“로 정정합니다.
  36. (p889) [식 C-4]의 우변의 두 항의 순서를 다음과 같이 바꿉니다.
    \sum_{i=1}^m \alpha^{(i)} - \dfrac{1}{2} \sum_{i=1}^m \sum_{j=1}^m \alpha^{(i)} \alpha^{(j)} t^{(i)} t^{(j)} \textbf{x}^{(i)^T} \textbf{x}^{(j)}
    그리고 [식 C-4] 아래 “여기서 \alpha^{(i)} \ge 0 \;\;\; i=1,2,\cdots,m 일 때”를 “여기서 \alpha^{(i)} \ge 0 \;\;\; i=1,2,\cdots,m 이고 \sum_{i=1}^m \alpha^{(i)} t^{(i)}=0 일 때”로 정정합니다.
    [식 C-4] 다음 문장에서 “이 함수를 최소화하고 … \hat{\alpha}^{(i)} \ge 0 벡터 …”를 “이 함수를 최대화하고 … \hat{\alpha}^{(i)} \ge 0이고 \sum_{i=1}^m \hat{\alpha}^{(i)} t^{(i)}=0 벡터 …”로 정정합니다.
    또한 [식 C-5] 아래에 “여기에서 n_s는 서포트 벡터의 개수입니다” 문장을 추가합니다.
  37. (p917) 첫 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 그래프를 살펴보겠습니다.<주석>옮긴이_이 부록의 코드는 12장의 주피터 노트북에 포함되어 있습니다.</주석>”

사이킷런 0.24 맛보기!

사이킷런 0.24 버전이 연내에 나오지 않을까 조심스럽게 예측해 봅니다. 이번에도 많은 기능이 추가되고 여러 버그가 수정되었습니다(저도 PR 하나를 기여했습니다! :).

0.24버전에서 기대되는 두 가지 기능이 있다면 순차 특성 선택과 Successive Halving(SH) 방식의 그리드 서치입니다. 순차 특성 선택은 전진 선택법, 후진 선택법 등으로 R에서는 이미 예전부터 제공되는 기능입니다. 그동안 사이킷런에 없어서 조금 아쉬웠는데요. SequentialFeatureSelector 클래스에서 전진, 후진 모드를 모두 제공합니다. 또한 SH 방식의 그리드 서치를 위해 HalvingGridsearchCV 클래스와 HalvingRandomSearchCV 클래스가 추가 되었습니다.

0.24 버전이 나오기까지 이 두 클래스를 기다리기 어렵다면 미리 잠깐 맛보기는 것은 어떨까요? 머신 러닝 교과서 2판을 위해 만든 순차 특성 선택HalvingGridSearchCV 노트북을 참고하세요! 🙂

“핸즈온 머신러닝 2″의 넘파이, 맷플롯립, 판다스 튜토리얼

<핸즈온 머신러닝 2>의 깃허브에서 제공하는 넘파이(tools_numpy.ipynb), 맷플롯립(tools_matplotlib.ipynb), 판다스 튜토리얼(tools_pandas.ipynb) 번역을 모두 마쳤습니다! 🙂

이 노트북은 깃허브에서 볼 수 있고 주피터 노트북 뷰어에서 볼 수 있습니다. 특히 ml-ko 사이트에서는 html로 빠르게 코드와 결과를 볼 수 있습니다. 노트북에 코랩 링크도 포함되어 있으니 시간날 때 언제든지 따라해 보세요!

사이킷런의 load_boston() 함수가 삭제될 예정입니다.

사이킷런의 load_boston() 함수가 삭제될 예정입니다. 이 데이터셋의 문제는 특성 “B” 때문입니다. 문서에서 볼 수 있듯이 이 특성은 도시의 흑인 비율을 사용합니다. 흑인 비율이 주택 가격에 미치는 요소인 거죠. 시대가 시대인만큼 요즘엔 수용하기 쉽지 않습니다. 오히려 이제야 문제가 제기되었다는 것이 부끄러울 수 있죠.

이 데이터를 삭제할지, 특성만 제거할지 의견이 다양했는데요. 결국 deprecate 경고를 내고 0.26 버전 즈음에서 삭제될 것 같습니다. 문제는 이 데이터셋이 책이나 블로그 등에 예제로 너무 많이 쓰였다는 점입니다. 제가 번역한 책에도 몇 군데 있을 것 같네요. ㅠ.ㅠ

사이킷런에서는 사라지겠지만 fetch_openml 함수를 사용하여 OpenML에서 가져올 수 있습니다.

from sklearn import datasets
X, y = datasets.fetch_openml('boston', return_X_y=True)

더 자세한 내용은 사이킷런 깃허브의 이슈를 참고하세요.

TF Python 3.5 support drop, TF Java release

Python 3.5 버전의 지원이 2020년 9월에 종료됨에 따라 파이썬 3.5용 텐서플로도 10월부터 지원이 중지됩니다. 2020년 10월 13일부터 나이틀리(nightly) 패키지가 만들어지지 않고 향후 TF 릴리스에도 파이썬 3.5 버전은 더 이상 포함되지 않습니다. 현재 텐서플로는 파이썬 3.5, 3.6, 3.7, 3.8을 지원하고 있습니다.

텐서플로 Java 0.2.0 버전이 릴리스되었습니다. 이는 첫 번째 알파 버전으로 텐서플로 2.3.1 버전을 기반으로 구성되었습니다. 자바 사용자들에게는 기쁜 소식입니다. 하지만 자바 버전이 왜 필요한지 의문을 다는 사람도 있네요. 🙂

“GAN 인 액션”이 출간되었습니다.

GAN 인 액션“이 출간되었습니다! 284페이지 완전 컬러입니다! 🙂

이 책은 야쿠프 란그르와 블라디미르 보크의 아마존 베스트셀러인 <GANs In Action>의 번역서입니다.(아마존매닝)

좋은 책을 믿고 맡겨 주신 한빛미디어와 윤나리 편집자님께 감사드립니다. 무엇보다도 이 책을 기다려 주신 독자분들께 감사드립니다. 책을 읽는 내내 즐거운 여행이 되셨으면 좋겠습니다! 온라인/오프라인 서점에서 판매중입니다. Yes24알라딘, 교보문고한빛미디어