알라딘

헤더배너
상품평점 help

분류

이름:전철욱

최근작
2016년 3월 <파이썬과 Jupyter Notebook 2/e>

파이썬과 기계 학습

'기계 학습을 하는 자'와 '기계 학습을 당하는 자' 피타고라스 정리 a2+b2=c2는 중고등학교 수학 시간에 배우는 기본적인 공식이다. 이 공식을 조금 변형하면 유명한 '페르마의 마지막 정리'가 된다. 여기서 보기도 싫은 수학 공식을 설명하고자 하는 것은 아니다. 다만, 수학이 매우 추상적인 사고를 할 수 있는 도구라는 점은 강조하고 싶다. 사실, 데이터를 다루는 작업도 매우 추상적인 사고 과정이다. 나의 일부를 추상화해 내가 알지 못하는 정보를 구할 수도 있다. 이를테면, 나의 유전자를 추상화함으로써 암을 예측할 수 있다. 오늘도 사물들은 인류가 세어본 적도 없는 수많은 추상화된 데이터를 쏟아낸다. 데이터는 정보를 만들고 이를 토대로 결정한다. 내가 본 영화로 새 영화를 추천받고 영화를 본다. 이 과정에는 기계 학습이 관여한다. 단순한 통계를 벗어나 고도로 추상화된 기법이 데이터를 모래의 숨은 진주로 만든다. 기계 학습은 새로운 세상을 보게 하는 망원경이자 현미경이다. 플루서의 말을 인용하자면, 컴퓨팅 환경은 '기계 학습을 하는 자'와 '기계 학습을 당하는 자'로 분류될 것이다. 미비한 시작으로 기계 학습은 다양한 분야가 융합되어 있다. 먼저, 탁월한 계산력을 활용하기 위해 컴퓨터에 명령을 내려야 한다. 두 번째는 수학이다. 대부분의 기법은 확률/통계나 선형 대수를 바탕으로 이루어져 있다. 마지막으로 데이터다. 데이터는 이 모든 것에 기본이며, 넘쳐나지만 잘 활용하면 황금 원천이 된다. 이러한 관점에서 보면, 이 책은 기계 학습을 접하는 처음 독자에게 매우 유용하다. 파이썬은 쉬울 뿐만 아니라 과학 생태계를 지원하는 언어다. 파이썬 기계 학습 라이브러리 scikit-learn은 우리가 일일이 각 기법을 구현해야 할 번거로움을 대신해준다. 이 책에서는 복잡한 수학식을 다루지 않는다. 처음 접하는 독자에게 수식을 나열하며 세부적으로 설명하지 않는다. 오히려 수식 대신 개념으로 최대한 이해하기 쉽게 설명한다. 마지막으로 데이터는 기계 학습 기법의 개념을 잘 이해할 수 있도록 쉽고 구하기도 편한 실질적인 것을 선택했다. 배경지식이 없는 독자에게 이 모든 것이 쉽지는 않을 것이다. 피타고라스 정리를 다시 생각해보자. 조금만 생각해보면 이 정리를 만족하는 a, b, c를 구할 수 있고, 관심을 좀 더 가지면 '페르마의 마지막 정리'인 an+bn≠cn(n은 3 이상)에 도전해볼 수도 있다. 이 과정에서 다양한 수학적 기법을 알게 되며 흥미로운 세상을 만날 수도 있다. 이 책이 기계 학습을 심도 있게 학습하고자 하는 독자에게 피타고라스 정리와 같은 역할을 하면 좋겠다. 각 장에서 나온 기법을 실행해보고 약간씩 변경해보면서, 기법에 대한 세부사항과 수학적 배경지식을 찾아 학습해 자신이 원하는 분야에 기계 학습을 적용하길 바란다.

파이썬과 Jupyter Notebook 2/e

최근 과학계의 뜨거운 감자는 중력파다. 노벨상까지 따 놓은 당상이라니 당분간 중력파는 과학의 한 가운데 있을 듯하다. 하루가 다르게 발전하는 기술과 첨단과학 환경을 고려해 볼 때, 100년 전 아인슈타인이 예측한 중력파의 증명이 얼마나 어려웠을지 가늠해볼 수 있다. 중력파 증명을 선언한 라이고(Ligo)의 오픈과학센터(https://losc.ligo.org/) 웹페이지에 가보니, 관련 데이터를 공개하고 있으며 처리 방법도 알려준다. 분석 언어와 환경이 파이썬과 노트북이다. 좀 더 전문적으로 사용하는 언어와 도구가 있다 하더라도, 첨단과학 그 중심에 파이썬과 노트북이 있는 것은 분명하다. 파이썬과 에코시스템이 새삼 위대해 보인다. 데이터를 이리저리 다루면서 장님 코끼리 만지기식이 아닌 실제 과학자처럼 그 현장감을 느껴본다. 데이터를 분석할 때 파이썬과 노트북은 첫 번째로 고려할 수 있는 환경이다. 파이썬 언어 자체의 쉬운 접근성과 과학, 도식 라이브러리를 포함한 에코시스템은 파이썬의 뛰어난 장점이다. 노트북은 데이터 분석에 적합한 환경을 제공한다. 데이터를 처리한 후, 그 결과를 바탕으로 또 다른 처리를 결정하는 순환적, 점진적 구조를 지원해, 최종 결과로 그 변환 과정을 한눈에 알 수 있다. 도표, 지도, 수식, 대화형 위젯 지원도 노트북의 뛰어난 기능이다. 필요한 기능을 추가할 수 있을 뿐만 아니라, 자주 사용하는 기능을 사용자 기능으로 만들 수도 있다. 이 책은 파이썬 언어에 대해 가볍게 설명한 후, 노트북을 소개한다. 더불어, 파이썬 에코시스템을 소개해 처음 분석을 접하는 독자가 자신의 분석에서 필요한 라이브러리를 찾거나 스스로 환경을 구축해나갈 수 있게 한다. 책이 다루는 범위가 방대하기 때문에 깊숙이 다루지 못하는 부분도 있지만 친절하게 관련 웹페이지를 소개한다. 좀 더 자세한 설명이 필요한 부분은 관련 라이브러리나 웹페이지를 참고해 해당 분야나 파이썬 기술의 최선전으로 나아갈 수 있다. 분석 언어로 파이썬을 고려한다면 이 책으로 시작해보길 권한다. 어떤 일이든 그에 적합한 도구가 중요하다. 갈릴레이가 망원경을 사용하지 않았다면 그의 세계관도 지구가 중심일 수도 있다. 파이썬과 노트북은 뛰어난 분석 기능과 환경을 제공하며 이 책은 그 출발점으로 충분하다. 중력파도 이제 망원경과 더불어 또 다른 우주 분석 기술이 될 수 있다. 그 바탕에는 데이터 분석이 필연적이며 파이썬과 노트북은 매우 좋은 친구다.

Building Machine Learning Systems with Python 한국어판

"데이터는 거들 뿐" 2011년 떠오른 기술인 빅 데이터는 이제 심야 버스 노선이나 대통령 선거 전략 같은 다양한 분야에서 사용되고 있으며 그 진가를 발휘하고 있다. 사실, 빅 데이터의 근간은 저렴해진 하드웨어와 데이터베이스, 데이터 처리 기술 같은 고급화된 소프트웨어라 할 수 있다. 이로 인하여 데이터는 더 많이 저장되고 관리되며 정제될 수 있다. 하지만 이러한 데이터를 사용하여 현실을 평가하고 문제를 해결하며 더 나아가 미래를 예측하는 기술은 과연 무엇인가? 이 책은 그 답을 알려준다. "아스클레피오스의 지팡이" 데이터는 불친절하다. 때로는 소셜 네트워크에 있고 신문 기사에 있고, 사진에 있거나 음악에도 있다. 간혹 CSV 파일에도 있다. 파이썬은 범용적 언어이자 수많은 라이브러리를 가지고 있어 원하는 작업을 몇 분만에 해결할 수 있을 뿐만 아니라 다른 언어와도 쉽게 연결할 수 있는 접착형 언어다. 단 몇 줄로 소셜네트워크에 있는 데이터를 가져 올 수 있고 웹 페이지에 있는 버스 시간표도 가져 올 수 있다. NumPy, SciPy 라이브러리는 과학적 파이썬 생태계를 유지하여 일괄적인 인터페이스와 개발 속도를 지원한다. 그 위에, Scikit-learn은 기계 학습의 다양한 기법을 파이썬 생태계에서 바로 적용할 수 있도록 한다. 이 책에서는 이 모든 내용을 다룬다. "지식의 유일한 원천은 데이터이다." 이 책은 실질적이며 도전적이다. 예측하거나 구별하기 쉬운 데이터로 95%가 넘는 정확도를 보여주기보다는 실제로 해 보고 싶은 위키피디아의 주제를 분류하여 그 성능을 비교하고 실제 사진이나 음악과 같은 데이터에서 속성을 찾고 분류하는 도전적인 문제들로 가득 차 있다. 빅 데이터의 가장 난점을 극복하고자 jug와 startcluster 라이브러리를 사용한다. 더욱이, 이론적 배경이 없이는 이해할 수 없기 때문에 필요한 이론을 최대한 설명하고자 했고 저자들이 참고했거나 최신 정보를 얻을 수 있는 웹 사이트도 공개했다. 실제 문제와 이론 설명의 줄을 아주 적절하게 잘 타고 있다. 이 책을 집필한 저자들의 당부처럼 이 책은 기계 학습의 일부 기법을 다루고 있기 때문에 좋은 시작점으로 생각해 주길 바란다.

Building Machine Learning Systems with Python 한국어판

네 잎 클로버 어떻게 찾아요? 또래 아이들이 그러하듯 우리 집 아이의 소일거리 중 하나는 네 잎 클로버 찾기다. 한 수분 잔디에서 뒤지다 보면, 제풀에 지쳐 집으로 뛰어 들어오며 "행운을 드립니다"라며 세 잎 중 한 잎을 찢어 만든 거짓 네 잎 클로버를 내게 내민다. '네 잎 클로버를 어떻게 찾을까', '네 잎 클로버의 확률 분포는 무엇일까', '기계 학습으로 네 잎 클로버를 찾을 수 있을까?' 잠시 생각에 잠겨본다. 수학적으로, 네 잎 클로버의 확률 분포는 푸아송 분포를 따른다면, 1시간에 찾을 수 있는 확률을 구할 수 있다. 네 잎 클로버의 잎 너비, 잎 길이, 줄기 길이 등 다양한 속성으로 기계 학습에 적용도 할 수 있을 듯하다. 이 책의 소개된 이미지 처리와 기계 학습 기법을 활용하여 마당 잔디를 휴대전화로 찍어 아이를 대신해 네 잎 클로버를 한번 찾아볼까도 생각해본다. 아니면, 네 잎 클로버의 유전자 분석에 기계 학습을 적용해 볼까 하는 데까지 생각이 미친다. 데이터 저장 장치가 지속적으로 저렴해지고, 다양한 장치에서 데이터를 생성해내고 있는 현재, 기계 학습을 적용할 분야는 점점 더 많아지고 있다. 관심 분야에서 데이터를 찾고 기계 학습을 적용해 보면 우리 생활이 좀 더 편해진다. 구글, 아마존, 넷플릭스, 수많은 회사가 자신의 서비스에 기계 학습을 적용하는 이유가 여기에 있다. 친구를 추천해주고, 사진에서 친구 얼굴을 찾아 이름을 붙여주고, 스팸 메일을 완벽히 제거해주는 서비스가 대표적인 예다. 표피에는 데이터가 감싸여 있고 그 속에는 기계 학습이 자리잡고 있는 서비스가 최신 흐름이라고 할 수 있다. 행운의 네 잎 클로버 네 잎 클로버는 행운을 상징한다. 이 책 첫머리의 "이 책을 만난 건 좋은 인연이다"라는 말처럼 파이썬 사용자로서 기계 학습을 배우려는 사람에게 이 책은 네 잎 클로버다. 파이썬의 범용성과 생태계를 활용하여 데이터를 마음대로 다룰 수 있으며 계산량이 많은 수학 계산까지 빠르게 계산할 수 있다. 파이썬 생태계에서 제공하는 다양한 패키지로 단번에 다양한 기술도 적용해볼 수 있다. 특히, 기계 학습 전반적으로 지원하는 scikit-learn은 기계 학습 사용자에게는 스타워즈에서의 광선검과도 같다. 통일된 학습기 인터페이스, 각 작업을 연결할 수 있는 태스크, 전처리와 평가를 지원하는 등 데이터를 가공해서 다양한 학습기에 여러 매개변수를 한 번에 적용해 평가를 구할 수 있는 탁월한 라이브러리다. 더불어, 이번 개정판에서는 초판에 비해 간결하게 예제를 재정리했으며, 설명도 보강했다. 부족했던 라이브러리를 소개하는 것도 잊지 않았다. 기계 학습은 여타의 기술보다 조금 더 어렵다. 각 기법을 깊이 이해하려면 확률이론이나 선형대수와 같은 수학적 지식이 필요하며, 프로그래밍 언어로 직접 학습기를 구현하거나 구현된 라이브러리에 적용해야 한다. 원시 데이터를 전처리해야 할 때도 있다. 이 책은 이러한 모든 부분을 자세히 다루지 않으며, 사실 이 모든 부분을 한 권에 책에서 다루는 것은 현실적으로 쉽지 않다. 대신, 이 책에서 사용하는 실제 데이터와 각 기법을 하나씩 천천히 살펴보는 전략도 대단히 괜찮은 방법이다. 마지막으로, 기계 학습을 배우고자 하는 분들에게 진심으로 이 책이 행운의 네 잎 클로버가 되길 바란다.

Julia 프로그래밍

계산하는 기계와의 대화 100년 전, 컴퓨터라는 이름이 세상에 알려지기도 전에 계산하는 기계와 사람은 스위치로 대화했다. 그 후 기계어로, 좀 더 발전된 어셈블리어로 대체되면서 이 계산하는 기계와 좀 더 쉽고 편리하게 대화하는 방법들이 개발되었다. 최초의 고수준 언어인 포트란(Fortran)의 전신이 1950년대에 등장했고, 곧이어 리스프(LISP)나 알골(Algol)과 같은 언어도 등장했다. 최신 컴퓨팅 환경은 다양한 프로세서, 고속으로 연결되는 망, 병렬 작업, 수많은 적용 분야(domain)로 대표된다. 프로그래밍 언어도 더 많이 등장했다. 이러한 컴퓨팅 환경에서 모든 분야에 최상의 결과를 내는 하나의 만능 언어를 찾기는 어렵다. 차라리 각 분야에 맞는 언어로 빠르게 개발하고 지속적으로 관리하는 것이 더 해답에 가까울 수 있다. 새롭고 강력한 언어로 컴퓨터와 더 '잘' 대화해야 할 필요성이 바로 여기에 있다. 비트겐슈타인의 말을 좀 바꿔본다. "새 언어는 내 세계의 한계를 넓힌다." 데이터와의 대화 줄리아는 2012년 2월에 첫 버전을 공개한 최신 프로그래밍 언어다. 이 언어는 지금의 주류 언어와 다양한 면에서 차별성을 갖는다. 파이썬과 같은 쉽고 간략한 문법, C와 같은 실행 속도, R이나 MATLAB과 같은 계산력, 리스프와 같은 메타프로그래밍, 사용하기 쉬운 병렬 기능뿐만 아니라 언어 외적인 면에서도 다양한 기능을 제공한다. 편리한 패키지 관리, 다른 언어와의 뛰어난 접착성(Glue), 다기능 대화형 환경이 그것이다. 줄리아는 고성능 프로그램을 쉽고 빠르게 구현할 수 있도록 하며, 특히 많은 데이터를 다루는 작업에 탁월하도록 고안되었다. 그 중심에는 LLVM(Low Level Virtual Machine) 기반 JIT(just-in-time) 컴파일러가 있다. 이 컴파일러는 높은 추상력과 표현력, 낮은 '학습 곡선'을 제공하면서도 뛰어난 성능을 보장한다. 일반 프로그래밍 언어와 같이 줄리아는 컴퓨터의 모든 자원을 다루는 데 아무런 문제가 없으며 탁월한 성능으로 다른 언어에서 다루기 어려웠던 데이터를 간편하게 다룰 수 있다. 따라서 고성능 프로그램을 구현하거나 데이터를 효과적으로 다루고자 한다면 고려해봐야 할 언어다. 이 책은 줄리아를 처음 접하는 독자에게 적합하다. 책의 구성이 각 장마다 서로 연계되어 있어 전체적으로 여러 번 읽는 것을 권장한다. 파이썬, R, 매트랩을 사용해본 독자라면 관심 있는 모듈을 줄리아로 다시 구현해보면 그 우수성을 실감할 수 있다. 버전 0.4에는 코드에 대한 문서화 시스템, 유니코드 버전 8 지원, f(; symbol => val)와 같은 새로운 키워드 아규먼트 문법, 제네릭 함수 생성, Channels을 이용한 내부 태스크 통신과 같은 새로운 기능이 추가되었다. 이와 더불어, String, FloatingPoint 타입은 각각 AbstractString, AbstractFloat 타입으로 이름이 변경되었고, Nothing은 void로, None은 Union{}로 대체되었다. 배열(Array), 딕션너리(Dictionary), 셋(Set) 생성, Date 모듈 등은 버전 0.4에 맞추어 이 책에서 설명하고 있기 때문에 변경 사항을 쉽게 익힐 수 있다. 이 책과 함께 버전 0.3으로 학습한 후, 0.4로 업그레이드하길 추천한다.

R을 활용한 기계 학습

잃어버린 '고리'를 찾아서 사물이 점차 디지털화되면서 사물과 행하는 모든 행위는 데이터로 남겨진다. 한 개인의 모든 행위는 데이터로 남겨지며, 바꿔 말하면 데이터가 개인을 나타내는 시대다. 아이폰에 저장된 아침 기상 시간, 출퇴근하면서 버스카드가 남기는 출발지, 출발시간, 도착지, 도착시간, 통화 기록, 음악 재생기록, 인터넷에서 구매한 목록, 집에서 보는 프로그램 로그까지 모두 한 사람을 나타내는 지표가 된다. 어떻게 보면 무서운 일이지만, 긍정적인 요소도 많다. 예를 들면 출근 시간과 근무지가 비슷한 사람들을 군집화(clustering)할 수 있으며, 좋아하는 음악 장르를 친구나 기계에서 추천 받을 수도 있다. 더 나아가 수집된 스팸 문자로부터 지금 받은 문자의 스팸 여부도 알 수 있으며, 상품을 진열할 때 최적의 위치도 알 수 있다. 이렇게 퍼져 있는 데이터에서 새로운 지식을 얻거나 새로운 데이터의 특성을 예측할 수 있는 기술이 기계학습이다. 기계 학습은 점점 더 많아지는 데이터에서 사람이 알지 못했던 '고리'를 찾아주는 데 큰 역할을 한다. 최신 기술을 이끄는 구글, 아마존, 애플 등과 같은 회사에서는 가장 활발하게 연구하는 분야이기도 하다. 이제 데이터를 어디서나 구할 수 있으며, 어떻게 데이터를 연관시키는가가 핵심이 됐다. 그 '고리'를 찾는 도구가 바로 기계 학습이다. 통계를 넘어서 기계 학습의 이론적 배경은 통계와 확률이다. 기계 학습 기법을 잘 적용하기 위해서는 가장 먼저 데이터를 분석해야 한다. 데이터가 어떻게 분포돼 있는지, 다른 분포로 변환할 수 없는지를 고민할 필요가 있다. R은 데이터 분석에 탁월한 언어다. 배우기도 쉬우며, CRAN(Comprehensive R Archive Network)을 통해 별다른 노력 없이 필요한 패키지를 설치할 수 있다. 필요에 따라 적절한 패키지를 찾아 바로 사용할 수 있다는 점은 마법처럼 매력적이다. 뿐만 아니라 시각화를 지원해 직관적으로 데이터를 분석할 수 있다는 점이 데이터 분석에 R이 잘 사용되는 이유다. 이 책은 R을 처음 접하는 사용자가 충분히 책을 다 읽을 수 있게 자세히 설명한다. 데이터를 분석할 때 필요한 기본 명령과 그 결과를 알기 쉽게 설명해 R 언어에 대한 부담감을 없게 했다. 실제 이 책을 다 읽고 난 후 R 언어에 대한 부담감은 거의 사라질 것이다. 데이터를 전처리해 분석하고, 기계 학습의 기법에 적용한 후 결과에 따라 다시 데이터를 처리하는 과정에서 R 언어의 차별화된 우수성을 느낄 수 있다. 거인의 어깨 위에서 아마존과 유튜브의 추천 시스템, 구글의 무인 자동차와 같이 기계 학습을 사용한 시스템과 사용하지 않은 시스템의 차이는 점점 더 커지고 있다. 기계학습을 사용한 기능이 전체 시스템을 좌우하는 것이 현실이다. 하지만 기계학습을 처음 접하는 학습자에게는 넘어야 할 산들이 많다. 예를 들면 반복적으로 사용하는 확률/통계의 기본 지식이나 데이터를 다룰 때 필요한 선형대수에 대한 지식이다. 그리고 각 기법에서 사용되는 수학적 모델과 그 모델의 유효성뿐만 아니라 문제 영역마다의 특수성을 염두에 둬야 한다. 이 책은 가장 먼저 기계 학습의 전체적인 이해를 높일 수 있게 설명하고, 기법마다 필요한 기반 지식을 충실히 설명한다. 기법의 장단점을 표로 비교해주고, 이미 학습했던 독자에게도 다른 기법과 비교하면서 학습할 수 있게 한다. 또한 기법을 적용할 때에는 데이터 수집, 데이터 전처리, 데이터로 모델 훈련, 모델 성능 평가, 모델 성능 향상으로 체계적으로 나눠 전체 과정을 이해할 수 있게 했다. 사실 이런 순서는 정확히 기계 학습 과정을 대표하지는 않지만, 처음 학습하는 독자에게는 모델을 선택하는 과정이나 차후 어느 단계에서 더 성능을 높일 수 있을지 알 수 있게 한다. 더욱이 저자의 실제 연구대상을 예제로 만들어 실제 현실 문제를 해결하는 것과 같은 현실감을 느낄 수 있다. 쉽고 체계적인 설명과 다양한 패키지를 설치할 수 있는 R은 기계학습에 쉽게 접근할 수 있게 한다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자