통계의 아름다움 - 인공지능 시대에 필요한 과학적 사고
리찌엔.하이언 지음, 김슬기 옮김, 김재광 감수 / 제이펍 / 2020년 11월
평점 :
장바구니담기


이 책의 최고 장점을 꼽으라면 단연 96가지의 예시들이다. 통계학에 어울리는 귀납적인 예시를 통해 저 위에 추상적으로 존재하는 딱딱하고 어려운 통계의 개념을 96가지나 되는 예제로 비추어 일상의 언어로 끌어내리는 탁월한 가독성과 폭 넓은 저자의 박학다식에 극찬을 아낄 수 없다. 먼저 그 예시들이 무엇인지 몇 가지 소개해 보려 한다.

  • 로또 복권 당첨 숫자로 지금까지 1 ~ 20의 숫자가 많이 등장했다면 다음 회차에는 21 ~ 45의 숫자가 많이 등장할까?

물론 “아니다”. 조금만 생각해보면 동전 던지기에서 앞면이 여러번 등장했다고 다음번에 뒷면이 등장할 확률이 높아지는 것은 아님을 알 수 있다. 그런데 왜 가끔 우리는 직관적으로 이런 오답을 내리는 것일까?

정도의 차이가 있을 뿐 우리는 모두 정규분포라는 단어를 알고 있다. 중학교 때 부터 이미 배운 용어이기 때문이다. 그런데도 이 단어가 친숙하지 않은 이유는 무엇일까? 아마도 분포라는 단어보다는 “정규”라는 단어 때문일 것이다. 그런데 정규라는 단어는 정상(Normal)이라는 뜻이다. 한 마디로 정상적인 분포라는 뜻이다. 자연계에는 정규 분포가 더 많이 나타나기에 상식적으로 흔한 쪽에 정상이라는 단어를 부여한 것일 뿐이다.

아래 그림은 책에 등장하는 정규분포와 균등분포의 차이이다. 일상에는 정규분포가 훨씬 많은데 우리의 직관은 균등분포가 당연하다고 착각한다.정규분포 시각화

아래 라오의 실험 결과를 보면 정규분포와 균등분포의 착각에 대한 감을 잡기 더 쉬워진다. 단지 3번의 쉬운 조사를 표로 정리한 결과이다.

  • 병원에서 1,000명 신생아의 성별(남/여) 기록
  • 동전을 1,000번 던져서 앞면/뒷면 기록
  • 상상 속에서 동전을 1,000번 던져서 앞면/뒷면 기록
  • 마지막으로 각 3개 유형의 기록을 5개씩 모아 앞면 혹은 남자의 등장 횟수를 기록한다.라오의 실험

실험1(병원데이터)와 실험2(실제 동전 던지기)는 자연계의 확률 현상으로 지극히 정상적으로 정규 분포를 띄고 있음을 알 수 있다. 그런데 실험3(상상 속 동전 던지기)를 보면 우리의 인식은 판이하게 다르다. 즉, 균등분포에 대한 확률 집착을 떨치기 어려워진다. 앞/뒷면의 비율이 깨질까 염려되어 비슷한 횟수로 앞/뒷면을 맞추고자 노력하기 때문이다.

정규분포의 학문적 정의를 내리기 이전에 이 시각화 자료와 로또 복권의 예시를 먼저 배워야 하지 않을까? 바로 이 책이 지식을 전달하는 방식처럼 통계, 과학, 수학의 개념을 위와 같이 예시, 시각화 자료, 일상의 언어를 통해 먼저 이해를 도와야 한다는 말이다.

