2022 데이터에듀 빅데이터 분석기사 필기
윤종식.최유정.한정희 지음 / 데이터에듀 / 2022년 3월
평점 :
구판절판


빅데이터분석기사 필기 대비 수험서로 973개 문제를 통한 합격 적합성을 높일 수 있음은 물론 ADP와의 연계 학습이 가능한 현 시점 가장 추천하고 싶은 교재 중 하나다.

그동안 10권 정도의 빅데이터분석기사 필기 도서를 읽고 블로그에 리뷰를 올렸다. 반가운 것은 세월이 흐르면서 점점 좋은 도서들이 나오기 시작했다는 것이다. 수험생 입장에서는 반가운 일이다.

결론부터 말하자면 현 시점 가장 추천하고 싶은 교재는 2개의 출판사인데 그 중 하나가 바로 본 도서이다.

시대고시 수험서의 엄청난 양의 문제, 이기적 수험서의 통계 기법 파트의 다양한 계산과 예제, 이지패스 수험서의 깔끔한 도식화와 가독성 높은 해설, 배움 출판사의 깔끔한 정리, 와이즈인컴퍼니의 실기와의 연계성, 예문사의 꼼꼼한 정리 및 뛰어난 기출 복원력 등 각 수험서의 장점이 모두 녹아있는 책이다.

ADP 시험을 준비하진 않았지만 예전부터 주위에서 ADP 도서로 가장 유명한 출판사라는 말을 듣긴 했는데 역시 ADP 수험서를 만들며 다져진 탄탄한 내공이 본 수험서에도 녹아있는 느낌이 들었다.

ADP 수험서를 한 번 겨쳐서인지 문제의 양이 상당하다. 게다가 문제의 질도 뛰어나다. 긴 세월 가다듬어진 탄탄한 문제은행에서 뽑아낸 우수한 문제에 빅데이터분석기사의 경향을 잘 입힌 느낌이다.

가장 뛰어난 장점은 역시 문제의 양과 질이다. 책 겉표지에 소개되기론 972문제가 수록되어 있다고 한다. 가히 문제만 잘 풀어도 수험 적합성을 쉽게 올릴 수 있을 것 같다.

특히 기출문제의 복원력에는 감탄을 금치 못했다. 거의 완벽하다. 2회 필기시험을 합격하고 시간이 꽤 지났음에도 거의 모든 내용이 떠오를 정도로 익숙한 문제가 많다. 그동안 읽은 10권의 빅분기 수험서 중 가장 높은 복원력이라 확신한다.

특히 아래 문제는 어떻게 복원한건지 정말 의문이다.기출

이미 문제를 풀어본 입장에서 추천하고 싶은 학습법으로 문제를 먼저 풀어보라고 권하고 싶다. 이어서 문제를 먼저 풀고 해설을 읽고 그래도 이해가 안가면 이론 부분을 읽고 이론 부분도 다 읽었으면 책에 등장하는 R코드로 실습을 해본다거나 부록으로 제공되는 실습코드로 실제 눈으로 개념을 확인할 수 있다면 이보다 좋은 학습법도 없겠다라는 생각이 들었다.

합격한 이후로는 최근 경향은 잘 모르겠지만 빅데이터 관련 언어로 주로 Python과 R이 사용되기에 빅분기 시험에서 특정 언어를 선호하는 문제는 나오지 않는 것으로 알고 있다.

그럼에도 아래 그림과 같이 R언어와 관련된 내용이 수록되곤 한다.R

R이 최소로 수록되어 있어 시험에 적합하게 구성되어 있으면서도 R이 가지는 장점을 십분 활용하여 개념을 빠르게 이해할 수록 도와주는 것이 장점이다. 이는 추후 실기에도 많은 도움이 될 것 같다는 생각이 들었고 나아가 실무에서 꽤 도움이 되는 내용도 많다. Reshape만큼 초보 실무 시절 햇갈리는 개념도 흔치 않기 때문이다.

또 경향을 반영한 구성도 마음에 들었다. 예를 들면 1과목 3장 데이터 수집 및 저장 계획 파트의 경우 문제가 별로 출제되지 않는다. 이 시험 성격이 통계기사에 가깝지 빅데이터랑은 거리가 좀 멀다.

게다가 하둡 등의 제품군이 소개되곤 하는데 1년만 지나도 제품이 우르르 쏟아지는 현 상황에서 제품과 관련된 문제를 출제하기도 쉽지 않은 일이다. 문제 출제 가능성이 낮아 보인다. 그래서인지 이 책도 설명을 최소화하고 있는데 경향에 입각한 구성이 마음에 들었다.

그 외에도 저자들의 내공이 든든한 부분이 많다. 축적된 실무와 경험이 어느정도인지 가늠할 만한 뛰어난 수준을 자랑하는 설명이 자주 등장한다. 예를 들면 아래 계층적 군집분석에 관한 내용은 실제자료와 시각화를 통해 확실한 이해를 돕는데 이런 구성은 다른 서적에서는 보기 힘든 부분이다.최단연결법

다항 분포에 관한 설명 역시 시각화 설명이 마음에 든다. 이어 관련된 예제도 등장한다. 확률분포만큼 이 수험서에서 까다로운 내용도 많지 않은데 이런 고난이도 부분을 확실하게 이해하고 넘어갈 수 있도록 정면돌파한 구성에서 저자들의 진정성이 느껴졌다.다항분포

그 외 시각적으로 이해를 돕는 도식이나 깔끔한 정리도 마음에 들었다.다항분포

