한 권으로 배우는 파이썬 기초 & 알고리즘 사고법
아리스티데스 보우라스 외 지음, 길준민 외 옮김 / 제이펍 / 2018년 7월
평점 :
절판


프로그래밍을 배우고 싶어도 어려울 거 같다는 생각에 선뜻 시작하지 못하는 사람들에게 매우 좋은 선택이 될 책

책을 읽으면서 컴퓨터공학과에 입학했던 20년 전이 생각났다. 당시 많은 컴퓨터 전공자들이 게임이 좋아서 입학했다가, 쏟아지는 복잡한 이야기에 압도당해 내가 과연 옳은 선택을 한 걸까, 내가 하고 싶던 건 이게 아닌데… 이런 고민을 했다(요즘 신입생들도 그럴지는 몰라서 “당시”). 기본적으로 일상 생활을 하면서 할 필요가 없던 방식으로 생각을 해야 하기 때문에 그런 낯설음이 굉장히 큰 장벽으로 다가와서 그러는데, 불친절한 교과서와 교수님들은 그런 어려움을 보통 증폭시키기만 하므로 초반에는 거의 도움이 되지 않는다. 그 때 이런 책이 있었더라면 장벽을 넘어서는데 큰 도움이 되었을 거 같다.

1/2장은 컴퓨터 개론에서 배웠던 극히 일부 내용을 다시 압축한 듯한 느낌이다. 아주 기초적인 컴퓨터 관련 지식과 파이썬 동작 원리에 대한 이야기이다. 다만 한 가지 지적하고 싶은 부분은 파이썬이

…중규모 정도의 애플리케이션이나 동적 웹페이지를 개발하기에 적합하다