책에 등장한 모든 예시들에 대하여 위처럼 발견한 인사이트를 자세히 다뤄보고 싶지만, 리뷰라는 특성 상 영감을 돋궈주는 몇가지 재미있는 예시 및 인용구들을 짧게 나열해 보겠다.

  • 아주 오래전부터 인류는 확률성 사고를 가지고 있었다. 심지어 “역경”의 점치기도 확률 숫자 시드(Seed)를 설정해야 했다.

  • 상금 배분 문제
    • 규칙 : 이긴사람에게 10점을 부여. 60점을 먼저 획득한 사람이 승리.
    • 상황 : A가 50점, B가 30점인 상태에서 불가피 하게 게임이 중단될 경우 상금을 어떻게 배분해야 공정할까?
    • 가능성이라는 개념이 등장한다.
  • 중국 우한 시민 서민 아파트 공개 추첨
    • 우한시 : 5141명 중 124명 당첨. 그 중 6명의 아파트 증명 번호가 연속된 숫자로 드러나 자격 박탈.
    • 라우허코우시 : 1138명 중 514명 당첨. 그 중 14명이 연속된 숫자였지만 자격 유지.
    • 어떤 차이가 있을까? 여기에서 귀납법 계산과 몬테카를로의 인사이트를 얻을 수 있다.
  • 몬티홀 문제
    • 3개의 문이 있다. 1개의 문 뒤에는 차(Car), 나머지 2개의 문 뒤에는 염소가 있다. 차를 고르면 상품으로 주어진다.
    • 참가자가 하나를 고르면 사회자가 문 뒤에 나머지 하나를 열어 염소를 보여준다.
    • 참가자는 문을 고를 기회가 다시 주어지는데 “선택을 유지할지 vs 다른 문을 선택할지”의 상황에서 어떤 선택이 유리할까?
    • 조건부확률과 베이즈 추론을 이해하는데 이만한 예제가 없다.
  • 차(茶)를 맛보는 여인
    • “차를 먼저 따르고 우유를 나중에 따른다. vs 우유를 먼저 따르고 차를 나중에 따른다.” 중 어느 차가 더 맛있을까?
    • 통계 추론에서 매우 중요한 가설 검증, 귀무가설, 유의수준을 쉽게 이해할 수 있다.
  • 검은 공의 비율은?
    • 상자안에 흰공, 검은공이 전체 N개 있다. 1개를 꺼낸 후 다시 상자에 집어넣는다고 가정하고 10회 반복했을 때 1개가 검은공이라면 상자안 검은공의 비율p는 얼마인가?
    • 최대우도를 이해할 수 있다.
  • 식스시그마의 결함률은?
    • 정규분포, 표준편차, 귀무가설을 이해할 수 있다.
  • 뉴턴의 사과
    • 연역적 : F = G * (m1 * m2) / r^2
    • 귀납적 : F = f(m1, m2, r) + e
    • 적합(fitting), 학습, 오차의 이해
  • 명목, 서열, 등간, 비율 척도
    • 명목척도 : =, != 연산만 가능
    • 서열척도 : >, < 연산도 가능
    • 등간척도 : +, - 연산도 가능
    • 비율척도 : *, / 연산도 가능
    • 구차한 설명없이 수학으로 직관적인 설명이 가능하다.
  • 제노의 패러독스
    • 상황 : 아킬레우스의 속도가 거북이의 10배. 100m 앞에서 도망치는 거북이를 아킬레우스가 잡을 수 없다.
    • 이유 : 아킬레우스가 100m 쫓아가면 거북이는 10m 앞서 간다. 다시 아킬레우스가 10m 쫓아가면 거북이는 1m를 앞서 간다. 무한 반복되어 영원히 거북이를 잡지 못한다.
    • 시간의 연속이라는 개념이 등장하며 극한과 급수를 이용해 이 오류를 해결할 수 있다.
  • 설계행렬(Design Matrix = Data Frame)
    • 일반적인 행렬(Matrix = Numpy)와는 다른 개념
    • 개체의 관점 : 행이 기본단위
    • 분석의 관점 : 열이 기본단위
    • 수학적 관점 : 벡터가 기본단위
    • 기하학적 관점 : 공간의 표본점(열과 행은 차원)설계행렬
  • 시각화와 역사상 가장 좋은 통계 그래프(나폴레옹 원정)
    나폴레옹모션차트
    • 시각화의 모든 역사, 발전과정, 극좌표와 직각좌표 간 선형변환 등을 알 수 있다.
  • 머신러닝과 딥러닝의 모델에 관한 대부분의 지식과 직관적 예시

  • 통계학에서부터 빅데이터까지의 주요 개념 및 도구들의 변화

  • 데이터의 함정
    • 중국 IT 업계의 대부들은 모두 전갈자리 생일을 갖고 있다?
    • 승자의 저주 / 여신과의 인연 / 이름의 중요성 / 미국의 대선 / 행운아의 전설 / 하버드 총장의 해고 / 심슨의 패러독스

신의 언어를 인간의 언어로 표현하는 방법 중에 구체적인 예시만한 것이 또 있을까?

소크라테스의 문답법, 성경이나 고대 경전을 보면 직관적으로 이해하기 힘든 난해한 개념을 설명할 때 극단적인 보기를 들어 예시를 들곤 한다.

앞서 언급했듯 통계라는 딱딱하고 난해한 개념을 쉽게 표현하기 위해 이 책에는 정말 많은 예시들이 등장한다. 직접 세보진 않았지만 역자의 머리글을 읽어보면 무려 96가지의 예시가 등장한다고 한다. 통계학을 다루는 서적답게 귀납적인 예시를 통해 통계를 설명하는 구성이 흥미롭다.

책은 그저 예시만 다루는 것이 아니다. 2장 데이터와 수학 편을 보면 선형대수의 메타지식을 물흐르듯 설명하는데 그간 배워온 선형대수 지식에 등고선이 생기며 무엇이 중요하고 파트별로 데이터 분석이나 통계에 어떤 방식으로 활용되는지 입체적으로 이해할 수 있었다. 뒷장에는 현대에 각광받는 머신러닝, 딥러닝은 물론 시각화와 데이터의 함정까지 다루고 있어 추천사에서 읽은 바와 같이 통계학의 고전부터 최신까지 거시적 이론 프레임에 대한 저자의 이해도가 느껴진다.

학창시절 처음 통계라는 말을 들었을 때 느꼈던 이미지를 회상해 보면 “숫자 덩어리, 복잡함, 아저씨, 재미없음” 정도의 느낌이었다. 하지만 그 때 이 책을 만났더라면 난 주저없이 통계학을 전공으로 선택했을 것이다.

지금와서 느끼는 통계는 책의 제목만큼이나 꽤 아름다운 학문이고 진리의 끝에 도달하고 싶어 노력했던 여정의 기록이라는 생각도 든다. 이런 통계의 의미는 늘 곁에 있었지만 내 안목은 좁아 미리 알지 못했고 알파고가 등장한 이후에야 조금이나마 제대로 느낄 수 있었을 뿐이다.

