
<혼자 공부하는 머신러닝+딥러닝>의 주피터 노트북을 코랩(사이킷런 1.2.2와 텐서플로 2.11.0)에서 모두 재실행하여 업데이트했습니다.
9-02절의 코드가 원-핫 인코딩 벡터 크기 때문에 코랩에서 메모리 부족을 일으킵니다. 이를 피하기 위해 사용하는 단어 개수를 500개에서 300개로 줄였습니다. 자세한 수정 내용은 에러타 페이지를 참고해 주세요.
감사합니다!
<혼자 공부하는 머신러닝+딥러닝>의 주피터 노트북을 코랩(사이킷런 1.2.2와 텐서플로 2.11.0)에서 모두 재실행하여 업데이트했습니다.
9-02절의 코드가 원-핫 인코딩 벡터 크기 때문에 코랩에서 메모리 부족을 일으킵니다. 이를 피하기 위해 사용하는 단어 개수를 500개에서 300개로 줄였습니다. 자세한 수정 내용은 에러타 페이지를 참고해 주세요.
감사합니다!
<파이썬 라이브러리를 활용한 머신러닝(개정 2판)>의 코드를 사이킷런 1.2.1 버전에서 재실행하여 깃허브에 업데이트했습니다.
주요 수정 사항은 다음과 같습니다. 사이킷런 1.2 버전에서 load_boston()
함수가 삭제되었기 때문에 대신 보스턴 주택 데이터셋을 직접 다운로드 하도록 수정합니다. 넘파이 1.20 버전에서 np.bool
이 deprecated 되었기 때문에 대신 bool
을 사용합니다.
맷플롯립 3.4.0 버전에서 _rebuild()
메서드가 사라졌기 때문에 대신 3.2.0 버전에서 추가된 addfont()
메서드를 사용하여 한글 폰트를 추가하도록 수정합니다. 또 imshow()
함수에서 vmin
, vmax
매개변수를 삭제했습니다.
감사합니다!
최근 릴리스된 사이킷런 1.1.x 버전에서 변경된 부분에 맞춰 <(번역개정2판) 파이썬 라이브러리를 활용한 머신러닝>의 본문 내용을 다음과 같이 업데이트합니다!
SGDClassifier
의 loss
매개변수 중 로지스틱 손실을 의미하는 'log'
가 'log_loss'
로 바뀔 예정이므로 첫 번째 줄에서 “훈련합니다.”를 “훈련합니다(1.3 버전에서 'log'
가 'log_loss'
로 바뀔 예정입니다).“로 수정합니다.RandomForestClassifier
와 ExtraTreesClassifier
의 max_features
매개변수 기본값이 'auto'
에서 'sqrt'
로 바뀔 예정이므로,RandomForestClassifier
의 max_features
기본값이 'auto'
로 sqrt(n_features)
를 의미합니다. 1.3 버전에서는 max_features
기본값이 'auto'
에서 'sqrt'
로 바뀔 예정입니다.“"auto"
로 특성 개수의 제곱근을 나타내며, … 하지만 max_features="auto"
로 설정하면…”을 “랜덤 포레스트 분류기는 기본적으로 특성 개수의 제곱근을 사용하며, … 하지만 max_features="sqrt"
로 설정하면…”로 수정합니다.GradientBoostingClassifier
의 loss
매개변수 기본값이 1.3 버전에서 'deviance'
에서 'log_loss'
로 바뀔 예정이므로'deviance'
입니다.”를 “손실을 의미하는 'deviance'
입니다(1.3 버전에서 'deviance'
가 'log_loss'
로 바뀔 예정입니다).”로 수정합니다.'log_loss'
로 바뀔 예정)”으로 수정합니다.HistGradientBoostingClassifier
의 loss
매개변수 기본값이 1.3 버전에서 'auto'
에서 'log_loss'
로 바뀔 예정이므로 표 2-2의 히스토그램 기반 부스팅의 ‘손실 함수’ 항목에서 “(이진분류는 'binary_crossentropy'
, 다중 분류는 'categorical_crossentropy'
)”을 “(로지스틱 손실. 1.3 버전에서 'log_loss'
로 바뀔 예정)”로 수정합니다.OneHotEncoder
클래스에 자주 등장하지 않는 범주를 하나로 묶어주는 min_frequency
와 max_categories
매개변수가 추가 되었습니다. 4.2절 아래 세 번째 줄에서 “OneHotEncoder
클래스에 구현되어 있습니다.”를 “OneHotEncoder
클래스에 구현되어 있습니다.<주석>옮긴이_ 버전 1.1에서 추가된 min_frequency
매개변수를 사용하면 특정 횟수 또는 비율 보다 적게 등장하는 범주를 하나의 특성으로 합칠 수 있습니다. 또한 max_categories
매개변수를 사용하여 원-핫 인코딩으로 만들어지는 특성의 개수를 제한할 수 있습니다.</주석>“로 수정합니다.감사합니다! 🙂
지난 달에 XGBoost 1.6 버전이 릴리스되었습니다. 무엇보다도 이번에 범주형 변수에 대한 지원이 확대된 것이 눈에 띱니다. 1.5버전에서 'gpu_hist'
만 범주형 변수를 지원했는데 1.6 버전에서는 'hist'
, 'approx'
에서도 범주형 변수를 지원합니다. 또 LightGBM처럼 원-핫 인코딩을 위한 범주 개수의 임곗값을 지정하는 max_cat_to_onehot
매개변수가 추가되었습니다. 기본값은 4입니다.
또한 다중 출력 모델을 지원하고, 'approx'
트리 메서드를 'hist'
를 기반으로 재작성했으며, 모델 저장을 위해 UBJSON 포맷을 지원합니다. 이외에도 많은 기능이 추가, 개선되었습니다. 자세한 내용은 XGboost 릴리스 노트를 참고하세요.
<XGBoost와 사이킷런을 활용한 그레이디언트 부스팅>의 깃허브 코드는 사이킷런 1.1과 XGBoost 1.6에서 모두 테스트되었습니다.
다음은 두 라이브러리의 버전 변경으로 인해 수정할 내용입니다.
DecisionTreeClassifier
와 DecisionTreeRegressor
, ExtraTreeClassifier
, ExtraTreeRegressor
, RandomForestClassifier
, RandomForestRegressor
, ExtraTreesClassifier
, ExtraTreesRegressor
의 max_features
매개변수 중 'auto'
가 'sqrt'
와 동일합니다. 1.3 버전에서 'auto'
가 삭제된다는 deprecated 경고가 발생하므로 'auto'
를 'sqrt'
로 변경합니다.use_label_encoder
매개변수 기본값이 True
에서 False
로 변경되었습니다. 따라서 타깃 레이블을 0부터 인코딩해야 합니다.y = df.iloc[:,0]
을 y = df.iloc[:,0] - 1
로 수정합니다.y = df.iloc[:,0]
을 y = df.iloc[:,0] - 1
로 수정합니다.recall_score()
함수를 호출하려면 y_test
, y_pred
와 함께 pos_label=2
로 지정해야 합니다”를 “recall_score()
함수를 호출하려면 y_test
와 y_pred
를 전달해야 합니다”로 수정합니다. 그 아래 recall_score()
함수 호출에서 pos_label=2
를 삭제합니다.y = df.iloc[:,0]
을 y = df.iloc[:,0] - 1
로 수정합니다. 아래에서 1번째 줄에서 pos_label=2
를 삭제합니다.df_train[df_train['LABEL']==2].values
를 df_train[df_train['LABEL']==1].values
로 수정합니다. 아래에서 1번째 줄에서 pos_label=2
를 삭제합니다.'approx'
와 'hist'
에서도 범주형 변수를 지원합니다.”를 추가합니다.사이킷런 1.1 버전이 릴리즈되었습니다. 주요 변경 사항은 다음과 같습니다.
HistGradientBoostingRegressor
의 손실 함수에 quantile
이 추가되었습니다.neighbors
, decomposition
, impute
모듈 등을 포함하여 이제 모든 변환기에 get_feature_names_out
메서드가 추가되어 본격적으로 데이터프레임을 훈련 데이터로 사용할 수 있습니다.OneHotEncoder
클래스에 자주 등장하지 않은 범주를 하나로 묶어주는 min_frequency
와 max_categories
매개변수가 추가되었습니다. 자세한 내용은 가이드를 참고하세요.NMF
의 온라인 학습 버전인 MiniBatchNMF
클래스가 추가되었습니다.KMeans
알고리즘의 계층 군집 버전인 BisectingKMeans
클래스가 추가되었습니다.이 외에도 많은 기능이 추가되고 개선되었습니다. 자세한 내용은 사이킷런 1.1 버전의 릴리스 노트를 참고하세요!
최고의 그레이디언트 부스팅 라이브러리 중 하나인 XGBoost를 다룬 <XGBoost와 사이킷런을 활용한 그레이디언트 부스팅> 책이 출간되었습니다!
그레디이디언트 부스팅 알고리즘을 소개하는 것 외에도 XGBoost와 사이킷런의 그레이디언트 부스팅 모델의 다양한 옵션을 소개하고 튜닝하는 방법을 설명합니다.
번역서에는 인기가 많은 또 다른 그레이디언트 부스팅 라이브러리인 LightGBM과 CatBoost, 그리고 사이킷런에 최근에 추가된 히스토그램 기반 부스팅도 부록으로 추가했습니다! 즐거운 부스팅 생활을 위하여! 🙂
2017년 처음 이 책을 작업할 때 사이킷런 코드를 보면서 무식하게 노트에 한 줄 한 줄 펜으로 번역해서 옮겼던 기억이 납니다. 사이킷런 개발자가 쓴 책인만큼 잘 옮기고 싶었고 그때는 지금처럼 좋은 책이 많지 않아서 더 그랬던 것 같습니다.
무슨 생각이 들었는지 읽을만한 책을 만들자고 호기롭게 시작한 그 도전이 5년을 지나 오늘 여기까지 오게된 것 같네요. 이 책이 없었다면 아마 지금 다른 일을 하고 있을 것 같습니다.
2019년 번역개정판을 내고도 많은 분들에게 꾸준히 사랑을 받았습니다. 정말 감사드립니다. 새로운 번역개정2판은 최근 릴리즈된 사이킷런 1.0 버전을 반영하였습니다. 새로운 기능과 변경된 내용을 많이 담아서 500페이지가 넘었습니다. 또 구글 코랩에서 실습할 수 있도록 코드를 업데이트했습니다. 흔쾌히 번역개정2판을 허락해 주신 한빛미디어 출판사에 감사드립니다. 다시 한 번 머신러닝 학습의 엔트로피를 줄이는데 도움이 되기를 기대합니다! 감사합니다! 🙂
아래는 구글 Machine Learning GDE인 박찬성 님이 <머신러닝 파워드 애플리케이션>을 읽은 후 작성하신 리뷰입니다. 찬성 님의 허락을 받아 블로그에 싣게 되었습니다. 좋은 리뷰 정말 감사합니다! 🙂
머신러닝 파워드 애플리케이션 독서 후기
이 책은 머신러닝이 탑재된 애플리케이션을 만들기위해, End to End 로(처음부터 끝까지) 들어가야 하는 노력을 잘 정리해 보여준다. 이 책만의 몇 가지 특징이 있는 데, 그 중 두개를 꼽자면
머신러닝 에디터라는 애플리케이션을 만드는 예를 보여주는것 같지만, 이 구체적인 예제를 다룸과 동시에 다양한 문제에 사용될 수 있는 접근법들을 함께 설명한다. 구체적인 예제를 풀어내지만, 일반적인 컨셉도 함께 배울 수 있다.
애플리케이션 구축에 필요한 모든 요소에 동일한 가중치를 두고 설명한다. 데이터 수집, 모델링, 배포, 모니터링 등에서 한 부분에만 집중하지 않기 때문에, 성공적인 애플리케이션 구축을 위해서는 “모든 부분이 중요하다”는 사실을 묵시적으로 뇌리에 잘 심어주는것 같다.
이 책이 강조하는 부분은 반복성이다. 애플리케이션을 만드는 전체 과정의 입장에서의 반복. 또는 데이터 수집/검증, 모델링, 배포 후 사용자와의 상호작용 등 전체 파이프라인의 부분별로의 반복. 빠르게 아이디어를 실험하고, 검증을 통해 문제를 파악하고, 개선하는 반복의 사이클을 항상 고려해야만 성공적인 머신러닝이 탑재된 애플리케이션을 만들 수 있다는것이다.
이는 다른 책에서도 흔히 볼 수 있는 강조인데, 이 책에서는 특히 더 많이 강조하는 부분인것 같다. 전체 파이프라인, 모델링 측면에서는 그렇다고 많이 느끼고 있었는데, 이를 현재 보유한 인력에 맞춰 더욱 잘게 쪼개진 사이클을 만들 수 있구나 라는걸 알게되었다.
이 책은 애플리케이션을 구축하는 전반을 다룬다. 따라서 “서비스”, “고객”의 관점에서 내용을 설명한다. 대개 인공지능이 모든것을 대체할 것이다 라고들 생각하는 경향이 있지만, 100%의 예측이란 불가능하기 때문에 머신러닝이 실패할 때를 항상 대비해야한다. 이 실패를 대처하는 방법으로 머신러닝이 도입되기 전 활용되어온 규칙기반 알고리즘, 또는 매우 단순하게라도 작동하는 간단한 머신러닝 모델을 추가적으로 활용하는것이다.
즉 머신러닝이 실패하는 상황을 “우아하게” 대처하기 위해서는 머신러닝이 들어가기 이전의 노력 + 머신러닝을 운용하는 노력이 결합되어야 한다는 것이다. 그리고 이를 위해서는 도메인 지식을 집요하게 습득하려는 노력이 선행되어야한다. AI가 만능이다 라는 생각도 가져야 하지만(그래야 더 완성도 높은 모델을 만들기 때문에), AI 붐이 일어나기 전 수십년간 사람들이 축적해온 문제 해결 능력/방법은 결코 무시해서는 안된다.
머신러닝이 탑재되는 애플리케이션/시스템을 만들겠다는 계획은 좋지만, 그 전에 MVP로 만들어야 할 것은 머신러닝이 탑재되지 않은 버전의 최선의 결과물이어야 할 것이다.
그 외에도 보다 구체적인 경험적 방법 (모범 사례)를 파이프라인의 각 요소마다 상세히 설명하고 있다. 물론 추가적인 리서치는 필요하지만, 큰 그림을 이해하고 체크리스트를 만들기에 충분한 지식을 전달한다.
약간 아쉬운점은 비교적 배포, 모니터링, 인프라에 대한 내용이 부족하다는 것이다. 하지만 보다 구체적인 내용을 뒷받침할 수 있는 책들이 많으므로 함께 읽어보면 좋을것 같다고 생각한다.
이 책은 두 번 이상 읽을 때 더 도움이되는 책이며, 각 장마다 제시하는 여러가지 옵션을 시각적으로 표현하거나 체크-리스트로 만들어 관리하면 꽤 도움이 될 것이라고 느꼈다. 다음 주 부터 재독을 진행할 예정인데, 만들게되면 공유해 보겠습니다
교보문고 2021 올해의 책에 <혼자 공부하는 머신러닝+딥러닝>과 <파이토치로 배우는 자연어 처리> 책이 선정되었습니다. <혼자 공부하는 머신러닝+딥러닝>은 AI/ML 분야에서 1등을 했고 <파이토치로 배우는 자연어 처리>는 자연어 처리 분야에서 1등을 했습니다! (머신 러닝 교과서도 후보에 들었네요! 🙂 )
한 해 동안 제 책을 애독해 주신 모든 분들께 정말 감사드립니다!
<머신러닝 파워드 애플리케이션>의 주피터 노트북을 사이킷런 1.0에 맞추어 업데이트했습니다. 업데이트된 노트북은 깃허브 저장소에서 확인하실 수 있습니다. 감사합니다! 🙂