너무 칭찬 일색이었으니 반대로 아쉬운 부분도 몇가지 언급하려 한다.

첫번째는 딥러닝 파트의 설명이 약간 부족하다. 특히 CNN 모델의 Feature Map 크기에 대한 공식은 패딩이나 입력 크기를 정확히 반영하고 있지 않은 채 축약된 공식만 등장하여 난이도 있는 문제에 적합하지 않다고 생각했다.

두번째는 시각화 부분이다. 이건 다른 수험서 모두 공통적으로 개선이 되지 않는 부분인데 중복된 유형의 시각화 도구에 대한 깔끔한 설명이 부족하다는 점이다.

예를 들면 히트맵의 경우 주로 비교 시각화 유형으로 분류되지만 특정한 경우 관계 시각화 유형으로 분류될 수 있고, 버블차트는 관계 시각화로 주로 사용되지만 공간 시각화로도 활용되기도 한다.

하지만 모든 수험서들은 관계 시각화 유형을 먼저 소개한 후 버블차트나 히트맵을 소개하는 형식이다. 반대로 히트맵 그림이 등장한 후 어떤 유형인지 고르라는 문제가 출제될 경우 한가지 유형만 알고 있는 수험생 입장에선 당황할 수 밖에 없다.

이 정도의 단점은 앞서 언급한 장점에 비하면 극히 미약한 것들인지라 무시할 정도의 아쉬움이다.

한편 이 책은 구성과 서비스도 알차다. 의외로 수험서 첫장에 시험에 대한 소개가 등장하지 않는 수험서들이 많아 황당했던 적이 있는데 이런 디테일한 부분도 수험생을 잘 고려하고 있다.

뿐만 아니라 동영상 풀이 영상이 무료로 제공된다는 점이 또 다른 장점이다. 어떤 수험서는 유료로 동영상을 제공했는데 수험생들이 동영상 품질이 너무 좋지 않다고 투덜거리는 게시글도 자주 보았는데 이 책의 동영상은 무료인데다 들어보니 내용도 상당히 괜찮았다.

또 유튜브나 카톡 채널로 수험생과의 상담이 이뤄진다는 점이나 R 무료 실습 코드가 제공된다는 점은 확실히 ADP 시절부터 다져진 내공의 축적력을 보여주는 흔적이라는 생각이 들었다.

아무튼 본 도서로 빅분기 시험을 준비한다면 후회없는 선택이 될 것이라는 생각이 들어 추천하며 리뷰를 마친다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
단단한 심층강화학습 - 심층강화학습 기본 개념을 제대로 정리한 인공지능 교과서 제이펍의 인공지능 시리즈 (I♥A.I.) 37
로라 그레서.와 룬 켕 지음, 김성우 옮김 / 제이펍 / 2022년 2월
평점 :
장바구니담기


DQN, A2C, PPO 등의 알고리즘을 다루는 심층강화학습 교과서로 입체적인 구성이 특징이며 병렬화, 환경 설계 등 엔지니어링에 필요한 실전 내용을 포함하는 것이 특징이다.

강화학습은 순차적인 의사결정 문제를 해결하는 방법으로 에이전트가 환경안에서 최적의 행동을 취하는 것을 목표로 삼는다.

즉, 에이전트와 환경이 핵심 요소라고 볼 수 있다. 에이전트가 취한 행동이 환경에 전달되면 그에 따른 보상과 변화된 환경이 에이전트에 전달되는 것이 기본 흐름이다.제어루프

책에서는 직관적인 예로 카트폴 예제에 비유하고 있는데 여기서 에이전트는 카트를 제어하는 주체이며 그 외의 것들은 환경이라고 보면 된다.

상태는 카트의 위치 및 속도, 폴의 각도, 각속도 등 4개 요소가 해당되며 행동은 왼쪽 혹은 오른쪽으로 움직이는 2가지 요소이다. 보상은 넘어지지 않고 곧게 서 있는 모든 시간에서 +1점을 획득한다.

그 외 목적은 200단계의 시간 단계동안 폴이 곧게 서있도록 유지하는 것이고, 종료 조건으로는 폴이 떨어지거나 카트가 스크린 밖으로 벗어나거나 최종 시간 단계인 200에 도달했을 때 발생하는 예제이다.

사람도 손바닥 위에 깃대를 세워놓고 떨어지지 않기 위한 노력을 기울이다보면 깃대의 무게 중심이 어디인지, 얼마나 빨리 기울어지는지, 손은 얼마나 빨리 움직여야 하는지 판단하게 되며 연습이 진행될수록 보다 오랜시간 깃대를 곧게 세울 수 있음을 알 수 있으니 카트폴은 현실과 강화학습을 연결하여 바라보기에 가장 좋은 예제 중 하나일 것이다.

조금 더 개념을 확장하자면 정책은 행동을 도출하는 함수이며, 목적은 에이전트가 받는 보상의 총합, 특정 시간대에 주고 받는 “상태, 행동, 보상” 한 쌍을 경험, 경험의 연속을 궤적, 시간 t=0에서 종료까지의 구간을 에피소드라 부른다.

이때 환경이 다음 상태로 넘어가는 전이함수를 마르코프 결정 과정(MDP)으로 표현하는 것이 중요하다. 환경과 행동을 시간=0지점부터 직전 시간까지 모두 전달받아 다음 상태를 추측하는 것은 비현실적이기에 현재 상태 t시점에서 t+1시점의 상태를 파악할 수 있도록 MDP로의 표현이 필요하다.

