
제가 만든 머신러닝 & 딥러닝 책 로드맵을 사용한 마우스 패드가 Yes24 이벤트 굿즈로 탄생했습니다! 🙂 제 책을 포함하여 IT 책을 사실 때 마우스패드를 사은품으로 선택할 수 있습니다. 이벤트에 대한 자세한 내용과 마우스패드 사진은 아래 Yes24 이벤트 페이지를 참고하세요!
http://m.yes24.com/momo/MobileEvent/yesPresent/yesPresent.aspx?EventNo=221016
제가 만든 머신러닝 & 딥러닝 책 로드맵을 사용한 마우스 패드가 Yes24 이벤트 굿즈로 탄생했습니다! 🙂 제 책을 포함하여 IT 책을 사실 때 마우스패드를 사은품으로 선택할 수 있습니다. 이벤트에 대한 자세한 내용과 마우스패드 사진은 아래 Yes24 이벤트 페이지를 참고하세요!
http://m.yes24.com/momo/MobileEvent/yesPresent/yesPresent.aspx?EventNo=221016
케라스(Keras) 라이브러리를 만든 프랑소와 숄레(François Chollet)의 딥러닝 책인 <Deep Learning with Python>의 2판 번역을 마쳤습니다. 원서는 현재 아마존에서 신경망 분야에서 5위에 랭크되어 있습니다. 예상대로 프랑소와의 책이라 매우 높은 인기를 얻고 있네요. 🙂
2판은 1판에 비해 많은 내용이 추가되고 콘텐츠 배열에도 변화가 있었습니다. 가장 대표적인 변화는 텐서플로 2.0 적용, 새로운 케라스 API, 합성곱과 순환 신경망 예제, 트랜스포머 추가 등입니다.
1판과 2판의 차이를 한눈에 보기 쉽게 그림으로 그려보았습니다. 그 아래에는 조금 더 자세히 2판의 장마다 1판의 어떤 부분과 연관이 있는지 새롭게 추가된 부분은 무엇인지 요약했습니다. 책을 보시는데 도움이 되셨으면 좋겠습니다. 이 번역서는 길벗 출판사를 통해 <케라스 창시자에게 배우는 딥러닝 2판>으로 곧 찾아뵙겠습니다! 🙂
build
, call
, __call__
메서드의 존재 이유를 상세히 설명하는 부분이 눈에 띄네요.fit()
, evaluate()
를 사용하면서 나만의 알고리즘을 적용하는 방법도 모두 설명하네요.timeseries_dataset_from_array
함수를 사용하여 코드가 훨씬 간결해졌습니다!TextVectorization
층과 함께 텍스트 전처리에 대해 자세히 소개합니다. BoW와 n-그램도 더욱 자세히 설명하고 1판에 없던 tf-idf 예제도 추가되었습니다. TextVectorization
층을 tf.data
파이프라인 또는 모델에 포함시킬 때를 명확하게 짚어주니 아주 좋네요. 그다음은 자연스럽게 임베딩 층으로 넘어가 사전 훈련된 단어 벡터를 사용하는 것까지 진행됩니다. 텍스트 분류에서 BoW와 RNN을 선택하는 기준에 대한 경험 법칙도 소개합니다. 이제 11장의 나머지 절반은 온통 트랜스포머 이야기입니다. 수식을 사용하지 않으면서 단계적으로 이해하기 쉽게 설명하는 저자의 능력이 여기에서 빛을 발합니다. 셀프 어텐션, 멀티 헤드 어텐션, 트랜스포머 인코더, 위치 임베딩까지 진행한 다음 다시 IMDB 텍스트를 분류해 봅니다. 그다음 텍스트 분류를 넘어서 기계 번역 예제(영어->스페인어)로 이동합니다. 먼저 LSTM으로 seq2seq 모델을 만들면서 인코더, 디코더의 상호 작용을 이해합니다. 그다음 트랜스포머 디코더를 만들고 트랜스포머 인코더와 합쳐서 완전한 기계 번역 모델을 만듭니다! 와우!!! 🙂최근 릴리스된 사이킷런 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
매개변수를 사용하여 원-핫 인코딩으로 만들어지는 특성의 개수를 제한할 수 있습니다.</주석>“로 수정합니다.감사합니다! 🙂
며칠 전 텐서플로 2.9버전이 릴리스되었습니다. 주요 변경 사항을 텐서플로 블로그에 소개했습니다. 요약하면 다음과 같습니다.
tf.function
의 트레이싱 방식을 개선했습니다.tf.config.experimental.enable_op_determinism()
의 기능을 개선하여 실행마다 동일한 결과를 얻을 수 있습니다.tf.keras.optimizers.experimental
API가 추가되었습니다. 향후 tf.keras.optimizers.experimental
가 tf.keras.optimizers.Optimizer
를 대체합니다.이 외에도 다양한 기능이 추가되고 변경되었습니다. Revisiting ResNets 모델인 tf.keras.applications.resnet_rs
, L2 정규화 층인 tf.keras.layers.UnitNormalization
, 새로운 규제 층인 tf.keras.regularizers.OrthogonalRegularizer
, 새로운 이미지 전처리 층인 tf.keras.layers.RandomBrightness
가 추가되었습니다. 더 자세한 내용은 텐서플로 릴리스 노트를 참고하세요!
<혼자 공부하는 머신러닝+딥러닝> 7장부터 시작하는 딥러닝 파트의 코드를 텐서플로 2.9 버전에서 모두 테스트하여 깃허브에 업데이트했습니다!
항상 최신 버전의 라이브러리에서 테스트하여 예제 코드에 문제가 없도록 하겠습니다! 감사합니다!
지난 달에 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'
에서도 범주형 변수를 지원합니다.”를 추가합니다.현업 데이터 분석가이신 송진영 님이 <파이썬 라이브러리를 활용한 머신러닝(번역개정2판)>을 읽고 블로그에 쓰신 리뷰를 소개해 드립니다.
https://ugong2san.tistory.com/4115
책 리뷰는 물론 중요한 문단을 요약해 놓아서 한 눈에 전체 책을 둘러보는데 도움이 되실거에요! 좋은 리뷰 정말 감사합니다!
<혼자 공부하는 머신러닝+딥러닝>의 주피터 노트북 코드를 사이킷런 1.1.0 버전에 맞추어 모두 테스트했습니다.
(노트: 2022년 5월 현재 코랩의 파이썬 버전은 3.7.x로 사이킷런 1.0.x만 설치됩니다. 코랩을 사용하는 경우 아래 수정 사항을 무시하세요)
사이킷런 1.1.0 버전에서 SGDClassifier
의 loss
매개변수 중 로지스틱 손실을 의미하는 'log'
가 'log_loss'
로 바뀐다는 경고가 발생합니다. 사이킷런 1.1.0 버전 이상을 사용하는 경우 경고를 피하기 위해 다음과 같이 변경해 주세요.
loss='log'
를 loss='log_loss'
로 바꿉니다.loss='log'
를 loss='log_loss'
로 바꿉니다.loss='log'
를 loss='log_loss'
로 바꿉니다.감사합니다!
사이킷런 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, 그리고 사이킷런에 최근에 추가된 히스토그램 기반 부스팅도 부록으로 추가했습니다! 즐거운 부스팅 생활을 위하여! 🙂
사이킷런 알고리즘은 대부분 파이썬 또는 Cython으로 작성되어 있습니다. 그래서 큰 의존성 문제 없이 다양한 플랫폼에 이식될 수 있고 가장 널리 사용되는 머신러닝 라이브러리가 되었습니다.
사이킷런은 그동안 GPU를 활용한 구현에 대해 부정적인 입장을 견지해 왔습니다. 사이킷런의 다층 퍼셉트론(MLPClassifier, MLPRegressor)에 GPU 지원이 추가되지 않는지 내심 기대가 많기도 했습니다. 하지만 사이킷런의 신경망 구현이 텐서플로와 파이토치 같은 기능을 제공하기는 어렵다고 합니다. 복잡도가 너무 높아진다는 것이 그 이유 중 하나입니다.
그런데 최근에 사이킷런에 GPU 기능을 활용하려는 아이디어가 제안되었습니다. 파이썬 Array API를 사이킷런에 접목할 수 있다면 CuPy 등을 통해 GPU 활용이 가능할 수 있습니다(#22352 참조). 아예 저수준에서 GPU를 지원하는 방식도 제안되었습니다(#22438).
며칠 전에는 사이킷런 프로젝트를 이끄는 Inria 연구소에서 GPU 관련된 구인 공고를 냈습니다! 순조롭게 진행된다면 인텔 기반으로 k-최근접 이웃, k-평균, 가우시안 RBF 커널 등에 GPU 구현이 추가될 것으로 예상됩니다. 아직 어떤 모습이 될지는 모르겠지만 파이썬 컨텍스트 매니저를 사용하거나, 메서드나 파이프라인의 일부로 구현될 수도 있을 것 같습니다.
사이킷런이 범용성 뿐만 아니라 속도까지 높아진다면 많은 사람들이 정말 좋아할 것 같습니다. 이참에 그레이디언트 부스팅까지 GPU 구현을 바라는 것은 너무 욕심일까요? 🙂