AI, 빅데이터, 4차 산업혁명 거창한 말을 시작하기에 앞서 진정 AI 분야로 발을 들이고 싶은 학생이나 입문자가 있다면 꼭 이 책으로 시작하라는 말을 드리고 싶다. 철학, 과학, 수학, 그리고 저자의 인생이 모두 녹아있어 스스로 이 분야의 적성에 적합한지 검증하는데 도움이 될 것이다. 더불어 통계의 첫 인상을 복잡한 숫자 덩어리로 인식하는 것이 나을지 일상의 흔한 흥미로운 퀴즈로 인식하는 것이 나을지 첫만남, 첫인상을 생각해 본다면 이 책으로 시작하는 것이 얼마나 행운일지 알게 될 것이다.

아울러 이미 데이터 분석, 과학 업무에 종사하는 이들에게도 추천하고 싶다. AI 세계의 무협지처럼 - 실제로 무협지의 예시도 자주 등장한다. - 흥미 진진하여 업무를 중단하고 머리 식히기에 이만큼 재미있는 책을 찾기 힘들 것이며, 통계와 데이터 과학의 세계는 너무나도 광범위하므로 분명 몰랐던 인사이트를 얻어 현재의 실력을 업그레이드 할 수 있는 좋은 인사이트를 제공할 것이기 때문에 필독을 권하는 바이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
통계의 아름다움 - 인공지능 시대에 필요한 과학적 사고
리찌엔.하이언 지음, 김슬기 옮김, 김재광 감수 / 제이펍 / 2020년 11월
평점 :
장바구니담기


이 책의 최고 장점을 꼽으라면 단연 96가지의 예시들이다. 통계학에 어울리는 귀납적인 예시를 통해 저 위에 추상적으로 존재하는 딱딱하고 어려운 통계의 개념을 96가지나 되는 예제로 비추어 일상의 언어로 끌어내리는 탁월한 가독성과 폭 넓은 저자의 박학다식에 극찬을 아낄 수 없다.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
R을 이용한 퀀트 투자 포트폴리오 만들기 - 데이터 크롤링 및 분석, 퀀트 전략을 활용한 투자 종목 선정까지, 개정판
이현열 지음 / 제이펍 / 2021년 2월
평점 :
장바구니담기


퀀트 포트폴리오 전략의 기초에서 백테스트에 이르기까지 데이터 사이언스가 금융 도메인 지식을 만났을 때 필요로하는 핵심 지식들을 깔끔하고 이해하기 쉽게 정리한 책이다.

구현 과정은 R 언어를 활용하는데 요소요소 R의 강점을 잘 표현하고 있어 R을 제대로 쓰기에도 좋은 지침서라는 생각이 든다. 크롤링 과정으로 R의 Tidyverse 철학을 느껴볼 수 있고, 8장의 dplyr 데이터 분석 패턴이라는 징검다리를 건너, 각종 논문에 등장하는 수식을 통계 패키지를 활용해 한두줄의 코드로 깔끔하게 분석하는 과정을 통해 R을 어떻게 사용해야 하는지 거침없이 표현하고 있다.

책을 읽으며 느꼈던 장점과 단점을 중심으로 리뷰를 시작해보겠다.


  • 책의 백미, 퀀트의 기초
    본 도서의 백미는 9 ~ 13장에 이르는 퀀트의 기초 내용을 간결하고 쉽게 정리한 점이다. 퀀트를 제대로 이해하려면 금융 공학에 대한 기본 지식, 논문 등의 연구 자료, 수식 및 도출 과정들이 모두 포함되어야 할 텐데 이들을 모두 포함하면 너무 난잡해지거나 분량 측면에서 감당하기 어려운 책이 되었을 것이다.

    위 필수 내용들이 하나도 빠지지 않으면서도 설명은 전체 맥락을 이해하는데 필수적인 부분만 다루고 수식 또한 논문 수준의 수식보다는 직관적으로 일반인들이 이해하기 쉬운 형태의 전개로 표현하는 등 짧은 지면에 핵심을 잘 간추리는 저자의 전달력에 놀랐다. 마치 논문과 구현의 경계에서 가장 쉬운 지름길을 찾아가는 과정 같았다.

    증권사에서 핀테크 스타트업에 이르기까지 풍부한 실전 경험을 바탕으로 패스트캠퍼스에서 R과 퀀트 투자 강의를 맡으며 퀀트 투자의 대중화를 위해 노력한다는 저자의 소개가 무색하지 않게 실력이 뛰어난 고수가 전달력까지 좋으면 이런 멋진 책이 탄생하는 구나 라는 생각이 들었다.

    그동안 퀀트 관련 여러 책들을 읽어봤고 논문들도 찾아봤는데 블랙-숄즈 방정식과 같이 이미 고전이 되어버린 방정식을 구현해본다던가, 기초를 건너뛰고 최근 주류인 딥러닝의 CNN, GAN 같은 기술을 접목할 때마다 기본 실력이 부족해서 답답했던 기억이 있다.

    반면 본 도서에서는 포트폴리오 운용 전략에 해당하는 종목 선정, 포트폴리오 구성, 백테스트 및 평가에 이르는 일련의 기초 과정의 핵심이 잘 정리되어 있어 그동안 내가 어떤 기초가 부족했던 것인지 일종의 미싱 링크를 찾은 느낌이었다.