책에서는 이를 피보나치 수열의 점화식 S(t+1) = S(t) + S(t-1)을 예로 들어 직관적으로 설명하고 있다. 저자들이 서문에서 책, 논문, 온라인 강의까지 모두 섭렵 후 본 도서에 등장하는 SLM Lab 라이브러리를 만들었다고 기술했는데 이를 방증하듯 직관적인 설명이 책 곳곳에 등장하고 있어 이해에 큰 도움이 되었다.

이 단계에서부터 슬슬 수식이 등장하기 시작한다. 처음 강화학습을 접할 때만 해도 수식이 너무 많아 지에 겁먹곤 했는데 다른 것은 몰라도 강화학습에는 수식이 필수적이다.

심층 강화학습 알고리즘 중 모델 기반 알고리즘에서 사용하는 몬테카를로 트리 탐색(MCTS)과 같이 모든 경우의 수를 전부 파악하고 있다면 구체적인 예제로 이해가 가능하겠지만 문제는 경우의 수가 무한에 가깝다는 것이다.

알파고조차 모든 경우의 수를 다 알고 바둑을 두지 못했던 것처럼 인간의 기억 용량으로는 어림도 없는 접근이다. 위에서 설명한 전이함수를 MDP로 변환하듯 복잡한 수식을 단순화하는 과정이 필요하며 모든 경우의 수를 t하나로 한정지어 접근하다보면 추후에는 오히려 수식이 있어 정말 다행이라는 생각이 들 것이다.

수식이 있음으로써 무한의 경우의 수 속에서 원하는 시점만을 뽑아 추상적인 개념으로 접근해 볼 수 있게 되는 것이다. 중간 중간 학교에서 배웠던 미지수 x의 정의에서 부터 점화식 같은 것들이 왜 필요했는지, 어디에 쓰이는지 느껴나가는 재미도 있다.

어쨌든 적어도 강화학습 만큼은 수학을 반갑게 맞이했으면 좋겠다. 위에서 이 책이 입체적이라는 설명을 했다. 입체적인 구성 덕분에 수학을 너무 어렵게 생각하지 않아도 될 것 같다. 직관적인 설명과 적시적인 예제가 서술되어 있음은 물론 도식이 자주 등장하여 이해가 쉬웠다. 아울러 장대하게 설명한 부분은 깔끔하게 수도 코드로 정리해준다.수도코드

이어서 Python코드로 이를 구현한다. 이렇게 다각도로 내용을 접하다보니 왠만한 개념은 대부분 이해할 수 있었다.Python

나아가 저자들이 직접 개발한 SLM 예제로 실험을 진행할 수 있도록 구성되어 있어 눈으로 성능을 확인할 수 있다는 장점도 있다.SLM

설치도 비교적 간단한 편인데 먼저 Anaconda 기반 환경은 구성해둬야 실습을 진행할 수 있다. 이 부분에 대한 상세한 설명이 누락된 것은 조금 아쉬운 부분이지만 이 책의 난이도를 생각할 때 이 부분에서 막힐 독자는 거의 없을거라 생각한다.환경설정

다시 본론으로 돌아가 에이전트가 무엇을 학습해야 하는지 살펴볼 필요가 있다. 정책, 가치함수, 모델의 확률 분포 등을 학습해야 하는데 우선 정책은 상태가 주어지면 계산이 가능하다.

가치 함수의 경우 행동을 취함으로써 얻게되는 이득의 기대값이 포함된 Q함수와 정책에 따라 결정되는 V함수가 존재한다. 이러한 부분은 뒤에 등장하게 될 다양한 알고리즘의 특성 간 차이가 되기도 한다.알고리즘

이를 정리하면 아래 그림과 같다. 가치, 정책, 모델 중 어느 것을 기반으로 하고 있는지 또 이들을 어떻게 결합하여 활용할 것인지가 이 책이 말하는 핵심 내용들의 개요가 되겠다.요약

강화학습의 내용은 방대하기에 리뷰로는 일부도 정리하기 어렵다. 하지만 DQN, A2C, PPO 등 각 장의 알고리즘마다 직관적인 설명과 입체적인 구성이 장점이기에 이해하는데 많은 도움이 된다는 점을 강조하고 싶다.

책의 후반부로 넘어가면 실전에 적용하기 위한 기법들도 풍부하게 등장한다. 확실히 배운 것에 그치지 않고 SLM 라이브러리를 개발한 저자들의 실전 내공이 묻어나는 파트이며 전반부에서 쉽게 배운 것들을 실전에서 구현하는데 어떤 부분이 필요한지 잡아주고 있어 매우 효율적인 구성이라는 생각이 들었다.

동기 및 비동기에 대한 병렬화, 디버깅, 하이퍼파라미터, SLM Lab의 구성, 하드웨어, 환경 설계(상태, 행동, 보상, 전이 함수 등)에 대한 내용을 주로 담고 있다.

말미에는 강화학습의 타임라인을 요약하고 있어 저자들이 집필하는 과정에서 관련 내용들을 집대성하기 위해 얼마나 꼼꼼하게 임했는지 느낄 수 있었다. 예전에 TRPO가 이해되지 않아 끙끙댄 적이 있었는데 그 이후의 세월동안 강화학습이 이렇게나 빠르게 발전했구나라는 생각을 했다.

더불어 참고문헌에는 유명한 주옥같은 논문들이 가득들어 있어 초심자가 학습하기에 좋고 그 외 실전에서 눈으로 보고 이해하는데 도움이 될 예제들도 소개되어 있어 유익했다.

