[리뷰] 나만의 스마트워크 환경 만들기



비제이퍼블릭 출판사의 "나만의 스마트워크 환경 만들기(박찬성 저)"를 읽고 작성한 리뷰입니다.

표지


본 도서는 Python 프로그래밍의 기초에서부터 머신러닝의 기초까지 폭넓은 영역을 다루는데 반해서 난이도는 매우 쉽다는 것이 특징이다. 제목에서 알 수 있듯이 Python을 활용하여 개인 생활이나 업무를 편하게 만들어 주는 자동화 도구를 만드는 것에 초점이 맞춰져 있다.

처음 이 책을 보았을 때 스마트워크 환경을 다룬다는 것 자체로도 흥미로운 일이지만 특히 저자에 눈길이 갔다. AI에 관심이 많은 분들이라면 페이스북의 TensorFlow KR 커뮤니티를 모르는 분은 흔치 않을 것이다.

저자인 박찬성님은 텐서플로우 코리아에서 자주 활동하시는 분으로 매일같이 유익한 게시글을 자주 작성하시기로 유명하다. 인기게시물을 하루에도 몇개를 올리시는데 하나같이 유용한 정보들로 가득하다. 본 도서가 자동화까지만 다루는데 그치지 않고 마지막 장 머신러닝까지 다룬 것은 저자분의 AI에 대한 깊은 관심 때문이 아닐까 싶다.

최근에는 TF-KR 포스팅의 상위 랭크된 게시글에 대한 뉴스레터 서비스를 만들고 계신듯 하다. 본 도서를 충분히 숙지하면 비슷한 것들을 만들어 여러모로 유용하게 활용할 수 있을듯 하다.

먼저 본 도서 내용의 개략적인 내용을 추천해 드리고 싶은 독자 유형을 분류해보며 소개해 드릴까 한다.

  • AI 유관 IT 기술을 다뤄 본 경험이 없어 폭넓고 빠르게 익히고 싶은 분
    AI에 관련된 기술은 너무 다양하여 관련 기술을 모두 알고 계신분은 정말 흔치 않을 것으로 생각된다.

    본인이 몸담고 있는 업무 도메인의 지식이 출중하고 수학적 학식이 풍부하여 AI 모델링 혹은 연구를 하신분들도 DL/ML 엔지니어의 AI 구현 능력은 부족할 수 있고, 혹은 데이터를 원하는대로 가공하는데 있어 전처리 스킬이 떨어지는 분, 혹은 원하는 데이터를 확보하고 싶은데 수집 능력이 떨어지는 분 등 다양한 분야에서 조금씩 모자란 부분은 존재하게 마련이다.

    그런 측면에서 이 책은 직접적인 AI 기술은 아니지만 유관된 유용한 기술을 폭넓고 쉽게 다루고 있으므로 빠르게 전체를 훑고 취미삼아 미니 프로젝트를 만들어보기에 적합하다. 큰 스트레스 받지 않고 빠른 시일내에 다양한 기술을 습득할 수 있다.

  • AI에 관심이 많으나 입문조차 어려워 포기를 고민중인 분
    위에서 언급했듯이 AI와 유관된 기술은 매우 다양하다. 본 도서에서는 Python의 기초는 물론 데이터 수집을 위한 자동화 프로그램을 개발할 수 있으며 이를 통해 수집된 데이터를 활용하여 간단한 머신러닝을 프로그램을 구축 할 수도 있다.

    유관 기술들을 전체적으로 다룬 후 AI의 입문까지 안내하는 도서이기 때문에 포기하지 말고 본 도서에서 제공하는 흥미로운 예제를 익혀본 후 본격적으로 AI에 접근한다면 한단계 레벨이 상승했음을 느낄 수 있을듯하다.

  • 업무나 개인 생활에 낭비되는 시간이 아까워 자동화 프로그램이 필요한 분
    본 도서는 Python을 이용하여 엑셀, 워드를 다룰 뿐만 아니라 그래프 등 시각화 도구를 활용하는 방법, 엑셀 표 형식의 DataFrame을 가공하는 방법, 수집한 데이터를 기반으로 원하는 정보를 주기적으로 E-mail로 발송하는 방법을 다루기 때문에 사무실에서 시간을 뺏기는 단순 반복 업무를 처리하는데 큰 도움이 될 것이다.

    더불어 본 도서의 예제 중 하나인 네이버 웹툰 알림 기능 구현하기와 같은 개인적인 생활에 있어서도 삶의 질을 높여주는 편리함을 제공해 줄 것이다.

  • 프로그래밍을 배우고 싶은데 난이도에 막혀 포기를 고민중인 분
    이 책은 심지어 프로그래밍 입문도 다룬다. 첫장이 프로그래밍 입문이다. 컴퓨터공학과 전공 과목 중 하나인데 몇 페이지를 할애하여 프로그래밍을 모르는 사람도 책에 진입할 수 있도록 도와준다.

    더불어 새로운 개념을 소개할 때마다 여러번에 걸쳐 반복적으로 쉬운 설명으로 서술하는 방식을 책의 마지막 6장 기계학습까지 유지하고 있음을 미리 읽어 본 독자로서 모두 확인했으므로, 안심하시고 끝까지 정주행하시며 나의 일상을 위한 소박한 개인 비서 하나 만들어두시면 어떠실런지 추천드리고 싶다.

