집단지성 프로그래밍

평소 데이터분석이나 기계학습에 관심이많은사람들은 이미 많이 알고있는 책입니다.

최근 몇년간 빅데이터 분석이 각광을 받으면서, 빅데이터를 활용하여 분석하는 방법 중 하나인 기계학습(Machine learning)에 대한 관심이 높아지고있습니다. 아는지인이 정말 좋은책이라고 꼬드겨서 구매했습니다. 사실 파이썬을 자주 사용할일이없었는데, 오랜만에 스터디하면서 파이썬을 사용할수있겠네요. 요즘 호기심을 자극하는 책들이 많습니다. 목차만 봐도 궁금해서 읽어지게 만드는 책들, 아마 그런 책들 중 이 책도 하나가 아닐까 싶습니다. 평소에 알고있던 서비스들이 새로운 기능을 추가할때마다 머신러닝을 많이 언급하고있습니다. 그래서 예전부터 주의깊게 봐왔습니다.

앞으로도 계속 스터디하는 이유는 머신 러닝을 직접 적용할 기회도 있겠지만 그보다 꾸준한 스터디를 통한 이해로 제가 진행하는 프로젝트 시나리오에 최적화하는 것도 나 같은 프로그래머일이라 생각한다. 머신 러닝에 대한 자료들도 많이 나왔고, 흔히 말하는 머리 좋은 사람들이 내놓은 답안도 많다. 프로그래머가 라이브러리를 사용하듯이 대신에 사용함에 있어 완벽한 이해는 필수사항인 것 같다.

실제로 제가 이용하는 서비스들 대부분이 머신러닝에 아주 좋은예들이라고 할수있습니다. 많은 서비스들이 머신러닝의 중요성을 인지하고 서비스에 적용하고있습니다. 특히 개인화,추천 기능에 있어서 머신러닝이 차지하는 비중이크다. 아마존,페이스북,구글등이 이미 증명한 사례라고 볼수있습니다. 머신러닝을 적용하여 매출에 엄청나게 큰 영향을 주었고 서비스에 대한 이용자들에 인지개선또한 되었다. 이에대한 자료들은 구글링을 통해서 쉽게 확인할수있다.

개인화 추천 서비스의 선두인 넷플릭스의 경우에도 사용자가 좋아할 만한 영화를 추천해주기 위하여 별점이란 데이터를 기반으로 한 머신러닝을 활용한다. 특히 넷플릭스는** 자사의 데이터를 공개하며 예측 알고리즘의 정확도를 높이기 위한 컨테스트를 개최**할정도로 머신러닝을 중요시하고있다. 또 페이스북을 이용하는 이용자(저는 페이스북을 하지않아서..)라면 기억에서 가물가물해진 지인들을 보여주거나 연고주의를 벗어나 이전에 스쳐지나갔던 인물도 추천해줍니다. 페이스북을 한번쯤 이용해본 유저라면 이해할수있을것입니다. 뭐 구글은 설명할 필요가없죠. 평소관심은 가졌지만 다소 어렵게 느껴지는 개념들이 많습니다. 기계학습에 관심이 정말 많은 사람이라면 “Machine Learning in action“도 함께 사서보시길 바래요. 저는 아직 영어실력이 미달이라서 읽고 싶어도 읽을수가없겠네요.

카네기멜론의 Tom Mitchell 은 Arthur Samuel 교수(1959에 스탠포드 교수였던 Arthur Samuel에 의해 첫 정의됨 )의 머신러닝에 대한 정의를 좀 더 고도화시켰다.

“컴퓨터 프로그램이 경험(E: Experience)을 바탕으로 학습하여 연관 된 업무(T: Task)를 수행하고, 이에 대한 수행을 측정(P: Performance)하고 경험 E를 통해 성능 P를 증진시키는 것”

서비스에서 데이터는 아주 중요한 역할을한다.

대부분 알고리즘을 짜면서 막히는 부분은 대부분 DB설계를 잘못해서인것도있다(저만 그럴수도..ㅋㅋ) 또 DB설계에따라서 서비스에대한 성능에도 큰 영향을 미친다. 요즘은 이용자에게 최소한의 입력값만 받으려고한다. 이용자는 간편한 인증을 원한다. 소셜로그인이던 오픈아이디이던 아주 간편한 것.

Machine learning?

기계 학습(machine learning)은 인공 지능의 한 분야로, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 말한다. 가령, 기계 학습을 통해서 수신한 이메일이 스팸인지 아닌지를 구분할 수 있도록 훈련할 수 있다. 기계 학습의 핵심은 표현(representation)과 일반화(generalization)에 있다. 표현이란 데이터의 평가이며, 일반화란 아직 알 수 없는 데이터에 대한 처리이다. 이는 전산 학습 이론 분야이기도 하다. 다양한 기계 학습의 응용이 존재한다. 문자 인식은 이를 이용한 가장 잘 알려진 사례이다.

머신러닝에 대한 기초 강의