결론을 내리자면 심층강화학습의 깊은 난이도를 놓치지 않으면서도 비교적 적은 지면을 할애하였다는 점이 놀랍다. 이렇게 압축 시키는 능력은 그간 저자들이 학습하고 노력하며 지름길을 찾아 직관을 전달하기 위한 노력이 아니었을까 싶다.

이 책의 시리즈인 단단한 시리즈의 책들이 참 양서라는 생각이 든다. 첫번째 머신러닝의 경우 기저 필요 지식을 깊이있게 학습할 수 있어 극찬할만한 도서였다.

두 번째 도서인 강화학습은 내용은 알찼으나 전달력이 조금 부족하다는 생각이 들었는데 이번 세번째 심층강화학습 편은 전달력 또한 많이 향상되어 더욱 즐겁게 읽을 수 있었다.

이번에는 두번째 편과 달리 심층학습이 결합된 형태로 초점이 맞춰져 있어 딥러닝을 활용한다. 덕분에 함수 근사나 최적화에 있어 보다 좋은 성능의 결과물을 얻을 수 있다.

알파고의 내부 원리가 궁금했거나 강화학습에 관심있는 독자라면 이 책을 제일 먼저 접하는 것도 나쁘지 않을 것 같다. 생각보다 깊이 있는 내용을 입문서 수준의 난이도로 풀어낸 구성이 일품이다.




댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
저는 기업분석이 처음인데요 - 꼼꼼한 생초보의 기업분석 입문기, 2022년 개정판 처음인데요 시리즈 (경제)
강병욱 지음 / 한빛비즈 / 2022년 2월
평점 :
장바구니담기


경제, 산업 등 거시적 분석부터 재무제표, 핵심지표 분석에 이르기까지 애널리스트 수준으로 가치있는 기업을 분석하기 위한 책으로 입체적이고 실전적인 구성이 특징이다.

투자의 세계에 입문한지는 10년이 넘었지만 아직도 기업분석은 쉽지 않은 것 같다. 정량적 분석으로 들어가기 시작하면 재무제표는 물론이고 까다로운 공식이나 지표를 익혀야 하는데 배워야 할 분량이 경제학과 전공 수준을 넘어서는 것 같다.

정성적 분석도 마찬가지이다. 쉽게 계량화하기가 어려워 주관적인 입장이 개입되며 이는 투자 손실의 위험을 높히곤 한다. 뿐만 아니라 갑작스런 공시에 살아있는 것 처럼 요동치는 주가는 성장기의 아이를 돌보듯 꾸준히 지켜봐야할 요소이기도 하다.

그래도 10년의 세월을 거쳐서 개인적으로 커뮤니티나 어깨너머로 상당한 지식을 습득했다 자부하는데 그간 쌓아온 지식이 이 책 1권만도 못한 것 같아 씁쓸하면서도 반가운 마음이다.

특히 이 책의 특징은 위에서 언급한 내용들 대다수 상황에 잘 대처할 수 있게 입체적으로 구성되어 있다는 점이다. 입체적인 구성이 어떤 것인지 하나씩 발췌하여 예를 들어 보겠다.

이중에서도 가장 강조하고 싶은 것은 실전에 적용가능한 구성이다. HTS에는 보물과 같은 자원이 많다. 나도 처음엔 특정 주식에 대한 매도 매수 추천을 담은 기업의 주관적 광고 정보인줄 알고 사용을 기피했는데 제대로 알고나니 쓸만한 정보가 넘친다는 사실을 알게 된 이후 HTS 없이는 투자가 불가능할 정도에 이르렀다.

예를 들어 아래 그림이 한 예이다. 유동비율 200% 이상, 부채비율 200% 이하, PER 15배 이하, PBR 1.5배 이하인 종목을 HTS없이 정보를 구하고 계산한다고 가정하면 아찔하다.HTS

반면 HTS를 활용하면 이런 귀한 정보를 실시간으로 정확하게 분석해 볼 수 있다. 좌측 트리 메뉴에는 금융 전문가들이 만들어 온 유용한 지표가 가득하다. 수식이야 그렇다치고 심지어 차트 모양에 대한 검색 조건도 있다.

좌측의 지표를 우측 상단으로 끌고 와 원하는 조건으로 설정 후 검색하면 우측 하단과 같은 결과가 나온다. 이론을 배우는 것에 그치지 않고 HTS를 활용한 실전 분석 적용을 가능하게 하는 것이 이 책의 가장 큰 장점이다.

하나의 예만 들었지만 책의 1/3 정도가 HTS 실전 적용에 관련된다고 할 수 있을 정도로 상당히 많은 페이지에 실전적인 적용법을 할애하고 있어 개인적으로 마음에 들었다.

두번째 입체적인 구성으로 알찬 예제를 들고 싶다. 아래 그림이 한 예인데 경제적 부가가치 즉, EVA를 산출하는 방법이 등장한다. EVA는 나도 비교적 최근에 알게 된 지표인지라 대충 투하자본수익률과 가중평균자본비용의 차이 정도라는 것만 알고 있었는데 이 책을 통해 명확한 개념을 잡을 수 있었다.예제

그냥 개념 설명한 부분만 살펴봐도 이해하기 쉽게 잘 설명되어 있는데 한 발 더 나아가 위 예제가 등장한다. 구체적으로 수식이 어떻고 그 수식에 직접 값을 대입해 계산을 시도하면 자신감도 늘고 무엇보다 확실한 개념 습득이 가능해진다.

이러한 예제들이 각 장 말미마다 소개되고 있어 풍부하다. 실제 내 상황이라는 가정하에 이루어지는 문답법이기에 쏙쏙 잘 이해됨은 물론 한 번 풀고나면 기억에 오래 남는 장점인 셈이다.

