파이썬 기반 금융 인공지능 - 파이썬과 케라스를 활용한 금융 시계열 데이터 기반 알고리즘 트레이딩 전략
이브스 힐피쉬 지음, 김도형 옮김 / 한빛미디어 / 2022년 9월
평점 :
장바구니담기


마침 모 강의사이트에서 모모 금융데이터분석 강의를 한참 듣고 있던 중이었다. 금융이라기 보다는 정확히는 주식데이터 강의였는데, 주식 자체에 대한 정보 보다는 '데이터 분석 과정을 설명하되 데이터를 주식데이로 한다'는 측면이 더 커서 매 차수 중복되는 내용들도 많이 있었다. 그래서 혹시 이 책에서는 다른 지식과 인사이트를 주지 않을까 해서 이 책을 선택하게 되었다. 그런데 파이썬 코딩만으로 주식으로 돈을 벌 수 있다면 누가 돈을 못 벌겠으며, 진짜라면 그 비법을 왜 공개할까 싶기도 하다. 그래서 마음을 비우고 책을 펼쳤다.


옮긴이의 말을 조금 옮겨보면 "유독 금융 분야에서 머신러닝과 인공지능이 이렇다 할 뚜렷한 성과를 보이지 못하고 있는 것이 현실이다. 이는 금융 분야에 특화된 머신러닝이나 인공지능 방법론이 나오지 않았다는 점보다는, 효율적 시장 구조 등 금융 분야의 문제들이 가지고 있는 보다 근본적인 특성에 기반한다. 이 책은 금융 분야의 다양한 기반 이론과 현업 실무에 최신 머신러닝 및 인공지능 기술을 적용하는 것이 실제로 어느 정도의 가능성을 가지는지를 폭넓은 관점에서 고찰한다."고 되어 있다.


1부에서는 지도학습, 신경망, 초지능, 2부에서는 전통적이고 규범적인 금융이론, 데이터 기반 금융 등에 대한 기본적인 내용을 다루고, 3부에서는 딥러닝, 신경망, 강화학습을 적용해서 금융시장의 '통계적 비효율성'을 발견하고, 이것을 전제조건으로 4부에서 알고리즘 트레이딩을 통해 통계적 비효율성이 어떻게 활용되는지를 다루는 순서로 되어 있다. 5부에서는 금융 산업에서 인공지능이 가져올 결과와 금융적 특이점에 대해서 살펴본다. 6부에서는 파이썬 코드로 구현하는 법과 예제가 있다.


특히 '통계적 비효율성'이라는 표현이 눈에 와 닿았다. Statistical Inefficiency.

앞부분은 대충 아는 내용들이라 이 통계적 비효율성을 다루는 부분(3부)으로 가보았다. 7장에서 Dense한 신경망의 클래스의 불균형과 과적합을 막기 위한 방법, 그리고 최적화 방법을 소개한다. 과적합을 막기 위한 데이터 정규화, 드롭아웃, 규제, 배깅 과정을 코드와 함께 설명하고 있었다. 한 권의 책에서 많은 내용을 다루다 보니 간단하게 설명된 면도 없진 않다. 8장에서는 재귀 신경망 예제를 보여주는데 금융 가격 시계열, 금융 수익률 시계열 데이터에 이동 모멘텀 특징과 이동 변동성 특징이라는 '금융 특징'을 추가하는 방법을 보여준다. 9장에서는 강화학습의 기본 개념에 대해 설명하고 카트폴 문제(좌우로 움직이는 카트 위에 있는 막대기가 쓰러지지 않고 균형을 잡을 수 있도록 학습하는 문제)를 OpenAI Gym, 몬테카를로 에이전트, 신경망 에이전트, DQL 에이전트를 통해 해결하는 방법들을 코드와 함께 보여준다. 그리고 이것을 금융 분야에 초점을 맞춰 구현해 본다. 그런데 여기까지 따라왔지만 나는 '통계적 비효율성'이라는 용어가 의미하는 것이 무엇인지 정확히 찾아내지는 못했다. 아직 공부해야 하는 것이 많구나. 기초적인 용어조차도 검색을 해야하다니...


전체 코드는 https://aiif.pqp.io 에서 쉽게 실행해볼 수 있고, 상업화나 재배포는 허락을 받아야 하지만 프로그램에 포함시키거나 문서에 넣는 것은 상관이 없다고 한다. 파라미터에 대한 설명이나 앞의 코드에서 추가해 실행한 부분들에 대해서는 번호를 달아 설명을 붙여놨기 때문에 이해하기가 따라가기가 쉬웠다.