본 서에서 다루는 퀀트의 기초 내용을 간단히 소개하면 다음과 같다.

  • 종목선정
    • 팩터(Factor) : 수익률에 영향을 미치는 요소
    • 베타(Beta) : 개별 주식이 전체 주식시장 변동에 반응하는 정도
    • 저변동성 효과 : 변동성이 낮은 종목들의 수익률이 높은 효과
    • 모멘텀 : 추세. 상승 추세는 지속적으로 상승하고, 하락 추세는 지속적으로 하락하는 관점
    • 밸류 : 기업의 가치. PER, PBR, PCR, PSR 등
    • 퀄리티 : 기업의 우량성. F-ScoreFSCORE_211
    • 섹터 중립 포트폴리오 : 모멘텀 등 팩터들이 특정 섹터의 호황기에 동일 섹터의 모든 종목이 함께 움직이는 경향인 쏠림 현상을 제거한 포트폴리오 구성 방법
    • 조엘 그린블라트 마법의 공식 구현
    • 멀티팩터 포트폴리오 : 위에서 배운 모든 팩터들과 이론들을 결합하여 지표를 설정해보는 과정으로 복습에도 도움이 되고 데이터 사이언스가 금융이라는 도메인을 만났을 때 어떤 작업이 이루어지는지 기본 흐름을 맛볼 수 있었다.
  • 포트폴리오 구성
    • 최소분산 포트폴리오 : 변동성이 최소인 포트폴리오로 고정된 분산-공분산 행렬에 대한 변동성이 최소가 되는 가중치 w를 찾는 최적화 문제최소분산_266
    • 최대분산효과 포트폴리오 : 상관관계가 낮아질수록 포트폴리오의 변동성이 낮아진다는 효과를 이용하여 분산효과를 최대로 하는 포트폴리오 구성 방법최대분산_267
      최대분산_277
    • 위험균형 포트폴리오 : 특정 자산의 비중을 증가시켰을 때 전체 포트폴리오의 위험성 증가 여부를 확인하여 위험 기여도를 산정. 편미분 개념.
    • 인덱스 및 인핸스트 인덱스 포트폴리오 : 액티브, 패시브 전략별 포트폴리오
  • 포트폴리오 백테스트
    • 현재 전략을 과거부터 실행 시 어떤 성과가 발생하는지 테스트해보는 과정
    • 60대 40 포트폴리오 백테스트 : 주식과 채권에 각각 60%, 40% 투자를 가정
    • 시점 선택 전략 백테스트 : 메브 파버의 논문을 활용한 전략으로 과거 10개월 이평선을 활용
    • 동적 자산배분 백테스트 : 지금까지 배운 모든 것들을 응용해보는 과정인데 이 파트가 없었으면 반쪽자리 백테스트가 되었을 것이다. 이 책이 가치있다고 생각한 부분 중 하나이며 앞서 배웠던 것들을 유기적으로 연결해볼 수 있다.동적자산_321
  • 성과 및 위험 평가
    • 백테스트로 구한 수익률의 성과 및 위험성을 평가하는 과정.
    • QMJ 팩터 : 우량성이 높은 종목들을 매수하고, 낮은 종목들을 공매도 하는 전략을 지수 형태로 표기

  • R의 강력함을 잘 표현하는 책(R vs Python)
    이 책의 또 다른 장점 중 하나는 R을 제대로 쓰면 얼마나 강력한지 무기가 될 수 있는지 보여준다는 점에 있다. 개인적으로 프로그래머이기에 Python을 더 많이 활용하고는 있지만 몇가지 특수한 상황은 R과 영원히 작별할 수 없게 만들곤 한다.

    첫째, dplyr 패키지를 활용한 일련의 데이터 분석 과정은 Python의 Pandas를 활용할 때보다 고정된 패턴이 있어 조금 더 직관적이고 생산적이다.

    Python의 최대 장점은 유연성에 있다고 생각한다. 데이터가 어떻게 생겨먹고 분석 기법이 무엇이든 뭐든지 표현하고 가공할 수 있다. 반면 그 유연성이 때로는 독이 되어 능숙하지 않은 기법을 찾아 쓸 때는 많은 시행착오를 거쳐야 하고 그 만큼 시간이 낭비되어 생산성을 저해하곤 한다.

    반면 R은 유연성이 다소 떨어질진 몰라도 join, glimpse, rename, mutate, filter, summarize, arrange, group by 등으로 이어지는 dplyr의 마법의 분석 패턴을 하나 잘 익혀 놓으면 Tabular 형식의 데이터 80%는 이 패턴 하나로 몇분 만에 깔끔하고 직관적으로 분석할 수 있다. 이 책에서는 8장의 절반만 할애해서 R의 핵심 기능을 너무 잘 표현하고 있다.

    프로그래밍에도 좋은 패턴과 예제 하나를 잘 익혀두면 나머지는 시간과 경험의 문제에 지나지 않는다. 비슷한 예로 웹프로그래밍을 처음 배울 때 게시판 예제 하나만 잘 짜도 대부분의 웹 프로그래밍 80%는 익히는 셈이라 할 수 있다. 나머지 디테일한 부분은 그저 시간과 경험의 싸움일 뿐이다.

    시중에 나온 R 서적이 상당히 많은데 내용은 충분하지만 기능별로 모두 파편화되어 돌아서면 잊어먹기 딱 좋은 구성이다. 하지만 이 책은 달랐다. 8장에서 펼쳐지는 데이터 분석의 기본 패턴을 잘 익혀놓으면 명확한 개념의 큰 물줄기를 얻을 수 있다. 더불어 주식 종목정보 분석이라는 흥미로운 유인책은 나름의 학습 동기를 부여해주기에 분석의 과정을 더욱 이해하기 쉬워지며 dplyr가 가지는 R의 매력을 여실히 보여준다.

    둘째, Tidyverse로 대표되는 R의 철학은 상당히 매력적인데 이 책이 그 장점을 잘 활용하고 있다. 예를 들면 JavaScript에는 Callback 지옥이 한 때 유명했는데 쉽게 말하자면 괄호의 지옥이다.

    A(B(C()))와 같이 일련의 함수 호출 과정속에 인자 혹은 옵션 몇가지만 추가되면 괄호속에 파묻혀 직관적으로 한 눈에 잘 들어오지 않는다. 이를 해결하기 위해 Promise나 async, wait 등의 기법이 나왔는데 Tidyverse에서는 이를 해결하지 위해 파이프 오퍼레이터(%>%)를 활용하여 논리적인 기능의 흐름의 경계선을 명확히 구분하여 직관적인 이해를 돕는다.

    셋째, 통계에 특화된 R의 기능이다. 9장의 예제에서도 나오지만 베타(개별 주식이 전체 주식 시장의 변동에 반응하는 정도)를 구하는데 필요한 R의 코드는 고작 한 줄이다. ‘'’R lm(ri ~ rm) ‘’’ 긴 통계학의 역사적인 아이디어를 포뮬러를 활용해 한 줄의 명령어로 쉽게 파악할 수 있다는 점은 R에서 쉽게 손을 뗄 수 없는 매력 중 하나이다.

    그 외에도 ggplot2가 Python 진영의 시각화 라이브러리에 비해 월등한 점, bookdown 패키지 등 산출물과의 연계 기능이 뛰어난 점, 유연성을 포기하고 일정 패턴을 가짐으로써 초보자의 진입 장벽이 낮다는 점 등이 부수적인 장점이라고 생각한다.

    물론 그렇다고 Python이 가진 범용 프로그래밍 언어 고유의 장점을 상쇄할 순 없다. 예를 들어 주식 데이터의 캔들 그림을 인풋 데이터로 활용하여 CNN으로 예측 분석 모델을 구현한다거나, RNN을 활용하여 주가 방향성을 분류, 오토인코더를 활용하여 주가 데이터를 생성하는 등의 딥러닝 위주 프로그래밍은 Python이 훨씬 편리하며 End-to-End의 구현, Serving과 배포 측면에서도 R이 Python을 따라가기엔 부족한 느낌이 든다.

    이런 이유들로 인해 조금 귀찮을지라도 Python과 R 두마리 토끼를 쫓게 되었는데 이 중 R의 장점을 이 책에서 잘 표현하고 있기에 R을 유기적으로 이해하고 빠르게 활용하고 싶은 독자에게 많은 도움이 될 수 있는 책이라는 생각이 들었다.


  • 기타(크롤링 등 프로그래밍 언어로써의 R)
    평소 크롤링은 Python 언어를 활용하는 편이라 이 책을 통해 R을 이용해 크롤링 하는 방법을 처음으로 접했는데 문법이 단순하고 코드량도 적어 참 깔끔하다는 생각을 했다. 프로그래머가 아닌 분들에게는 R 크롤링도 좋은 선택이 되겠다는 생각이 들었다.

    그 외 각종 공시정보를 어느 사이트에서 얻을 수 있는지, 제공되는 API에는 어떤 것들이 있고 발급 받는 방법 등이 잘 정리되어 있어 조사하는 시간을 줄일 수 있다는 점도 책의 장점이다.

    책의 전반부(1 ~ 7장)는 주로 크롤링과 데이터 수집, 가공에 대한 내용을 다루고 있는데 과정 중간마다 R의 기본 문법을 잘 정리해주고 있어 R의 다양한 기능 중 필요한 것만 쏙 뽑아먹는 느낌이었다.

    이 책은 어느정도 R 문법을 아는 분들을 대상으로 쓰여진 책이지만 난 오히려 이 책으로 굵직한 맥락을 숙지하고 필요할 때 거꾸로 레퍼런스를 찾아보는 것이 시간대비 학습 능률에 도움이 되겠다는 생각이 든다.

    개인적으로는 후반부(8 ~ 13장)에 관심이 많아 해당 부분 위주의 리뷰를 작성했지만 독자마다 필요로 하는 지식이 다를 수 있으므로 R의 기본 문법과 크롤링 등의 기능에 관심있는 독자라면 전반부(1 ~ 7장)의 내용도 매우 유익할 것 같다.


  • 아쉬운 점
    개인적으로 너무 마음에 들었던 책인지라 칭찬 일색으로 일관했기에 다소 아쉬웠던 점도 정리해 보려한다.

    • 퀀트 트레이딩 전략 및 심화 과정도 자세히 다루는 후속편이 나왔으면 좋겠다. 저자 분의 내공과 전달력이면 이 부분도 왠지 자신감이 생길것 같다. 물론 그러면 또 어렵다고 악평을 하는 독자 분들이 많아지는 것도 알고 있다. 책을 좋아하는 사람으로써, 입문서보다는 중급서에 관심이 많아지게 된 세월 때문에 이해하기 어려우면 비추하는 리뷰 문화에 할 말이 참 많다..

    • 딥러닝과 융합된 R의 모습도 보고 싶은데 이 역시 본 도서에서 다룰 일은 아니고 후속편으로 등장했으면 좋겠다. 적고 보니 후기작에 대한 의견이 되어버린 것 같은데 사실 범위 정도를 제외하고는 본 도서를 흠잡기 어렵다.