세번째 구성은 각장 말미에 등장하는 인사이트들을 정리한 분석 비법 배우기 코너이다. 꽤 방대한 분량의 책이기에 하나의 챕터를 읽고 나면 기억이 흐려지는 경우가 생기는데 이 코너에 도달하면 다른 시각에서 배운 것들을 복습하는 효과가 생겨 기억에 오래 남음은 물론 다른 전문가들의 관점에서 비평적인 자세로 내용을 되새길 수 있다는 장점이 있다.분석비법

위 그림의 예와 같이 벤저민 그레이엄의 투자 철학과 실전적인 종목 선택 기준이 내 판단과 얼마나 상이한지 그렇다면 누가 옳은지 등의 비평적인 사고하에서 지식을 습득 가능하다. 주식은 학문과는 다르다. 사고와 판단 없이 지식만 정리하는 형태로는 실전에서 승리하기 어려운데 지식만으로 얻을 수 없는 이런 비평적인 사고방식을 키울 수 있다는 점이 또 하나의 장점이다.

마지막으로 공시 읽기 핵심 키워드라는 책 말미의 부록을 소개하고 싶다. 기업분석이 장기적 관점에서 이루어진다면 공시는 촉각을 다툴 일이 많은 정보다.공시

개별주 투자를 진행하다보면 갑작스런 유상증자로 엄청난 손실이 생기는 경우도 있고 영업 실적에 대한 공시 또한 주가를 변동시키는 요인이 되기도 한다. 어떤 거물이 주식을 들고 있는지 판단이 용이해지며 또 다른 투자 유치 건이 있는지 확인할 수도 있다.

이는 마치 아기와도 같다. 종목을 한 번 선정해도 쉽게 방치해서는 안된다. 철저한 분석과 믿음으로 올라탄 주식이겠지만 그럼에도 공시 정도는 나날이 확인하며 동태도 살피고 대응할 수 있는 전략을 구비하는 것이 좋다.

책을 모두 읽고 공시에 대한 언급이 없어 찝찝한 기분이었는데 신기하게도 부록 책자로 공시를 언급하는 것을 보고 책의 완성도에 감탄했다. 이 책은 정말이지 기업분석을 위한 거의 모든 것을 담고 있음은 물론 굉장히 쉽게 풀어서 서술한다는 점이 특징이다.

책의 분량이 400페이지가 넘어가기에 리뷰 분량 상 내용을 요약하지 못한 것이 약간 아쉽지만 온라인 서점 페이지 목차가 상세히 소개되어 있어 목차만 읽어봐도 어떤 내용을 다루는지 대강의 파악이 가능할 것이다.

개인적으로는 후반부로 넘어갈수록 더 가치있는 내용들을 만날 수 있었다. 특히 5장 재무제표 파트는 예술이었다. 어려웠던 공식들을 쉽게 정리해 주는 것에서 시작하여 어려운 용어들을 다시금 복습할 수 있었고 어려워서 읽기를 포기했던 부분도 도전할 수 있게 만들어 준 파트이다.

만약 본인이 너무 초보자라서 이 책조차 어렵다면 위에서 언급한 대로 HTS, 예제를 먼저 읽어볼 것을 추천드린다. Bottom-Up으로 가는 셈이다. 실전에서 먼저 적용해보고 왜 이렇게 하는지 혹은 세부 개념이 무엇을 의미하는지 궁금증을 가지고 본론으로 넘어간다면 더 이해가 잘 될수도 있겠다는 생각이 든다.

기업분석 경험이 없지만 새롭게 배우길 원한다면 이 책으로 시작할 것을 추천하고 싶다. 그동안 주식 책을 꽤 많이 읽어왔는데 긴 여정의 첫 기초를 이렇게 튼튼하게 다질 수 있었던 책은 보지 못한 것 같다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
리버스 엔지니어링 기드라 실전 가이드 - 유사 멀웨어로 익히는 소프트웨어 정적 분석
나카지마 쇼타 외 지음, 이창선 외 옮김 / 한빛미디어 / 2022년 1월
평점 :
장바구니담기


미국 국가안보국(NSA)이 개발한 소프트웨어 리버스 엔지니어링 도구인 기드라(Ghidra)를 활용하여 멀웨어와 유사한 프로그램을 실전과 동일하게 정적 분석하는 책이다.

기드라는 소프트웨어 리버스 엔지니어링 도구이다. 그렇기에 먼저 리버스 엔지니어링의 개념이 무엇인지 알 필요가 있다. 이는 쉽게 말해 실행할 수 있는 바이너리 프로그램의 원본 소스를 복원하는 과정이라 보면 된다.

아래 그림이 이를 잘 설명하고 있는데 실행 파일의 헥스 코드를 이용하여 원본 소스코드를 추적하는 과정으로 이해할 수 있다.리버싱

복원한 결과물이 어셈블리어일 경우 디스어셈블이라 칭하고, C언어와 같은 고수준 언어로 복원 시 디컴파일이라 칭하는 차이가 있을 뿐 결국은 인간이 이해할 수 있는 언어로 복원하는 과정이다.

그럼에도 본 도서에서 언급한 바와 같이 함수명이나 변수명과 같은 심벌, 주석, 컴파일러에 의한 자동 최적화 등의 문제로 완벽한 복원은 불가능에 가깝다.

특히 5장부터 등장하는 OS별 실전 문제를 진행하다보면 정말 건초더미에서 바늘 하나 찾는 느낌의 지루함이 반복되기에 끈기와 인내심이 필요하다는 것을 알 수 있다.