스탠포드 Andrew ng교수의 머신러닝 강의

머신러닝이 몰고올 IT진화 시나리오 => http://www.zdnet.co.kr/news/news_view.asp?artice_id=20141212161631

에릭 슈미트 회장 “모바일 다음은 ‘머신러닝’의 시대” => http://m.post.naver.com/viewer/postView.nhn? volumeNo=2766432&memberNo=5528548&vType=VERTICAL

이번에 프로젝트진행하는것도 있고, 함께 읽으면 좋은 책인것같아 고민없이 구매했다.

우선 책에 대한 설명은 끝내고, 머신러닝카테고리를 통해서 좀 더 심도있게 얘기해보고자한다.

1장. 집단지성 소개

1.1 집단지성이란?

1.2 기계학습이란?

1.3 기계학습의 한계

1.4 실제 예

1.5 기계학습의 다른 사례

2장. 추천시스템 만들기

2.1 협업 필터링

2.2 선호 정보 수집

2.3 유사 사용자 찾기

2.4 항목 추천

2.5 제품 매칭

2.6 딜리셔스 링크 추천 기능 만들기

2.7 항목 기반 필터링

2.8 무비렌즈(MovieLens) 데이터 세트 이용하기

2.9 사용자 기반과 항목 기반 필터링

2.10 함께 풀어보기

3장. 군집 발견

3.1 감독 대 무감독 학습

3.2 단어 벡터

3.3 계층적 군집화

3.4 계통도 출력

3.5 세로줄 군집화

3.6 k평균 군집화

3.7 선호도 군집

3.8 2차원으로 데이터 보기

3.9 군집 가능한 다른 것들

3.10 함께 풀어보기

4장. 검색과 랭킹

4.1 검색엔진이란?

4.2 단순 크롤러

4.3 색인하기

4.4 검색하기

4.5 내용 기반 랭킹

4.6 유입 링크 사용하기

4.7 클릭 학습

4.8 함께 풀어보기

5장. 최적화

5.1 단체 여행

5.2 해답 표현하기

5.3 비용 함수

5.4 무작위 검색

5.5 언덕등반

5.6 시뮬레이티드 어닐링

5.7 유전자 알고리즘

5.8 비행편 검색 실제

5.9 선호도 최적화

5.10 네트워크 시각화

5.11 다른 가능성들

5.12 함께 풀어보기

6장. 문서 필터링

6.1 스팸 필터링

6.2 문서와 단어

6.3 분류기 훈련시키기

6.4 확률 계산

6.5 기본 분류기

6.6 피셔 방식

6.7 학습 정보 저장

6.8 블로그 피드 필터링

6.9 향상된 특성 검출법

6.10 Akismet 사용하기

6.11 다른 기법들

6.12 함께 풀어보기

7장. 의사결정트리

7.1 가입 유형 추정

7.2 의사결정트리 소개

7.3 트리 학습

7.4 최적 단편 선정

7.5 재귀적으로 트리 만들기

7.6 트리 출력하기

7.7 새로운 관찰 분류하기

7.8 트리 가지치기

7.9 손상된 데이터 다루기

7.10 숫자 결과 다루기

7.11 주택 가격 모델링

7.12 “인기도” 모델링

7.13 의사결정트리 활용 시점

7.14 함께 풀어보기

8장. 가격 모델링

8.1 예제 데이터 세트 만들기

8.2 kNN

8.3 물품 가중치

8.4 교차검증

8.5 이질 변수

8.6 축척 최적화

8.7 불균등 분포

8.8 실 데이터 - 이베이 API

8.9 적절한 kNN 활용 방법

8.10 함께 풀어보기

9장. 고급 분류 기법: 커널 기법과 SVM

9.1 중매 데이터 세트

9.2 데이터를 다루는 어려움

9.3 기본 선형 분류

9.4 분류 데이터의 특성

9.5 데이터 축척 조정

9.6 커널 기법 이해

9.7 지지벡터머신

9.8 LIBSVM 사용

9.9 페이스북 매칭

9.10 함께 풀어보기

10장. 독립 특성 발견

10.1 뉴스 코퍼스

10.2 이전 방식들

10.3 비음수 행렬 인수분해

10.4 결과 출력하기

10.5 주식시장 데이터 사용하기

10.6 함께 풀어보기

11장. 진화지성

11.1 유전자 프로그래밍이란?

11.2 프로그램을 트리로 표현하기

11.3 초기 개체군 만들기

11.4 해답 검증하기

11.5 프로그램 돌연변이 시키기

11.6 교배하기

11.7 환경 구축하기

11.8 간단한 게임

11.9 다른 가능성들

11.10 함께 풀어보기

12장. 알고리즘 요약

12.1 베이지안 분류기

12.3 신경망

12.4 지지벡터머신

12.5 KNN

12.6 군집화

12.7 다차원 비례 축소법

12.8 비음수 행렬 인수분해

12.9 최적화

부록 A. 외부 라이브러리

부록 B. 수학 공식

Comments