수식과 기본을 놓치지 않고도 퀀트의 기초 지식을 쉽게 습득하고 싶은 분들께, R을 R답게 활용하고 싶은 분들께, 데이터 사이언스가 금융 도메인 지식을 만나면 어떻게 활용되는지 알고 싶은 분들께 추천드린다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
R을 이용한 퀀트 투자 포트폴리오 만들기 - 데이터 크롤링 및 분석, 퀀트 전략을 활용한 투자 종목 선정까지, 개정판
이현열 지음 / 제이펍 / 2021년 2월
평점 :
장바구니담기


퀀트 포트폴리오 전략의 기초에서 백테스트에 이르기까지 데이터 사이언스가 금융 도메인 지식을 만났을 때 필요로하는 핵심 지식들을 깔끔하고 이해하기 쉽게 정리한 책이다.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
Do it! 장고 + 부트스트랩 파이썬 웹 개발의 정석 Do it! 시리즈
이성용.김태곤 지음 / 이지스퍼블리싱 / 2021년 1월
평점 :
장바구니담기


본 도서는 Python - Django 기술을 중심으로 최신 트렌드의 기술 스택을 활용하여 웹 개발 프로젝트의 전반을 다루는 책이다.

개인적으로는 데이터 분석에 있어 Python을 주로 다루고 있기에 같은 언어를 활용하여 시너지를 낼 수 있는 웹 프로젝트를 개발하고 싶은 마음에 본 도서를 읽게 되었다.