5부의 내용이 나에게 특히 도움이 되었는데, 금융에 대해서는 잘 모르는 컴공쟁이라서 타인의 관점으로 분석을 하거나 내가 미처 생각할 수 없었던 부분에 대해서 의견을 내주는 것은 언제든지 반갑다. 반대로 금융 쪽을 잘 알지만 프로그래밍을 모르는 분들에게 오히려 더 도움이 될 수 있는 책일 수도 있겠다는 생각이 들었다.


한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
케라스로 구현하는 딥러닝 - 예제를 따라 하며 배우는 딥러닝 인공신경망
김성진 지음 / 한빛미디어 / 2022년 4월
평점 :
장바구니담기


사실 그동안 케라스+딥러닝 조합의 책들을 많이 보았다.


이 책에서는 ANN, DNN, CNN, RNN, AE, GAN, UNET, RL, QAI를 구현하는 방법을 다루고 있어서 목차에서부터 눈길을 끌었다. 입문자부터 볼 수 있는 책들에서 전반부(기본편)의 내용을 다룬 것은 많이 접했지만 후반부(심화편) 내용은 보지 못했기 때문이다. 그래서 강화학습(RL)과 QAI에 집중해서 훑어보았다.


각 챕터마나  먼저 원리를 설명하고, 필요한 개념을 설명한다. 실제 구현에서도 각 단계에 따라 코드와 설명이 있고, 마지막에 전체 코드를 훑어보며 정리할 수 있게 되어있다. 그리고 '마치며'를 통해 학습한 내용을 간략하게 정리한다. 코드와 설명이 함께 제공되고 있기 때문에 저자의 깃허브를 방문하면 더 도움이 된다. 친절하게 학습하는 방법까지 설명해두었다. 코드에서 이해가지 않는 부분이 있으면 설명을 찾아갈 수 있게끔 표시해두었다. 이런 세심함이라니....


8장까지는 차근차근 따라가면 딥러닝 입문자라고 하더라도 무리없이 따라갈 수 있는 내용으로 보인다. 책의 크기는 크지 않지만 담을 내용은 다 담았다는 생각이다. 9장에서는 활용 시 발생할 수 있는 문제를 효율적으로 해결할 수 있는 방법을 제시하고 있다. 이미지 데이터 증강하기, 미리 학습한 모델 사용하기, 간단한 신규 계층 만들기, 학습 가능한 신규 계층 만들기, 케라스의 확장된 기능 이용하기가 그것이다. 여기에 사용된 것처럼 클래스를 상속한다든가 백엔드(backend) 함수를 이용하는 방법을 직접 구현해본 적은 없어서 신선했다. 딥러닝 보다는 케라스 자체에 대해 좀 더 파봐야 겠다는 생각이 들었다. 10장 강화학습의 Gym 같은 경우에도 만들어진 코드를 가져다가 실행해보고 원리만 살짝 살펴본 적은 있는데 친절한 설명이 곁들여져 있어서 그 의미를 더 잘 알 수 있었다. 11장 양자인공지능은 완전 처음 접하는 내용이었지만 수식과 그림으로 잘 설명되어 있다.


다른 책이나 강의 등을 통해 어느 정도 해본 사람도 책의 첫장부터 차근차근 따라가며 정리해보기에 좋은 책이다. 혹시라도 절판된 <코딩셰프의 3분 딥러닝, 케라스맛> 책을 갖고 계신 분이라면 10장, 11장 위주로 보면 되겠다. 그리고 개념 자체를 처음 접하는 독자라면 원리 설명 부분에서 살짝 갈증을 느낄 수도 있을 것 같다. 작은 책 안에 방대한 양을 담은 책이므로, 세부적인 궁금증은 추가 검색으로 갈증을 해소하시기 바란다.


한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
이것이 자료구조+알고리즘이다 with C 언어 - 문제 해결 능력을 키워주는 자료구조+알고리즘 입문서 이것이 시리즈
박상현 지음 / 한빛미디어 / 2022년 8월
평점 :
장바구니담기


C언어를 가르치고 있는데, 2학기에는 좀 더 다양한 예제를 활용해 보고자 해서 이 책을 선택했다. 기초적인 내용들을 배우고 포인터를 본격적으로 활용하고자 할 때 리스트, 스택, 큐와 같은 자료구조를 구현해보지 않을 수는 없으므로. 그리고 간단한 정렬과 탐색도 연습한다. 물론 자료구조, 알고리즘 과목이 따로 있다. 하지만 처음 C언어를 배우면서도 이런 예제 위주로 연습을 하다 보면 나중에 해당 과목을 수강할 때 도움이 많이 되리라 생각한다. 대부분의 독자들은 아마 자료구조와 알고리즘 두 마리 토끼를 잡기 위해 이 책을 선택하겠지만, 나의 경우에는 C언어의 입장에서 이 책을 살펴보았다.