기드라에 익숙하지 않았음에도 사람의 노가다를 기드라가 얼마나 크게 줄여주는지 실습을 따라하며 알 수 있었다. 아래 그림과 같이 기드라의 그래프 뷰 기능 하나만 봐도 if문의 디스어셈블 결과를 입체적으로 볼 수 있어 가독성에 큰 도움이 된다.그래프뷰

1장은 리버스 엔지니어링에 필요한 기초 지식이 정리되어 있다. 제어부, ALU, 레지스터, 명령포인터로 구성된 CPU의 기본 구조, 그 과정에서 활용되는 코드, 데이터, 헤더, 힙, 스택 등의 메모리 세부 구조, 호출규약 등의 기본 지식을 익힌다.

이어서 언어의 특성 기본을 배운다. 함수 호출, if, switch, for, while 등의 규약을 살펴보며 간단한 디컴파일의 과정을 거친다. 또한 OS와 칩셋 간 x64 등의 아키텍쳐를 학습한다.

기드라 본래의 기능에 집중하기 위해 이러한 백그라운드 지식은 짧게 서술되어 있지만 기드라 실전에 적용 시 큰 도움이 되므로 확실히 알아두는 것이 좋다. 예를 들면 뒷 부분의 main() 함수를 찾아내는 방법에서 경우의 수를 쉽게 줄일 수 있다.

이런 방법은 풍부한 경험을 통해 쌓이기도 하지만 1장의 기본 지식이나 규약을 잘 익혀두면 처음 겪는 문제나 패턴에서도 원하는 부분을 찾아내기에 좋은 감각을 유지 할 수 있겠다는 생각이 들었다.

2장은 기드라의 세부 구성을 살핀다. 디스어셈블, 디컴파일은 물론 헤더, 라이브러리, 스크립트 분석 등의 기능이 제공된다. 먼저 기드라를 설치하는 방법이 소개된 후 실행 파일을 임포트한다. 분석 실행을 마치면 아래아 같은 화면이 등장하는데 기드라에서 가장 자주 보게 되는 화면이다.코드브라우저

책에서 소개되는 몇가지 권장설정은 그대로 따라하면 된다. 이후 위 그림의 각 기능을 세부적으로 소개하는데 중앙의 Listing 창에는 디스 어셈블한 결과가 표시되며 디컴파일러 창에는 C언어로 변환된 결과가 표시된다.

Program trees 창에는 헤더나 섹션 등 프로그램 구성요소가 구조화되어 출력되며, Symbol Trees 창에는 함수명, 변수명 등의 심벌 정보가 표시된다. Data Type Manager창에는 데이터 타입에 관련된 정보가 출력된다.

각 기능은 읽어도 어떻게 활용하는 것인지 구체적으로 어떻게 동작하는지 파악하기 어렵기 때문에 5장과 같은 실전 예제를 진행한 후 다시 볼 것을 권하고 싶다.

본래 레퍼런스라는 것들은 직접 겪어보며 필요할 때마다 참조하는 것이 기억에도 오래남고 바로바로 이해되는 것이니 이 장에서 개념이 어렵다고 읽기를 포기하지 않길 바란다.

3장에서는 downloader.exe라는 외부에서 타 프로그램을 다운로드하여 실행하는 프로그램을 리버싱한다. 그런데 이 부분 역시 리버싱의 큰 그림은 그려지지만 구체적으로 실습을 따라가기 어려웠다. 가볍게 읽어보고 5장 이후의 실전을 전개하고 다시 돌어와서 보면 쉽게 이해된다.

4장 역시 바로 이해하기는 어렵다. 분석 자동화 기능을 제공하는 Script라는 기능과 UI플러그인을 활용하여 분석 기능을 추가할 수 있는 Extension 기능이 소개된다. Scritps의 기능엔 Python 바인딩 기능도 제공하고 있다는 점이 특이한 부분이다.

5장 이후에는 각 OS별로 실전 러비싱이 진행되는 데 매우 상세하게 분석하고 있어 따라하다보면 감이 잡힌다. 앞의 1 ~ 4장은 가볍게 큰 그림만 그려본다 생각하며 읽고 개념이 어느정도 잡히면 5 ~ 9장을 가급적 먼저 실습해 볼 것을 권한다.

예를 들면 5장은 리눅스에서 구동되는 ELF 바이너리를 분석한다. 예제로 크랙미라는 실행파일이 등장하는데 리버싱에 성공하면 엑세스 코드나 비밀번호를 찾아낼 수 있다.

이 프로그램을 실행하면 패스워드를 입력하라고 나오는데 아무 문자가 입력하면 Wrong이라고 틀렸다는 메시자 출력되는 프로그램이다. 결국 이 프로그램을 리버싱하여 정확한 패스워드를 알아내는 것이 본 리버싱 예제의 목적이라고 할 수 있다.

이 프로그램의 main() 함수를 디컴파일하면 아래 그림과 같은 리버싱 결과를 볼 수 있다. 25행에서 fgets()가 사용됨을 확인 가능하다. 위에서 설명한 사용자가 패스워드를 입력하면 fgets() 함수로 입력값을 가져와 변수에 저장하게 됨을 추측할 수 있다.main디컴파일

34행에는 비교문이 등장한다. 사용자가 입력한 값은 local_38 변수에 저장되고 local_68에 들어있는 값과 비교하는 셈이다. 그런데 자세히 보면 사용자의 입력값이 ^연산을 거친다. 즉, 0x7a값과 한글자씩 XOR 연산을 수행하는 것이다. 결과가 같다면 Correct라는 문자열을 출력하는 구조이다.

