Statistical Learning 챕터2: 통계적 학습 개요 수강노트(강의수강 진행 12%)

2019. 2. 19. 03:55Data Science/Data Analytics

지난 포스트에 이어 스탠포드 Statistical Learning 두번째 챕터 내용입니다.
첫 강의내용 올리고, 시간이 벌써 2주이상 흘렀습니다. 너무 늦어지면 안될거 같아 오늘 올립니다.
이중 2.4~2.R, 및 인터뷰 내용을 다루겠습니다.
수식은 되도록 배제하고, 의미를 이해하는데 집중하겠습니다.  


Ch2 통계적 학습 개요
2.1 회귀분석 입문
2.2 차원 및 구조적 모델(structured models)
2.3 모델 선정 및 편향-분산 트레이드오프
2.4 분류분석
2.R R 소개
존 챔버와의 인터뷰
(출처: Statistical Learning, Stanford Online Lagunita)


강의 내용 요약
분류(Classification)는 질적 변수(qualitative)인 목표값을 찾는 분석으로, 여러가지 예측인자를 통해 알려지진 않은 X값을 분류한다. 예를 들어, 메일이 스팸인지, 좋은 메일인지 판단하기 위한 분류 문제가 있다고 하면, 이를 판단하는 여러가지 기준(X1, X2, X3, …, Xp)에 따라, 그 메일이 스팸인지, 유용한 메일인지 판단할  수 있다.



1. 분류(Classification)란?
위에 설명했듯이, 분류는 질적인 대상을 판단하는 기준을 제시한다.
그 기준 중에서 분류 오차값이 가장 작은 값을 나타낼 때, 그 기준을 베이즈 최적 구분자(Bayes optimal classifier)라 한다. 용어가 좀 생소하지만, 어렵지 않다.예를 들어, ‘XXX 단어 유무’란 기준이 있을때 스팸 메일로 구분될 확률이 98%이며, 다른 기준은 98%의 정확도 보다 낮은 확률로 스팸 메일 정확도를 구분한다면, ‘XXX 단어 유무’가 베이즈 최적 구분자라 할 수 있다. 즉, 실제값과의 오차를 가장 적게 내는 것을 찾는면 그 예측인자가 베이즈 최적 구분자이다.


참고로, 분류에는 서포트 벡터 머신이 있는데, 이중 서포트 벡터머신은 예측인자에 대한 체계적인 모델을 구축한다. 추후 강의에서 더 자세히 다룰 예정이다.



2. K-NN(K-nearest neighbors) 기법?
분류의 한 기법으로, 분류하고자 하는 x값 주변 K개의 가장 가까운 값들 특성에 따라, x를 분류하는 기법을 말한다. K가 5인 분류기법을 적용한다면, 분류하고자 하는 x값 주변에 있는 가장 가까운 5개 값들을 살펴본 뒤, 그 값들 중 가장 높은 비율을 가진 특징을 x값에 부여한다. 예를 들어, x 주변 가장 가까운 5개 값중 3개가 노란색이고, 2개가 빨간색일 경우, x는 노란색으로 분류하는 것이다.

분류도 회귀와 마찬가지로, 차원(dimension)이 높아질수록 그 차원을 만족하는 주변 x값들을 찾기가 힘들어진다(차원의 저주).



3. R?
R은 오픈소스 언어로, 분석에 특화된 언어이다. 입력값을 치면, 바로 결과값을 보여주는 상호작용적인게 특징인 언어이다. 즉, 기계어에서 컴파일을 통해 실행할 필요가 없는 언어이다. S언어(존 챔버 박사-Dr. John Chambers 발명)에 모태를 갖고 있으며, Ross Ihaka와 Robert Gentleman 교수들에 의해 R로 재탄생하게 된다. R을 사용하기 위해서는 R오픈소스를 다운받거나, R을 좀 더 쉽게 사용하기 위한 도구 R-Studio를 사용한다.

참고로, 저는 편의를 위해 R-Studio를 사용한다. 오늘 확인해보니 최신 버전은 1.1.463이다.

R오픈소스가 데이터 처리 속도면에서는 좀 더 빠르다고 하지만, 사용편의성에서는 R-Studio가 편하다. 



4. R맛보기

(R이나 R-studio을 각자의 PC환경에 맞춰 설치한 뒤)

  • x=c(2,7,5):  x는 2, 7, 5인 벡터값을 갖는다.
  • y=seq(from=4,length=3,by=3):  y는 4부터 3씩 증가하는 3개 값을 갖는다. 즉, y=c(4, 7, 10)이다.
  • plot(x, y): x에 대한 y값을 그래픽으로 보여준다.
  • x=runif(50): x는 50개의 균일한 분포를 갖는 랜덤한 x값을 갖는다.
  • y=rnorm(50): y는 50개의 정규 분포를 갖는 랜덤한 y값을 갖는다.
  • Auto=read.csv("../Auto.csv"):Auto.csv파일을 Auto란 변수에 읽어들인다.
  • names(Auto): Auto에 저장된 데이터값들의 변수값(첫번째 행)을 출력한다.
  • dim(Auto): Auto에 저장된 데이터 행렬의 차수를 출력한다.
  • class(Auto): Auto에 저장된 데이터 형태를 보여준다.
  • summary(Auto): Auto에 저장된 데이터 형태를 요약해서 보여준다.
  • plot(Auto$cylinders,Auto$mpg): Auto의 cylinders 변수에 대해 Auto의 mpg 변수값을 그래픽으로 나타낸다.
  • attach(Auto): Auto에 저장된 변수값들을 시스템상에서 바로 사용할 수 있도록 한다.


(R에 대해서는 이 강의와는 별도 포스팅을 할까 합니다. ) 
. . .

기존에 통계 및 R에 대해 아무것도 듣지 않고, Statistical Learning을 수강한다면, 바로 이해하기 어려운 점이 많을 것 같습니다. 전 예전에 통계 및 R사용법에 대해 공부한 경험이 있기에 완전 새로운 개념이 아니라 100% 이해는 가지 않아도 꾸준히 따라가려고 합니다. 처음 접하시는 분들도 여러 교육자료를 계속 접하시면 익숙해지실거라 생각합니다. 

어려운 개념을 쉽게 풀어서 공유할 수 있을 때까지 공부하고, 공유하겠습니다.
앞으로 R과도 더 친해져야 하겠습니다. ^^


강의수강 진행현황: 12%