보통 책이 Chapter 1부터 시작하는데 이 책에는 Chapter 0이 있다. <알아두면 쓸 데 있는 자료구조와 알고리즘>이라는 제목으 0챕터에서는 자료구조와 알고리즘의 정이, 그리고 C 언어로 메모리를 다루는 방법에 대해서 설명을 하고 있다. 오리엔테이션의 느낌으로. C언어 문법에 익숙하지 않은 사람도 가볍게 구조체와 포인터, 메모리할당과 해제에 대해 연습해 볼 수 있다.


1장부터 4장까지는 자료구조 파트로 리스트, 스택, 큐, 트리 구조를 다루고 있고, 5장부터 10장까지는 각종 정렬 알고리즘, 탐색 알고리즘, 우선순위 큐와 힙, 해시 테이블, 그래프 그리고 문자열 탐색에 대해 다룬다. 마지막 파트인 11장 부터 15장까지에서는 알고리즘 설계 기법들을 설명하고 있는데, 알고리즘의 성능 분석, 분할 정복, 동적계획법, 탐욕 알고리즘, 백트레킹을 소개하고 있다.


나는 특히 연습문제로 어떤 것들이 주어졌는지에 관심이 많은데, 개념을 설명하면서도 예제 코드를 제시하고 있지만, 이렇게 연습문제를 통해서 개념을 더 다질 수 있다. 개념을 잘 이해하고 있는지 묻는 문제와 주어진 코드를 수정/개선하는 문제들로 이루어져 있다.


레드 블랙 트리에 삼촌 노드, 할아버지 노드라는 표현을 사용한 것도 재밌지만^^ 노드 삽입/삭제도 코드로 구현해 볼 수 있게 설명이 자세히 되어 있다. 레드블랙 특성에 대해서만 설명하고 넘어가는 책도 많이 보았는데.


동적계획법 장에서는 분할정복 기법이나 재귀를 이용하는 것과는 어떻게 다른지를 비교해서 설명하고 있다. 단지 이미 구해놓은 값을 활용한다는 말에만 집중해서 "재귀가 동적계획법과 같은 것 아닌가요?" 하는 학생들도 많이 있는데 코드로 차이를 설명해 준다.


이 책은 C언어 기초문법을 배운 후 좀 더 연습해 보고 싶은 학생, 자료구조와 알고리즘을 본격적으로 배우려고 하는 학생에게 추천한다. 한 권의 책에 자료구조와 알고리즘을 모두 담고 있기 때문에 이 한 권으로는 만족하지 못할 수도 있다. 하지만 시작하는 책으로는 참 좋을 것 같다.


한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
비즈니스 데이터 과학 - 비즈니스 의사결정을 위한 통계학, 경제학, 인공지능의 만남
맷 태디 지음, 이준용 옮김 / 한빛미디어 / 2022년 6월
평점 :
장바구니담기


이달에 접하게 된 책은 <비즈니스 데이터 과학>이다. 한빛 덕분에 다양한 책들을 보게 된다.


우선 시작 부분(14쪽)에서 표기에 대한 안내를 표로 깔끔하게 정리해줘서 책을 읽는데 도움이 되었다.



회귀, 분류, 군집화, PCA, 텍스트 데이터 처리, 트리기반 알고리즘 그리고 마지막으로 인공지능에 대한 기본적인 설명까지 코드와 수식, 이미지를 적절히 넣어서 잘 보여주고 있다. 물론 R을 사용해서 파이썬 기반인 나에게 당혹감을 선물한 것은 덤....이지만, "이 책은 R 사용법을 배우기 위한 책이 아니다....이 책은 데이터 과학을 수행하는 방법에 관한 책이다" 라는 말에 힘을 얻고 읽어 보았다.


1장의 불확실성, 5장의 실험, 6장의 제어라는 제목이 좀 특이하게 느껴져서 그 부분을 먼저 살펴보았다. (나머지 제목들은 너무나 익숙한 제목들이다)


아, 통계에 대한 기본 지식이 없으면 1장부터 읽기가 버겁다^^(그래서 2.4부터 읽고 다시 돌아오기를 권하기도 한다) 먼저 빈도주의 관점에서 불확실성에 중점을 두고 부트스트랩을 이용한 리샘플링, 가설 검정, 거짓 발견 비율(FDR, false discovery rate) 의 조절에 대해 설명해주고, 다음으로는 빈도주의에 비해서는 비즈니스 데이터 과학에서 더 큰 역할을 하고 있으며, 반복적인 시행 보다는 주관적인 믿음을 바탕으로 한 베이지안 추론에 대해서 설명한다.