이제 본격적으로 배웠던 스킬들을 간단히 정리해보며 본 리뷰를 마칠까 한다.

  • Python 프로그래밍의 기초 (1장 ~ 2장)
    프로그래밍 입문이라는 주제를 시작으로 Python의 개발환경(IDE)를 구성한다. Python을 설치한 후, Visual Studio 설치 및 기본적인 IDE의 활용 방법이 매우 자세하게 가이드 되어있다.

    특히, 개인적으로 프로그래밍 실력을 향상시키는 데 있어 최고의 방법은 디버깅(Debugging)이라고 생각하는데 이 부분을 상세히 다룬 것이 마음에 들었다. 아래 그림은 브레이크 포인트를 설정 한 후 디버깅을 진행하며, 중간 과정에 변수값 등을 확인하는 방법을 안내한 그림인데 매우 쉬운 예제를 기반으로 초보자도 쉽게 따라할 수 있게끔 디버깅 방법을 상세히 다룬다. 디버깅

    이어서 Python의 기초 문법을 배운다. 자료형이나 변수 등의 기초내용들은 다양한 그림을 통해 여느 프로그래밍 언어 입문서 못지 않게 처음 배우는 분들을 배려한다.

    더불어 pip install에 관해 상세히 다룬다. Python은 다른 언어에 비해 라이브러리의 활용도가 매우 높다. 따라서 시기적절하게 패키지를 설치하는 방법에 능숙해져야 하는데 pip를 자세히 다루거나 앞서 언급한 디버깅을 자세히 다루는 등 중요한 것은 부각시키고 덜 중요한 것은 과감히 덜어내는 저자의 완급 조절이 인상적이었다. 분명 처음 프로그래밍을 접하는 분들께 많은 도움이 되는 구성이라 생각한다.

    다음으로 프로그래밍의 기본인 제어문이나 반복문을 다루는데 그냥 기능만 간략히 언급하고 넘어가는 것이 아니라, 유의할 점을 상세히 명시해 준다. 활용도가 매우 높은 문자형, 숫자형, 리스트, 딕셔너리 함수를 소개하고, 상속과 다형성 같은 OOP 지식이 전제되어야 이해할 수 있는 Class도 주요 개념을 빠짐없이 언급한다. 이어서 I/O를 처리하는데 필수적인 파일처리도 심도있게 다룬다.

    전체적으로 프로그래밍 입문서 한권을 가장 자주 사용하는 것만 추려서 100페이지 정도의 분량으로 압축한 느낌이다.

  • 문서다루기 (3장)
    아마도 본 도서의 꽃은 이 장이 아닐까 한다. 데이터를 가공하고 업무 효율화를 높여주는 대부분의 스킬이 이 장에서 등장한다.

    먼저 OpenPyXL 라이브러리를 통해 엑셀을 다루는 법을 익힌다. “Cell - 워크시트(WorkSheet) - 워크북(WorkBook)”의 구조로 확장되는 엑셀의 기본 구조를 그림을 통해 쉽게 개념을 전달하고 마치 RDBMS SQL을 다루듯 데이터를 가공하거나 조작, 병합하는 방법을 다룬다.

    이어서 python-docx 라이브러리를 활용하여 워드파일을 다룬다. 마찬가지로 “Run - 문단(Paragraph) - 도큐먼트(Document) - 워드파일(Docx)”로 확장되는 기본 구조를 설명한 후, 문단에 스타일을 추가하거나 테이블, 그림을 추가하는 방법을 배운다. 최종예제에서는 Python을 활용하여 회의록 양식을 만드는 법을 배울 수 있다.

    Pandas를 활용하여 공공데이터를 다루는 것도 유익하다. Pandas를 통해 Tabular 자료형을 DataFrame으로 변환한 후 라이브러리에서 자주 활용하는 함수를 한번씩 실습 후 분리, 추출, 변형하는 방법을 다룬다.

    이어 matplotlib 패키지를 활용하여 시각화를 배운다. 보다 다양한 시각적 효과를 표현하기 위해 저자의 경험에서 비롯한 Tip이 소개된 후, 선그래프, 서브플롯, 박스그래프, 히스토그램, 산점도 등 시각화 유형별로 모두 실습해봄으로써 시각화에 자신감을 키워준다.

    마지막으로 본 챕터에서 배운 스킬들을 모두 활용하여 공공데이터를 활용한 미세먼지 수치 변화에 대한 트렌드 분석 프로그램을 만드는데 배운 내용을 복습하기 적절하게 구성되어있다. 미세먼지 추이

  • 웹크롤링 및 자동화 (4 ~ 5장)
    먼저 4장에서는 웹 크롤링에대해 다룬다. beautifulsoup4urllib3 패키지의 기본 활용법을 다루고 이를 통해 수집한 HTML DOM 구조를 상세히 분석한다. 이를 통해 파워링크, 블로그 수집을 시작으로 Daum의 뉴스 수집을 실습한다. DAUM 뉴스 수집1
    DAUM 뉴스 수집2

    이어지는 5장에서는 자동화를 위한 스케줄링 도구를 배운다. OS차원의 Cron을 비롯, Python의 schedule 패키지를 활용하는 법을 다룬다. 이어 네이버 웹툰을 크롤링하여 업데이트 상태를 체크하고 모니터링 결과를 E-mail로 전송하는 흥미로운 예제를 다룬다. 웹툰 업데이트 알람

    E-mail을 발송하기 위한 기본 지식인 SMTP 프로토콜에 대해 자세히 알아보는 것은 물론, Gmail 및 네이버 메일에서 수신 가능하도록 보안 옵션을 조정하는 방법까지 디테일하게 다룸으로써 쉽게 구현할 수 있다.

  • 기계학습 (6장)
    기존의 도서들이 수집 및 기본적인 분석에서 내용을 마쳤다면 본 서적은 한단계 더 나아가 수집된 데이터에 대한 활용가치를 극대화할 수 있는 기계학습을 다룬다.

    기계학습의 전반적인 개념을 다루고 Colab 및 Jupyter Notebook을 활용하여 머신러닝 예제를 실습하는 방법을 자세히 알려준다. 더불어 Kaggle 전반에 대한 소개 및 활용방법도 다루고 있다.

    이어 본격적으로 Kaggle 예제 중 하나인 특정 중장비의 경매 가격을 예측하는 Blue Book for Bulldozar 경진대회를 실습한다. 기본적인 전처리의 방법에 대해 배운 후, 랜덤포레스트 알고리즘을 활용하여 모델을 만들고 성능을 측정한다. 랜덤포레스트에 대한 자세한 개념 설명은 물론 각각의 하이퍼파라미터에 대해서도 상세히 언급한다. 랜덤포레스트

    더불어 XAI의 기법 중 하나인 특징 중요도(Feature Importance, Permutation Importance)를 통해 각 특징의 중요도를 파악하는 등 결과의 해석을 통해 모델의 성능을 개선하려는 시도도 담겨있어 유익했다. 더불어 트리해석기를 통한 분석도 다루고 있다.

이로써 전반적인 도서의 내용을 언급했다. 비록 전체 457p에 이르는 방대한 분량으로 구성되어있으나, 흥미로운 예제가 많고 각 설명들이 쉽게 서술되어있어 생각보다 빠르게 읽을 수 있다.

AI 혹은 프로그래밍에 능숙한 분이라면 하루를 온전히 투자한다는 가정하에 2-3일이면 충분하다고 생각하고, 프로그래밍을 처음 접하는 독자일지라도 예제 구현까지 포함해 한달 남짓의 시간이면 충분히 학습할 수 있을듯 하다.

앞서 언급했듯 AI의 다양한 유관분야를 빠르게 훑어보고 싶은분이나, 일상과 업무를 자동화하고 싶은분께 꼭 추천드린다.






© 2019.04. by theorydb

Powered by theorydb