결국 핵심은 XOR 역연산에 달려 있음을 알 수 있다. 책에서는 2가지 방법을 활용하여 역연산에 도전한다. 솔버라는 기드라 Script를 활용하는 방법 하나와 CyberChef라는 GUI기반 웹애플리케이션을 활용하여 패스워드를 찾아내는 방법이 소개된다.

그렇게 얻은 패스워드로 Level2에 도전하며 Level4까지 진행하는 실습을 거치게 된다. 이어서 6장 이후에는 윈도우 운영체제의 PX파일, 안드로이드 APK파일 및 패킹 등을 풀어내는 방법들이 소개되는데 한 과정씩 따라하다보면 쉽고 재미있게 저자들의 풍부한 경험을 흡수할 수 있다.

본 도서의 장점을 정리하면 다음과 같다.

  • 매우 실전적이다.
    리버싱에 관심이 많아 서점에서 찾다보면 개념이나 방법론만 늘어놓은 책들이 부지기수이다. 대충 내용은 알겠는데 다 읽어도 프로그램 간단한 것 하나도 리버싱 할 수 없다. 반면 이 책은 따라만 해도 감이 오며 저자들이 그간 경험했던 풍부한 경험을 거저 먹는 느낌이 든다.

  • 기드라의 기능이 매우 풍부하다.
    구성된 GUI 자체만으로도 다 활용해보기 힘들 정도의 다양한 기능이 제공되는데 이것도 모자라 Script나 Extension 기능도 제공되며 관련 서드파티로 연동할 수 있는 프로그램도 풍부하다. 약 20년 전 즈음 소프트아이스라는 툴을 이용해 헥스코드로 일일이 수정하며 게임 머니를 올리려고 노력하며 진땀 흘렸던 것을 생각하면 기드라는 천상의 툴이라고 극찬할만 하다.

  • 주로 디컴파일의 기능을 활용하여 설명한다.
    C언어가 제아무리 어렵다고 한들 어셈블리어에 비하면 천국이다. 어셈블리 프로그래밍은 해 본 사람이라면 알겠지만 한정된 레지스터 안에 어떤 값이 존재할지 머리가 기억해야 하는 경우가 태반이다. 게다가 PUSH, CALL 등 한정된 명령어로 분기, 반복문 혹은 그 이상의 로직을 구현하려면 기억력이 남아나질 않는다. 이 책에서는 주로 C언어로 디컴파일의 결과만 설명하기에 이 역시 천국이 따로 없다.

단점은 거의 없다. 기드라 툴로 동적 분석이 안된다는 점이 단점이라고는 하나 분기점 우회 등 일부 편법으로 대체 가능한 팁들도 소개되며 무엇보다 나의 경우 정적 분석 하나 숙달하는데도 부족한 실력이어서인지 동적 분석까지 집중할 겨를이 없었다.

아무튼 지금까지 나온 리버싱 책 중 실전 감각을 키우는데 가장 훌륭한 책이라는 생각을 했다. 아무리 이론이 빠삭해도 눈앞에 작은 프로그램 하나 리버싱을 못한다면 무슨 소용이 있겠는가? 그런점에서 백견이 불여일타의 정신을 확실하게 고수하는 본 도서를 추천하고 싶다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
나이스한 데이터 분석 - 데이터가 말하는 트렌드
나이스지니데이타 지음 / 이콘 / 2021년 11월
평점 :
장바구니담기


나이스 그룹의 데이터 사업을 담당하는 전문가들의 데이터를 통한 트렌드 분석서이자 실제 데이터 기업에서 수행하는 업무를 정리한 책이다.

책은 크게 두 부분으로 나뉘는데 1부의 핵심키워드는 트렌드와 데이터 리터러시이다.

코로나 이후의 집콕 트렌드에 대한 분석, 주류 수요 분석, 레트로 트렌드 분석, 수입차 구매 예측 지역 분석, 학군 분석 등 일반인들이 개인적으로나 비즈니스적으로나 가장 관심있어 할만한 주제들을 분석하고 있어 재미있게 읽을 수 있다.

이미 분석한 결과를 편히 읽을 수 있지만 읽는 것 만으로는 비즈니스적 지식을 얻는 것외에 특별히 얻을 것이 없다. 이 파트를 보다 의미있게 읽고 싶다면 저자들이 트렌드를 분석하는 과정에서 활용한 데이터 분석 방법과 그 과정을 잘 이해하고 인사이트를 도출할 수 있는 스스로의 데이터 리터러시를 키우는 일이 필요하다.

크게 눈에 띄는 장은 집콕을 분석한 1장과 수입차 수요를 분석한 4장이다. 1장은 데이터 리터러시에 관하여 문외한일지라도 쉽게 읽을 수 있다. 게다가 코로나 후 일상은 누구에게나 자신의 일이 되어 버렸기에 더 공감하며 읽을 수 있을 것이다. 데이터로 대충 이런 분석이 가능하구나 감을 잡고 쉽게 첫발을 딛게 도와주는 장이다.

가장 수준 높은 분석이 이뤄지는 장은 4장이다. 데이터 분석이나 통계에 대한 지식이 있는 사람은 아래 그림을 쉽게 해석할 수 있겠지만 데이터 문외한은 생각보다 어려운 그림이다.이상치

아래식은 수입차 구매 수요를 파악하기 위한 회귀식으로 소득이나 지역 등 여러 독립변수를 기반으로 수입차 구매라는 종속변수를 도출하는 과정에서 이상치를 추출하는 모습이다.