또 다른 이유로 그동안 웹 개발에 주로 활용해 왔던 Java 기반의 개발에서 잠시 벗어나 데브옵스 환경 및 최신 트렌드를 활용한 개발에 구미가 당기기도 했다. 책을 읽고 난 후 결론부터 얘기하면 소기의 목적에 맞는 스킬들을 이 책에서 얻을 수 있어 기뻤다.

책이 어떻게 구성되어 있고, 어떠한 내용을 다루며, 누구에게 도움이 될지 아래와 같이 장점을 중심으로 리뷰해보겠다.

  • 웹 개발 프로젝트에 필요한 모든 과정을 다룬다.
    이 책이 그저 Django 프레임워크에 대한 설명을 다룬다던가, 아니면 웹 개발을 위한 Python 문법 정도만 다뤘다면 이 책에 높은 점수를 부여하긴 힘들었을 것이다. 그런 책은 시중에 널려있는 데다 인터넷 검색으로 쉽게 정보를 얻을 수 있기 때문이다.

    많은 장점 중에서도 이 책이 가지는 최고의 장점을 꼽으라면 웹 개발의 전과정을 다루는 점을 꼽고 싶다. 웹 개발에 10년 이상 종사한 경험에 비추어 볼 때 주니어에서 시니어로 넘어가는데 겪는 어려움은 대부분 프레임워크, 서버, Echo 환경 간 호환성 측면이나 연결 부분에서 발생한다. Django 프레임워크 활용법이 미숙하거나 Python 문법에 익숙치 않아 겪는 문제보다는 WebServer와 Django의 호환성, DB 연동에서의 이슈, 도커와 Git을 활용한 배포 이슈, TDD와 관련된 의사소통 등에서 주로 어려움을 겪는다. Django나 Python 자체만의 어려움은 요즘 레퍼런스들이 워낙 좋아 인터넷 검색만으로도 쉽게 트러블 슈팅이 가능하다.

    주니어들이 상대적으로 이런 프레임워크 및 서버 간 연동에 어려움을 겪는 이유는 대부분 경험 부족인데 웹 프로젝트 전체를 아우르는 경험이 상대적으로 부족하기 때문이다. 이런 측면에서 볼 때 웹 개발 환경 전반을 모두 다룬다는 것은 전체 프로세스에 대한 역량을 미리 쌓아볼 수 있어 큰 행운이라 할 수 있다. 책이 600p가 넘는 상당한 분량을 갖는 이유 또한 이런 전과정을 모두 다루고 있기 때문이다.

    BootStrap - Git - Pycharm - Test - Docker - Cloud에 이르는 전 과정을 그저 나열식으로 설명하는 것이 아닌 타임라인에 따라 유기적으로 배치한 구성이 일품이다. 저자 특유의 전달력으로 알기 쉽게 전달해주기 때문에 책을 읽고 생기는 궁금증만 스스로 더 능동적으로 학습한다면 최단 시간 내 시니어의 경지에 오를 수 있을것이다.

  • 최신 트렌드를 활용한 기술 스택이 돋보인다.
    • BootStrap
      BootStrap은 프런트 엔드 지식이 풍부하지 않은 사람도 단 시간내에 실력있는 퍼블리셔 혹은 프런트 엔드 개발자의 퍼포먼스를 낼 수 있게 도와주는 프런트 엔드 프레임워크다. 책의 분량이 상당한데 적당한 완급 조절을 위해 그리고 너무 프런트 엔드에 치우치지 않도록 저자의 선택이 돋보였다.

      HTML, JavaScript, CSS 등의 지식은 독자 수준에 따라 각각의 요소마다 한 권의 책을 할당해도 설명이 부족할 수 있는 부분인데 이를 한 큐에 해결하기에는 BootStrap이 제격이다. Django의 특성 상 백엔드에 초점이 맞춰져 기술될 수 밖에 없는 주제의 특성 상 프런트 엔드에 소홀해 질 수 밖에 없는데 직접 눈으로 보고 이해하려는 UI 부분을 한정된 지면 내에 효과적으로 설명하기 위해 BootStrap을 사용한 것은 최신 트렌드에 부합하며 독자들의 집중력 유지에 도움을 준다고 평할 수 있겠다.부트스트랩

    • Docker와 클라우드
      데브옵스의 개념이 널리 퍼진지 오래이지만 그럼에도 아직까지 Docker를 사용하지 않는 회사가 더 많을 것이다. 대부분 사내 데이터 혹은 인프라 센터를 보유하고 있기 때문이다. 이를 거꾸로 생각하면 사내 레거시에 배포하는 것 보다 데브옵스의 개발환경에 익숙치 않은 개발자들이 많다는 의미일 것이기에 상대적으로 보다 최신 트렌드인 데브 옵스 환경을 간접적으로 경험하고 싶은 이들에게 본 도서는 유기적인 프로젝트 수행 능력을 향상시키는데 도움을 준다.

      AWS와 같은 클라우드를 활용할 기회가 없던 독자에게는 클라우드의 기본 맛을 보는데 이만한 경량 예제도 없다는 생각이 든다. 더불어 Docker 기반으로 개발한 프로젝트를 AWS로 이식하는데 얼마나 편리한지 느끼며 현재의 레거시를 데브옵스 환경으로 바꾸기 위한 최소한의 기술을 습득할 수 있을 것이다.AWS

    • Git
      아직도 사내에 Git을 사용하지 않는 회사가 많다. 인력, 예산 등의 문제로 인해 기존 레거시를 업그레이드 하지 못한 회사도 있을 것이고 GitHub 오픈소스 정책과 부합하지 않는 면도 있을텐데 버전 관리에 있어 역시 최신 트렌드를 활용함으로써 SVN 등의 전통적인 형상 관리에서 벗어나 Git을 익히고 싶은 독자에게는 큰 도움이 될 수 있는 부분이다.

      특히 Git은 1개의 챕터에서 모두 설명하고 끝나는 방식이 아닌 처음 블로그 예제를 개발하며 리포지토리를 설정하고 중간 중간 필요시마다 커밋하는 등 실전과 동일한 이벤트마다 활용하고 설명해주고 있기에 보다 빠른 이해와 습득이 가능할 것이다.

    • TDD(테스트 주도 개발)
      물론 테스트 주도 개발은 나온지 꽤 오래된 개념이다. 개인적으로 2005년 Ruby 기반의 TDD 번역서에서 처음으로 접했기에 이미 상당히 오래된 개념인데 실제로 프로젝트를 수행하면서 TDD를 제대로 접목하여 쓴 경험이 별로 없다.

      하지만 Django 기반의 TDD는 적어도 국내에서는 역사가 그리 깊지 않다. Python 자체가 웹 프로그래밍에 있어 주류가 아닌데다 최근 AI, 데이터 주도의 열풍에 힘입어 다시 각광받기 시작했기에 이런 특수한 환경을 고려할 때 Django 기반의 TDD 능력을 향상시키는데 도움이 된다. 더불어 규모가 작은 회사의 인력 문제로 QA부서가 없거나 테스트 환경이 변변찮은 회사에서의 경험만 있는 이에게도 최소한의 커뮤니케이션 능력을 갖추는데 보탬이 될 것이다.

    • Pycharm과 그 외의 것들
      Python에 있어 Pycharm을 뛰어넘는 IDE는 아직 들어본 적이 없다. 개인적으로 PyCharm을 사용하면 할수록 편리하게 느껴지는 매력을 느끼고 있으며, 문명이 발전할수록 시간의 소중함에 대한 인식은 점차 증가하기에 최근에는 알고리즘의 성능만큼이나 개발자 생산성 측면에서의 퍼포먼스도 중요시 되어가고 있다.

      그 외에도 구글 O-Auth를 활용한 소셜 로그인 연동 기능과 HTTPS 인증서를 개인 차원에서 무료로 발급받고 웹서버와 연동하는 방법도 다루고 있다.

  • Django 본연의 목적에 대한 설명도 충실하다.
    Django 프레임워크 본연에 대한 설명도 일품이지만, Java 진영에 Spring이라는 뛰어난 프레임워크만이 가지고 있는 장점이 있듯 Django만이 가진 Python 생태계에서만 활용 가능한 장점이 소개되어 있다.

    MVC 기법과 유사한 MTV 패턴을 시작으로 템플릿, 다대다 관계의 카테고리, Tag 모델 및 페이지, 외부라이브러리 활용법, 댓글, 검색, 아바타, 대문, 자기소개 등 웹 페이지에서 개발하는 대부분의 컴포넌트 및 페이지를 하나의 블로그를 완성해가며 꼼꼼히 다룬다. 놀라운 것은 Django 파트만 발췌해도 능히 훌륭한 책인데 앞서 언급했던 장점들인 유관 Echo들을 전부 다루고 있기에 종합 선물같은 느낌을 받을 수 있다.

  • 가급적 연관된 모든 개념을 설명하고자 노력한다.
    책의 실습과정 중간에 HTML Escaping, Mixin 같은 개념들이 나오는데 사실 웹 프로젝트를 진행하는데 알아둬야 할 내용이긴 하지만 Django와 직접적인 관련이 없기에 굳이 설명하지 않는다고 해도 나무랄 독자는 적을 것이다.

    알아두면 좋아요

    그럼에도 이런 번외 개념조차 “알아두면 좋아요” 박스와 같은 별도의 구성을 통해 하나하나 짚어보고 애매한 개념을 그냥 지나가는 법이 없다. 저자의 장인정신과 가르치고자 하는 의지 그리고 꼼꼼함이 모두 녹아 있는 듯 해서 매우 만족스러웠다. 책을 쓰는 것은 보통 고된 작업이 아니므로 대부분 어느 지점에는 타협을 보게 마련일텐데 ‘네가 아무리 노력이 부족하고, 능력이 부족할지라도 반드시 알 수 밖에 없을 것이다.’라고 말하는 듯한 저자의 강한 의지가 느껴졌다.

  • 개념을 쉽게 풀이해준다.
    앞서 언급했듯 웹 개발의 A to Z를 다루기에 분량이 상당하다는 점, 배울 것이 많다는 점을 저자들도 충분히 알고 있는 듯 하다. 어려운 개념을 매우 쉽게 설명하고자 노력하는 점, 가급적 원론 보다는 실습코드와 시각화를 통해 이해를 유도하는 점, 특히 깊이있는 설명을 할 수 있음에도 실습 진행에 필요한 최소한의 개념만 언급하며 완급 조절하는 점에서 독자들을 위한 배려가 느껴졌다.

  • 저자 본인들이 겪었던 시행착오나 삽질을 그대로 녹였다.
    또 하나 상당히 마음에 들었던 점은 프로젝트 완성 목표 지점에 도착하는 것만으로도 보통 일이 아닐텐데 아래 그림처럼 가끔 일부러 실수를 유발하도록 안내한다는 점이다. 초보자들이 자주 겪는 실수나 혹은 저자 본인들이 겪었던 실수를 그대로 따라해보고 어떻게 해결해야 하는지 언급하는 구성이 종종 눈에 띈다.

    이런 설명은 단순히 실수를 방지하는 차원을 떠나 Django 프레임워크의 눈에 보이지 않는 내부 매커니즘에 대한 감을 깨닫는데 큰 도움이 된다. 실수야 반복을 통해 충분히 보완할 수 있지만 내부 매커니즘의 감을 잡는다는 것은 전문가를 위한 길이며 긴 경험 없이는 결코 축적하기 어렵기 때문에 박수 갈채를 보내고 싶다.

    삽질흔적

  • Do-it! 도서 시리즈의 최대 장점, End-to-End 구성
    요즈음 머신러닝 진영의 파이프라인 구성 트렌드는 End-to-End 구성이다. Input이 바로 Output으로 직결된다는 의미인데 그와 유사하게 Do-it!시리즈는 아무것도 모르는 독자가 전문가 수준의 퍼포먼스를 내는데 가장 빠른 지름길이라는 생각을 여러번 해왔다. 전혀 경험하지 못한 지식을 빠르게 익히고 싶을 때 나는 보통 Do-it! 시리즈 중 출간된 책이 있는지 확인하는 편이다.

    물론 Do-it! 시리즈가 초급 기술을 주로 겨냥하고 있어 아쉬운 측면도 있다. 이제 나름 업계 짬밥도 차고 실력이 늘어가니 예전만큼 Do-it! 시리즈를 접할일이 줄어들고 있기 때문이다. 하지만 적어도 웹 개발이 전무하거나 Django 등 위에서 소개한 기술 스택이 하나라도 처음인 독자가 있다면 이 책이 분명 효율적인 지름길이 될 것이다.

    표지




댓글(2) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
bjh 2022-02-22 15:17   좋아요 1 | 댓글달기 | URL
깊이 있는 설명 감사합니다

nanhmjjang 2022-05-01 19:56   좋아요 0 | URL
부족함에도 좋은 평을 해주셔서 감사합니다. :)