앞장에서 설명한 회귀, 분류의 경우 과거 데이터에서 패턴을 발견해 내고 있고, 이런 패턴은 미래가 대부분 과거와 비슷하다는 가정 하에서 미래를 예측하는 데 유용하게 사용된다. 그런데 비즈니스나 경제 시스템에서는 현재의 행동이 미래를 바꾸기 때문에 과거와는 다른 미래를 예측할 수 있어야 한다며 [5장 실험]을 시작한다. 반사실적인 예측, 즉 '만일 ~라면'이라는 질문에 대해 대답하길 원한다. 가격을 P0 대신 P1로 변경하면 매출이 어떻게 달라질까에 대해 답하는 문제이다. 이 방법으로 무작위 대조 시험에 대해 설명한다. 다음으로는 두 가지 유사한 상황에 대한 시나리오를 만들어 실험을 한다. "비록 다른 장소지만 두 장소의 처리 전 차이를 모델링 할 수 있드면 처리 후 변화에 대한 인과적 해석을 할 수 있지 않을까?" 하는 가정에서 만든 시나리오(이중차분 분석), 사회보장제도 혜택을 아쉽게 놓치는 사람(처리군)과 간신히 자격이 되어서 혜택을 보는 사람(대조군)의 두 그룹을 만들어 비교하는 시나리오(회귀불연속성 추정)이다. 그리고 마지막으로 '도구 변수'의 개념으로 설명한다.


[6장 제어] 안타깝게도 현실에서는 '실험' 없이 과거 데이터를 기반으로 향후 활동에 대해 결정을 내려야만 한다. 그래서 처리를 설정하는 실험을 하는 대신 과거에 무슨 일이 있었는지를 '관찰'한다. 이 장에서는 어느 정도 믿을 수 있다고 알려진 방법과 원칙, 머신러닝 도구 등을 사용해서 분석하는 방법을 다루고 있다. 조건부 무시가능성과 선형처리 효과, 고차원 교란 조정, 표본 분할과 직교 머신러닝, 이종 처리 효과, 합성 제어 등에 꽤 많은 분량을 할애한다. 이 부분은 사실 좀 더 시간을 두고 다시 읽어봐야 할 것 같다.


마지막으로 한 가지 웃음 포인트는 '인수분해'라고 하는 아련한 단어였다. 얼마만에 들어보는 단어인지^^ 중고등학교 수학 시간에 거의 기계적으로 인수분해를 했었는데, 7장을 시작하며 써있었던 "이 장에서는 각 x에 대한 기댓값을 적은 수의 인수의 합으로 나누는 다양한 인수분해 방법을 살펴본다"는 문구를 읽는 순간 머릿속에 어떤 그림이 그려지면서 머리가 단순해지는 신기한 기분을 느꼈다.

통계에 대한 지식이 없거나 통계용어에 익숙하지 않은 사람들은 [10장 인공지능]을 먼저 읽고 앞부분을 봐도 좋을 것 같다.




댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
구글 BERT의 정석 - 인공지능, 자연어 처리를 위한 BERT의 모든 것
수다르산 라비찬디란 지음, 전희원.정승환.김형준 옮김 / 한빛미디어 / 2021년 11월
평점 :
절판


이달에 받은 책은 <구글 BERT의 정석>

마침 자연어처리, 고급자연어처리, 정보검색 등 자연어처리에 관한 과목들을 공부하고 있어서 꼭 읽어보고 싶었다. 


트랜스포머에 관한 이야기가 빠질 수는 없지. 트랜스포머에서 인코더 부분만 가져온 것이 BERT(Bidirectional Encoder Representations from Transformers)이기 때문이다. 트랜스포머의 인코더 부분, 디코더 부분 설명에 이어 BERT 이해하기, 활용하기 부분이 나오고 BERT에서 파생된 모델인 ALBERT, RoBERTs, ELECTRA, SpanBERT가 소개된다. 여기까지가 책의 절반을 차지한다.

'지식 증류'라는 표현은 좀 낯선데 Knowledge Distillation은 낯익다. (많이 쓰는 표현이기는 한데 꼭 이렇게 번역해서 써야만 하는 걸까?) 여기에서 Teacher와 Student 개념이 나온다.


마지막 Part 3은 BERT를 적용하는 단계로서 텍스트 요약, 다국어, 언어별 BERT, sentence-BERT, domain-BERT가 소개된다. 한국어 언어 모델인 KoBERT, KoGPT2, KoBART에 대한 이야기도 나오는데 내가 참고하고 싶었던 부분이 바로 이 부분이라 반가웠다. 비록 소스코드가 제공되기는 하지만 각 내용들에 대한 설명은 반 페이지~한 페이지 정도라는 것은 아쉬움이 든다. 

결과적으로 다루고 있는 영역은 굉장히 다양한데 실제 깊이 알고 싶었던 내용에 대한 설명은 살짝 부족한 느낌이....목차를 보고 기대를 많이 했었는데.^^

자연어처리, 트랜스포머, BERT에 대해 넓게 훑고 싶어하는 사람에게 권한다.  흐름을 이해하고 개념을 잡는 데에는 도움이 될 것이다.



​한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


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