는 부분인데, 보통은 그렇게 생각하지만 인스타그램같은 대규모 웹사이트/앱에서도 파이썬을 사용(https://instagram-engineering.com/what-powers-instagram-hundreds-of-instances-dozens-of-technologies-adf2e22da2ad)하기 때문에 사실 규모는 파이썬 사용 유무와는 무관하다고 봐야 한다.

3장에서는 실습을 위한 이클립스 설치를 설명하는데, 이 부분은 조금 아쉽다. 이미 python에서 가장 많이 사용하는 IDE는 pycharm으로 넘어온지 오래인데, 아마 저자들이 이클립스를 많이 사용해서 선택한 게 아닌가 추측해볼 뿐이다.

4장 알고리즘 기본, 5장 변수와 상수 등 부터 본격적인 프로그래밍 기초를 설명한다. 이미 경험있는 프로그래머가 읽기에는 지루할 수도 있는 부분이지만, 앞서 말했듯 20여년 전 처음 프로그래밍을 배울 때 생각했던 당혹감을 생각해보면 이렇게 하나하나 설명이 있어야 초보자들이 그나마 이해하기가 쉽다는 걸 이해할 수 있다. 특히 8장 추적표는 많이 와 닿았는데, 요즘에도 알고리즘 문제를 손으로 풀 때 비슷하게 디버깅을 하고 있기 때문이다. 예제 8.1–2같은 부분은 특히 프로그래밍 초보자에게는 귀중한 설명이다. a, b = b, a와 같은 swap이 프로그래머들에게는 매우 당연한 이야기이고, tmp = a; a = b; b = tmp; 와 같은 temporary 변수 사용 또한 공기와도 같은 부분이지만, 초보자들에게는 안 그래도 어지러운 머리를 또 한 번 복잡하게 할 수도 있는 부분인데, 이걸 이해하기 쉽게 그림과 함께 설명하고 있다. 9장에서는 이클립스로 프로젝트를 만들고 디버깅하는 방법을 보여주면서 본격적으로 프로그램을 작성할 준비를 한다.

그 뒤로 제어와 관련된 구문을 계속 설명하는데, if else나 loop에 대한 설명이 part V, 525 page까지 이어진다. 중간중간 추적표와 예제마다 곁들여진 그림으로 설명하기 때문에 혼자서 읽어도 대부분 쉽게 이해할 수 있을 거 같다.

알고리즘 서적이라면 정렬/검색이 기본인데, 662 page가 되어서야 처음으로 버블 정렬을 통해 정렬 알고리즘을 설명하고 part VII이 되어서야 function/procedure 및 39.8 재귀(774 page)에 대해 설명한다.

다시 한 번 말하면, 이 책은 초보자 중에서도 입문자를 위한 서적이다. 책을 읽어보고 조금이라도 지루한 부분이 있다면 이 책을 추천하지 않는다. 하지만, 프로그래밍을 시작해보려다가 포기한 경험이 있는 사람이라면 강력히 추천한다. 왠만한 선생님보다 좋을 것이다.

끝으로 한 가지 아쉬운 점. 14.4 IS_NUMERIC을 통해 정규식으로 문자열이 숫자인지 검사하는 방법을 보여주고 있는데, 아무 설명없이 정규식을 사용하는 건 좀 어려울 거 같단 생각을 했다. 이 책에서 아마 유일하게 자세한 설명없이 사용하는 고급(?) 기법일 거 같다. 뒤에서도 계속 여러가지 예제에 사용하기 때문에 그냥 간단히 넘어간 거 같다.

https://github.com/Jpub/Python_Algorithms 를 통해 책에 나온 코드를 다 제공하지만, 입문자 수준에서 github을 사용하는 건 약간 난이도가 있을 거라고 생각하는데, 이에 대한 설명이 없다는 점도 사람에 따라서는 아쉬울 수 있을 거 같다.



댓글(0) 먼댓글(0) 좋아요(8)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
머신러닝 실무 프로젝트 - 실전에 필요한 머신러닝 시스템 설계, 데이터 수집, 효과 검증 노하우
아리가 미치아키 외 지음, 심효섭 옮김 / 한빛미디어 / 2018년 6월
평점 :
구판절판


장점; 읽어보면 실무를 해본 사람들이 썼다는 걸 알 수 있다. 이론도 설명하지만, 실제 경험에서 오는 설명이 굉장히 와 닿는다

장점이자 단점; 책이 두껍지 않기 때문에 읽는데 부담이 좀 덜 하지만 자세한 내용을 원하는 경우 약간 부족하다는 생각이 들 수 있다

Part I

1장

특히 ‘1.2.2의 머신러닝을 사용하지 않는 방법 검토하기'가 인상적이다. 실무를 해본 사람들과 이야기해보면 흔히 하는 이야기지만, 출간하는 책에서 이렇게 쓰는 걸 보기는 힘들다. 사용하는 방법의 장점을 더 부각시켜야 독자가 흥미를 갖고 책을 읽지 않겠는가. 하지만 이렇게 솔직하게 현실을 썼다는 점에서 오히려 믿음이 갔다.

2장

머신러닝의 주제에 대한 대-소 분류 및 개념 설명을 하는데, 정말 정신없이 지나간다. 나 같이 어설프게 아는 사람에게는 다른 책에서 봤던 개념에 대한 설명 정도로만 이해하고 지나가게 될 거 같긴 하지만, 정리가 잘 되어 있어 읽기 편하다.

3장

평가를 위한 개념을 설명한다. 정밀도 정확도 재현률이나 TP, TN, FP, FN은 언제나 봐도 헷갈린다. 마이크로-매크로 평균이란 건 처음 봤고, RMSE와 결정 계수는 이름만 아는 정도인데, 일단 읽으면서 아~ 이랬지 하고 넘어갔다. 아마 또 잊어버려서 나중에 다시 봐야겠지.

4장

내용은 간단하지만, 실무에서 여러가지 경험을 통해 문제를 겪었다는 걸 느낄 수 있었다. 꼭 머신러닝이 아니더라도 시스템 구성의 기본적인 부분에 대해 궁금한 사람에게는 도움이 될 수 있다. 특히 로그에 대한 내용은 정말 공감이 간다. 간단한 프로그램이 아닌 이상 시스템에서는 로그를 남기고 쉽게 추적할 수 있어야, 문제가 생기건 개선을 하건 필요한 정보로 활용할 수 있는데, 대규모 로그를 잘 설계해서 사용하기 쉽게 만들면서도 필요한 정보를 즉각 보는 일은 정말 어렵다. 이런 면에서 참고할 만한 이야기가 많아 좋았다.
다만 아무리 봐도 그림 4–1, 2, 3이나, 5, 6, 7은 같은 그림으로 보이는데, 색을 다르게 했는데, 책에서는 흑백이라 구분이 가지 않는 건지 잘 모르겠다. 다시 봐도 똑같은 그림으로 보이는데.

5장

업무에 적합한, 질 좋은 데이터를 만드는 건 사실상 돈을 써야만 한다. 즉 수작업이 필요하다.

6장

가설 검정 부분은 통계를 몰라 그냥 그렇구나 하고 넘어갔으며, A/B 테스트 부분은 역시 동감한다.

Part II

역자가 https://github.com/flourscent/ml-at-work 를 통해 잘 준비해둬서 따라하는 데 어려움이 없다. macbook에서 Anaconda Python 3.5.5로 실행했다.

설치


실행



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
해들리 위컴의 Advanced R
해들리 위컴 지음, 정우준 옮김 / 제이펍 / 2018년 5월
평점 :
절판



원래 이 책을 읽으려는 이유는 지극히 개인적인 야구에 대한 관심 때문이었다. R에 대해서는 큰 관심은 없었고, 다만 세이버 매트릭스 관련 블로그를 보면 요즘에는 python도 많이 쓰지만 여전히 R로 데이터를 가공하는 경우가 많기 때문에 R을 알면 좀 더 재미있게 야구 블로그를 읽을 수 있을 거란 기대 때문이었다. 하지만 책을 펴고 나니 이 생각이 틀렸음을 알게 되었다. 베타 리더들의 이야기뿐만 아니라, 책의 시작 자체가 정말 제목 그대로 ‘Advanced’ user를 위한 책이었다. 일반적인 프로그래밍 기본 서적은 설치와 ‘hello world’를 출력하는데서 시작하지만, 이 책은 R의 데이터 구조부터 시작하며, 설치에 대한 안내는 부록으로도 제공하지 않는다 ㅜㅜ 저자는 서문에서 심지어 SICP https://mitpress.mit.edu/sites/default/files/sicp/index.html 를 거론하며 더 나은 프로그래밍을 하기 위해 필요한 일반적인 프로그래밍 서적들을 이야기하고, 마지막 두 챕터는 고성능을 위해 cpp와 c 연동 방식에 대해 설명한다.

그래서 일단 R을 설치하고 테스트하기 위해 매번 새로운 걸 할 때처럼 R의 docker image를 찾아보았다. 검색을 해서 https://hub.docker.com/_/r-base/ 를 찾아 가장 간단하게 interactive mode부터 하려고 docker run -ti — rm r-base 을 실행했다. 바로 print(“Hello World”)를 실행할 수 있었다.

Part I

그래도 비교적 쉽게 읽었다. 처음 접해서 문법이 어색하지만, 입력하고 실행하는데 어려움은 없었고, 이해가 되지 않는 부분도 없었다.

그래서 야구 관련 블로그 글 몇 군데서 코드를 (성급하게) 따라해보려고 했지만 역시나 잘 되지 않았다.

> library(tidyr)
Error in library(tidyr) : there is no package called ‘tidyr’

설치 오류이니 이 경우는

> install.packages(‘tidyr’)
https://www.r-bloggers.com/installing-r-packages/

이렇게 해결이 가능하다. 다만 baseball packages를 설치하기 위해서는 개발자 도구가 먼저 필요한데

> install.packages(“devtools”)

여기서 선행 설치가 필요한 library에서 dependency 오류가 발생해서 일단 원인 추적은 멈추고(아마 환경 설정 오류겠지), R Studio를 설치하기로 했다.

R Studio는 먼저 command line에서 r이 설치가 되어 있어야 해서 $ brew install r로 R을 설치한 후 https://www.rstudio.com/ 에서 desktop free version을 받아 R Stduio까지 설치를 했다. 이번에는 devtools 설치가 성공했다.

이렇게 브라우저에서 실행할 수 있는 환경도 쉽게 검색할 수 있고, R studio server를 이용하면 jupyter에서 R을 실행할 수도 있다고 하니, 코드를 따라해보는 데는 아무 문제가 없었다.

https://rdrr.io/snippets/
http://www.tutorialspoint.com/execute_r_online.php
http://www.compileonline.com/execute_r_online.php
https://www.r-bloggers.com/interactive-r-notebooks-on-powerful-cloud-hardware/

Part II

우선 기본적인 건 할 수 있게 되어 책을 계속 읽어보았다. 첫 번째로 아쉬운 점을 만났는데, 클로저에 대한 정의에 오류가 있었다(p185). 책에서는

함수를 만들고 반환하는 함수

이렇게 설명을 하고 있는데, 원문이 어떻게 되어있는지 모르겠지만, 이건 람다의정의로 보는 게 차라리 맞다. 클로저를 사용해서 함수를 만들고 반환할 수 있는 건 맞지만, 클로저라면 scope에 대한 이야기가 나와야 맞으며, Chapter 10.3에서는 해당 내용을 언급하고는 있지만, 이쪽에 포인트를 두지는 않는다. 보통 javascript쪽에서 클로저를 이렇게 설명하는 경우를 좀 봤는데, 역시 잘못 알고 있어서 그렇다.

https://simple.wikipedia.org/wiki/Closure_(computer_science)

Chapter 11의 기능(functional)에 대한 번역도 좀 어색하다. 역자가 서문에서 언급을 하긴 했지만, 여전히 이런 일종의 과한(?) 번역은 나에겐 어색하게만 느껴졌다. 참고로 이 장에서는 R의 apply에 대해 설명하는데, 역시 일반적인 함수형 프로그래밍에서의 apply처럼 함수에 값을 적용할 수 있게 하는 함수인 걸로 보인다

https://en.wikipedia.org/wiki/Apply

Chapter 12.1.3 느슨함은 lazy evaluation에 대한 이야기일텐데, 그냥 느슨함이라고 쓰면 이해를 제대로 하지 못하는 사람들이 있을 거 같다.

Part III, IV

후반부는 여러가지 깊은 programming 관련 주제를 이야기한다. 이 책이 확실히 R이라는 언어 자체에 대한 책이라는 점을 보여준다. 가끔 커뮤니티를 보면 R이 너무 느리고 대규모 데이터를 처리하기 어렵다고 이야기하는 사람들이 있고, 역자가 그건 R을 잘 몰라서 그렇고, 지원하는 package들이 있다고 하는데, 이 부분이 이 책의 범위를 벗어나는 주제라 볼 수 없어서 아쉬웠다. 고급 기법을 기대한 건 아니고, 그냥 간단한 parallel 실행에 대해 사례 정보만 보여줬으면 더 좋았을 거 같다(지극히 개인적인 아쉬움). 예제를 실행하는 데는 큰 어려움은 없었다.

Chapter 19.4 Rcpp 설탕인데, 역시 syntactic sugar를 설탕이라고 번역하는 부분은 매우 아쉽다.

Rcpp가 Chapter 20. C interface보다 먼저 나온 이유는 Rcpp가 메모리 관리 등 여러가지 측면에서 다 좋기 때문인 걸로 보인다.

> install.packages(‘pryr’)
> library(pryr)
> install.packages(‘inline’)

이 예제는 실패했는데 필요한 건 둘 다 설치한 거 같지만 오류가 발생했고, 원인은 아직 모르겠다.

etc

https://github.com/BillPetti/baseballr

좀 빨리 하긴 했지만, 해보고 싶었던 야구 관련 package를 따라하려고 R Studio에서 설치를 시도했지만 결국 실패했다(꽤 오래 걸림). 아직 R Studio log를 보는 게 불편해서 원인 분석은 못 했는데, 아마도 환경 변수 오류일 가능성이 높을 거 같다.

총평

책 자체는 R programming을 잘 하기 위해 잘 쓰여졌다고 생각한다. 여러가지 깊은 주제들도 대부분 언급을 했기 때문에 더 나은 수준을 가기 위해 필요한 발판이 될 수 있다. 번역 부분은 개인적으로 조금 아쉽지만, 이건 사람에 따라 시각이 다를 수 있으므로, 단정지어 말하긴 어렵다. 전체적으로 볼 때 좋은 책이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
핸즈온 머신러닝 - 사이킷런과 텐서플로를 활용한 머신러닝, 딥러닝 실무
오렐리앙 제롱 지음, 박해선 옮김 / 한빛미디어 / 2018년 4월
평점 :
구판절판


(다 읽지는 못한 상황)


장점


관점에 따라 다를 수 있지만 이론과 실습이 잘 조화되었다


알고리즘을 예를 들어 설명하고 구현하는데 초점을 맞췄기 때문에 (비교적) 따라가기 쉽다


역자가 예제를 잘 따라갈 수 있게 설명을 잘 해뒀다

https://github.com/rickiepark/handson-ml

물론 요즘 대부분의 프로그래밍 책들이 깃헙을 통해 소스를 공개하고 따라갈 수 있게 하지만, 소스 코드만 올려놓고 설정이나 설치에 대해서는 인색한 경우가 종종 있는데, 이 책의 역자는 그렇지 않았다. 실습을 따라할 수 있는 거의 대부분의 환경을 설명했다


원서의 깃헙은 지금도 활발히 업데이트를 하고 있는데, 내용을 아직 잘 몰라 이해는 못했지만, 최신 경향을 반영하려는 듯 하다

https://github.com/ageron/handson-ml


단점


나의 이해 능력.... -_-;


기타


기억이 맞다면 역자가 다음 블로그에 이 책의 번역에 대한 이야기를 써 뒀는데, 가보니 왠지 글이 사라졌다

https://tensorflow.blog/2017/12/30/review-hands-on-machine-learning-with-scikit-learn-tensorflow/

무슨 이유가 있겠지만, 뭔가 아쉬움


댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
처음 배우는 딥러닝 수학 - 그림으로 이해하고 엑셀로 확인하는 딥러닝 수학 기본
와쿠이 요시유키.와쿠이 사다미 지음, 박광수 옮김 / 한빛미디어 / 2018년 2월
평점 :
장바구니담기


딥러닝 책이 많이 나오지만, 기초부터 시작하게 도움을 주는 책은 많지 않다. 기초부터 하는 게 재미가 없는 일이기도 하고, 독자들이 관심을 덜 가지니 그럴 수 밖에 없다고 생각한다. 하지만 그렇기 때문에 이런 책은 좀 더 소중하고 잘 읽어봐야 한다.


이 책은 제목에서도 나타나지만, '수학'책이다. 책을 보면, 다 잊고 몇몇 용어들만이 기억에 남은, 고등학교 때 배운 수학을 가지고 딥러닝 기초에 어떻게 사용할 수 있는지를 보여준다. 제공하는 엑셀 파일로 따라갈 수 있게 해서 의외로 읽기는 쉽지만, 그렇기에 잊기도 더 쉽다. 아무래도 고등학교 때 했던 것처럼 손으로 직접 해봐야 더 기억이 잘 남을 거 같긴 하다. 하지만, 그래도 다 잊어버린 수학 내용을 (착각일지라도) 쉽게 따라갈 수 있게 설명한 점은 큰 장점이다.


그리고 중요한 점은 아니지만, 현재 출판사에서 제공하는 엑셀 파일 링크에서는 일본 쪽 링크와 달리 부록 A, B 파일이 빠져있다. 일본 쪽 링크에 가면 받을 수 있고, 살펴보는 데는 아무 지장이 없다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo