파이썬 예제로 배우는 필수 알고리즘!
현실 세계의 문제를 해결하는 40가지 알고리즘을 배우면서
프로그래머라면 꼭 갖춰야 할 알고리즘 응용력과 문제 해결력을 높이자!
현대 사회에서 개발자와 프로그래머가 갖추어야 하는 필수 소양은 알고리즘을 이용한 문제 해결 능력이다. 이 책은 문제의 성격에 따라 적합한 알고리즘을 소개하고 그 작동 원리를 설명한다. 특히 현실 세계의 문제를 해결하는 40여 개 알고리즘을 보여주면서 그 작동 원리를 이해시키고 파이썬으로 직접 구현해 본다.
1부 기초와 핵심 알고리즘
1장 알고리즘 기초
1.1 알고리즘 정의하기
__1.1.1 알고리즘의 단계
1.2 알고리즘의 로직 표현하기
__1.2.1 의사코드 이해하기
__1.2.2 스니펫 사용하기
__1.2.3 실행 계획 생성하기
1.3 파이썬 패키지 살펴보기
__1.3.1 파이썬 패키지
__1.3.2 주피터 노트북으로 파이썬 사용하기
1.4 알고리즘 설계 기법 이해하기
__1.4.1 데이터 차원
__1.4.2 연산 차원
1.5 성능 분석하기
__1.5.1 공간 복잡도 분석
__1.5.2 시간 복잡도 분석
__1.5.3 성능 추정
__1.5.4 알고리즘 선택
__1.5.5 빅오 표기법
1.6 알고리즘 검증하기
__1.6.1 결정론적, 비결정론적 알고리즘과 최적, 근사 알고리즘
__1.6.2 해석 가능성
1.7 요약
2장 알고리즘에 사용되는 자료 구조
2.1 파이썬 자료 구조 파악하기
__2.1.1 리스트
__2.1.2 튜플
__2.1.3 딕셔너리
__2.1.4 세트
__2.1.5 데이터프레임
__2.1.6 행렬
2.2 추상화 자료 유형 파악하기
__2.2.1 벡터
__2.2.2 스택
__2.2.3 큐
__2.2.4 스택과 큐에 대한 기본 아이디어
__2.2.5 트리
2.3 요약
3장 정렬과 검색 알고리즘
3.1 정렬 알고리즘 이해하기
__3.1.1 파이썬에서 변수 바꾸기
__3.1.2 버블 정렬
__3.1.3 삽입 정렬
__3.1.4 병합 정렬
__3.1.5 셸 정렬
__3.1.6 선택 정렬
3.2 검색 알고리즘 이해하기
__3.2.1 선형 검색
__3.2.2 이진 검색
__3.2.3 보간 검색
3.3 활용 사례 - 이민관리청에 접수된 서류 조회하기
3.4 요약
4장 알고리즘 설계
4.1 알고리즘 설계의 기본 개념 살펴보기
__4.1.1 관점 1 - 설계한 알고리즘이 우리가 기대하는 결과를 출력하는가?
__4.1.2 관점 2 - 설계한 알고리즘이 결과를 얻을 수 있는 최적의 방법인가?
__4.1.3 관점 3 - 설계한 알고리즘이 규모가 더 큰 데이터셋을 다룰 수 있는가?
4.2 알고리즘 설계 전략 이해하기
__4.2.1 분할 및 정복 전략 이해하기
__4.2.2 동적 계획법 이해하기
__4.2.3 탐욕 알고리즘 이해하기
4.3 활용 사례 - 외판원 문제 해결하기
__4.3.1 무차별 대입 전략 사용하기
__4.3.2 탐욕 알고리즘 사용하기
4.4 페이지랭크 알고리즘 이해하기
__4.4.1 문제 정의하기
__4.4.2 페이지랭크 알고리즘 구현하기
4.5 선형 계획법 이해하기
__4.5.1 선형 계획법 문제 정의하기
4.6 활용 사례 - 선형 계획법을 활용해 용량 계획하기
4.7 요약
5장 그래프 알고리즘
5.1 그래프 표현 이해하기
__5.1.1 그래프 유형
__5.1.2 특수한 유형의 엣지
__5.1.3 에고 중심 네트워크
__5.1.4 소셜 네트워크 분석
5.2 네트워크 분석 이론 살펴보기
__5.2.1 최단 경로
__5.2.2 삼각형
__5.2.3 밀도
__5.2.4 중심성 지표 이해하기
__5.2.5 파이썬으로 중심성 지표 계산하기
5.3 그래프 순회 이해하기
__5.3.1 너비 우선 검색
__5.3.2 깊이 우선 검색
5.4 활용 사례 - 사기 범죄 분석하기
__5.4.1 간단한 사기 분석 방법
__5.4.2 감시탑 사기 분석 방법
5.5 요약
2부 머신러닝 알고리즘
6장 비지도 학습 알고리즘
6.1 비지도 학습 이해하기
__6.1.1 데이터 마이닝 사이클에서의 비지도 학습
__6.1.2 비지도 학습의 최신 연구 트렌드
__6.1.3 비지도 학습의 활용 사례
6.2 클러스터링 알고리즘 이해하기
__6.2.1 유사도 측정하기
__6.2.2 계층적 클러스터링 알고리즘
__6.2.3 클러스터 평가하기
__6.2.4 클러스터링의 활용 사례
6.3 차원 축소 알고리즘 이해하기
__6.3.1 주성분 분석
__6.3.2 주성분 분석의 한계
6.4 연관 규칙 마이닝 이해하기
__6.4.1 연관 규칙 마이닝의 활용 사례
__6.4.2 장바구니 분석
__6.4.3 연관 규칙
__6.4.4 평가 척도
__6.4.5 연관 규칙 마이닝 알고리즘
6.5 활용 사례 - 비슷한 트윗끼리 클러스터링하기
__6.5.1 토픽 모델링
__6.5.2 클러스터링
6.6 이상 탐지 알고리즘 이해하기
__6.6.1 클러스터링 알고리즘
__6.6.2 밀도 기반 이상 탐지 알고리즘
__6.6.3 서포트 벡터 머신 알고리즘
6.7 요약
7장 전통적인 지도 학습 알고리즘
7.1 지도 학습 이해하기
__7.1.1 지도 학습 구조 소개
__7.1.2 지도 학습의 필요 조건
__7.1.3 분류 모델과 회귀 모델 비교하기
7.2 분류 알고리즘 이해하기
__7.2.1 분류 문제 소개
__7.2.2 분류 모델 평가하기
__7.2.3 분류 모델 구축 단계
__7.2.4 결정 트리 분류 알고리즘
__7.2.5 앙상블 알고리즘
__7.2.6 로지스틱 회귀 알고리즘
__7.2.7 서포트 벡터 머신 알고리즘
__7.2.8 나이브 베이즈 알고리즘
__7.2.9 분류 알고리즘 비교하기
7.3 회귀 알고리즘 이해하기
__7.3.1 회귀 문제 소개
__7.3.2 선형 회귀 알고리즘
__7.3.3 회귀 트리 알고리즘
__7.3.4 그레이디언트 부스팅 회귀 알고리즘
__7.3.5 회귀 알고리즘 비교하기
7.4 활용 사례 - 날씨 예측하기
7.5 요약
8장 뉴럴 네트워크 알고리즘
8.1 뉴럴 네트워크 이해하기
8.2 뉴럴 네트워크의 발전 살펴보기
8.3 뉴럴 네트워크 훈련하기
__8.3.1 뉴럴 네트워크 구조
__8.3.2 경사하강법
__8.3.3 활성화 함수
8.4 도구와 프레임워크 살펴보기
__8.4.1 케라스
__8.4.2 텐서플로 사용하기
__8.4.3 뉴럴 네트워크의 종류
8.5 전이 학습 이해하기
8.6 활용 사례 - 딥러닝으로 부정 탐지하기
__8.6.1 방법론
8.7 요약
9장 자연어 처리 알고리즘
9.1 자연어 처리 살펴보기
__9.1.1 자연어 처리 용어 이해하기
__9.1.2 자연어 처리 툴킷
9.2 백오브워즈 기반 자연어 처리 이해하기
9.3 단어 임베딩 살펴보기
__9.3.1 단어의 이웃
__9.3.2 단어 임베딩의 특징
9.4 자연어 처리에 리커런트 뉴럴 네트워크 사용하기
9.5 자연어 처리를 이용해 감성 분석하기
9.6 활용 사례 - 영화 리뷰 감성 분석하기
9.7 요약
10장 추천 엔진
10.1 추천 엔진 살펴보기
10.2 추천 엔진 종류 살펴보기
__10.2.1 콘텐츠 기반 추천 엔진
__10.2.2 협업 필터링 추천 엔진
__10.2.3 하이브리드 추천 엔진
10.3 추천 엔진의 한계점 이해하기
__10.3.1 콜드 스타트 문제
__10.3.2 메타 데이터
__10.3.3 데이터 희소성 문제
__10.3.4 사회적 영향력으로 인한 편향
__10.3.5 제한된 데이터
10.4 활용 분야 살펴보기
10.5 활용 사례 - 추천 엔진으로 영화 추천하기
10.6 요약
3부 고급 기법
11장 데이터 알고리즘
11.1 데이터 알고리즘 살펴보기
__11.1.1 데이터 분류
11.2 데이터 저장 알고리즘 이해하기
__11.2.1 데이터 저장 전략 이해하기
11.3 데이터 스트리밍 알고리즘 이해하기
__11.3.1 스트리밍 활용 분야
11.4 데이터 압축 알고리즘 이해하기
__11.4.1 무손실 압축 알고리즘
11.5 활용 사례 - 트위터 실시간 감성 분석하기
11.6 요약
12장 암호화
12.1 암호화 살펴보기
__12.1.1 가장 약한 연결고리의 중요성 이해하기
__12.1.2 기본 용어
__12.1.3 보안 요구사항 이해하기
__12.1.4 기본적인 암호 설계 이해하기
12.2 암호화 기법의 종류 이해하기
__12.2.1 암호화 해시 함수 사용하기
__12.2.2 대칭 암호화
__12.2.3 비대칭 암호화
12.3 활용 사례 - 머신러닝 모델 배포와 관련한 보안 이슈 살펴보기
__12.3.1 중간자 공격
__12.3.2 위장 공격
__12.3.3 데이터와 모델 암호화
12.4 요약
13장 대규모 알고리즘
13.1 대규모 알고리즘 살펴보기
__13.1.1 대규모 알고리즘 정의
__13.1.2 기본 용어
13.2 병렬 알고리즘 설계 이해하기
__13.2.1 암달의 법칙
__13.2.2 작업 세분성
__13.2.3 부하 분산
__13.2.4 국지성 이슈
__13.2.5 파이썬에서 병렬 프로세싱 실행하기
13.3 멀티 자원 프로세싱 전략 이해하기
__13.3.1 컴퓨팅 통합 장치 아키텍처
__13.3.2 클러스터 컴퓨팅
__13.3.3 혼합 방법
13.4 요약
14장 실질적 고려사항
14.1 실질적 고려사항 살펴보기
__14.1.1 AI 트위터 봇의 슬픈 사연
14.2 알고리즘의 해석 가능성 이해하기
__14.2.1 머신러닝 알고리즘과 해석 가능성
14.3 알고리즘의 윤리 이해하기
__14.3.1 학습 알고리즘이 가진 문제
__14.3.2 윤리적 고려사항 이해하기
14.4 모델의 편향 줄이기
14.5 NP-난해 문제 다루기
__14.5.1 문제를 단순화하기
__14.5.2 널리 알려진 다른 해결책을 수정해 사용하기
__14.5.3 확률적 모델 사용하기
14.6 알고리즘을 사용해야 할 때
__14.6.1 활용 사례 - 검은 백조 이벤트
14.7 요약
찾아보기
ㆍ지은이 임란 아마드
ㆍ옮긴이 황준식
독자의견 남기기