중앙의 은하수와 같은 선을 제외하면 부산 중구를 시작으로 아해 울산 남구에 이르기까지 외딴 섬 마냥 따로노는 데이터가 있는데 이런 데이터를 이상치라고 한다.

예를 들면 울산 동구, 남구의 경우 현대자동차가 있는 지역이므로 수입차 보다 국산차를 더 저렴하게 구입할 수 있기에 수입차 구매량이 적다는 인사이트를 도출할 수 있는셈이다.

이상치는 때로는 전체 트렌트를 분석하고자 버려지는 쓰레기 취급을 받을 때도 있지만 위 사례와 같이 의미있는 통찰을 전해주기도 하기에 처리하는데 주의가 필요하다. 4장은 이런 약간 고난이도의 분석 방법을 다루고 있어 데이터 과학이나 분석에 관심있는 독자들이 다음단계로 넘어가기 위한 징검다리로 괜찮은 장이라는 생각을 했다.

이어서 2부의 내용을 소개하고자 한다. 2부는 데이터 분석 부서에서 실제 어떤 일을 하고 있는지에 대해 다루는 장이다. 1부가 일반인들에게 도움이 되는 데이터 리터러시 수준의 분석을 다뤘다면 2부는 데이터 분석 회사로의 이직 혹은 취업을 목표로 하는 독자들에게 도움이 될 것이다.

6장은 데이터 분석을 위한 기본적인 개념을 총체적으로 잘 정리하고 있다. 군집분석, 연관분석, 시각화의 중요성과 의미 등 일반적인 데이터 분석팀에서 밥먹듯이 수행하는 일들이 대충 어떤 일들인지 포괄적으로 잘 정리하고 있다.

7장은 데이터 엔지니어링 및 인프라 업무를 잘 정리하고 있다. 아래 그림과 같이 데이터는 분석이나 모델링으로 끝나는 것이 아니다. 알고리즘이나 모델이 가설을 잘 검증하기 위해 데이터를 수집, 정제, 전처리 하여 알기 쉽게 떠먹여줘야 함은 물론 그 결과를 서빙하여 제품으로 만들어 낼 줄도 알아야 한다.파이프라인

이를 위한 총체적인 파이프라인 과정이 필요한데 각 과정의 세부 유닛들을 잘 정리하여 설명하고 있다.

8장에는 그 외 데이터 특성을 다룬다. 데이터 분석의 80%는 전처리라는 근거 없는 낭설을 주위에서 많이 듣곤 하는데 그만큼 전처리는 많은 시간을 잡아먹는 귀찮은 일임에는 이견의 여지가 없다.

아래 그림은 전처리가 무엇인지 가장 구체적으로 잘 설명해주는 그림이라 할 수 있다. 현실의 데이터는 위 테이블이고 이를 전처리를 거쳐 정제한 데이터는 아래 테이블이라 생각하면 된다.전처리

조금 더 자세히 들여다보면 주소는 도로명주소 우편번호로 정제하고 있고, 매장명은 업종으로, 메뉴는 어떤 분류에 속하는지 속성은 차가운지 뜨거운지 용량은 어떤지 등등의 세부 데이터로 분류된다. 그나마 판매가격은 숫자 데이터인지라 전처리 과정을 거칠일이 적다.

이 한 그림만 제대로 이해하고 있어도 전처리에 대한 대부분의 설명이 가능한데 이 책에서 좋은 예시를 담고 있다는 생각이 들었다. 2부에서 현장의 실무를 담기 위해 애썼다는 저자들의 소개에 공감할 수 있는 부분이었다.

마지막으로 9장에는 CEO를 위한 조언이 담겨 있다. 데이터 비즈니스를 꿈꾸는 이들은 무엇을, 어떻게가 아닌 왜라는 질문에 답할 수 있어야 함을 강조한다. 특히 3VD 과정을 통해 현재 보유하고 있는 데이터가 얼마나 더러운지 평가하는 방법이 소개되는데 꽤 도움이 될만한 사항이라 생각했다.

각각 얼마나 지저분하고 귀찮은 과정을 거쳐야 하는지, 얼마나 전문적이고 어려운 성격의 데이터인지, 분석할수록 위험해지며 법적 분석 검토가 필요해지는 데이터들이 3VD에 해당하는 데이터라 할 수 있다. 관련 세부 체크리스트가 제시되어 있어 실질적인 도움이 될 것이다.

정리하면 이 책은 일반인이 데이터 문해력에 관심이 있거나 기본적인 통계, 데이터 과학을 학습한 이들이 커리어를 위한 도전을 위해 입문 과정으로 읽을만한 도서이다. 저자들이 상당히 정성을 기울여 독자들이 잘 소화할 수 있게 떠 먹여주는 느낌이 들었다.

반면 개인적으로 한 가지 아쉬운 점은 실전에서 정확히 어떤 일을 하는지 매우 디테일한 예를 들면 신입 사원이 직접 나이스 데이터에 취업하여 겪는 일들 그러니까 조금 더 거친 실무 내용이 등장하길 바랬는데 보다 추상적이었다는 생각이 들어 아쉽다.

어쩌면 이런 거친 데이터와 일을 다루면 책이 전혀 안 팔릴지 모르겠다. 이는 내 취향이므로 책을 평가하는데에는 불필요한 요소이지만 그래도 요즈음은 일반적인 분석 방법론을 다루는 책이 포화상태인지라 나와 같은 생각을 갖고 있는 독자 수요층이 꽤 있진 않을런지 생각해본다.




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