티스토리 뷰

728x90

[Statistical Learning - 통계학습]

가볍게 시작하는 통계학습 : R로 실습하는 / An Introduction to Statistical Learning (with applications in R)



공저 James, Gareth / Witten, Daniela / Hastie, Trevor / Tibshirani, Robert | Springer



공저 Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani / 마이클 역




서문



어떤 학문을 공부할 때 그 학문의 대표적인 교재가 있다. 예컨대 경제학을 공부할 때 보는 맨큐의 경제학, 컴퓨터공학에서는 컴퓨터시스템구조 - M.Morris Mano 이 있다. 통계학에서도 통계학습분야에 이런 대표적인 교재가 있는데 이것은 바로 오늘부터 공부하게 될 약칭 ISLR / An Introduction to Statistical Learning (with applications in R) 이다.
데이터를 공부하고, 머신러닝과 딥러닝을 공부하는 나에게는 꼭 통계학을 배워야하는데 이때 가장 기본이 되는 책이라고 생각하여 고르게 되었다. 그럼 여기서 소위 기계학습이라고 말하는 머신러닝, 딥러닝과 통계학습의 차이는 무엇인가?


기본적으로 통계학습은 통계학의 한 분야이며, 기계학습은 컴퓨터 과학 중 AI의 한 분야이다. 즉 각 각 다른 분야에 뿌리를 두고 있기 때문에 관점이 조금씩 다르다. 예컨대 머신러닝은 LARGE-SCALE 문제를 잘 풀기 위한 알고리즘, 높은 정확성을 얻는 것에 중요성이 있는 반면, 통계학습은 모델 자체, 모델의 해석 정확도와 불확실성 등 좀 더 통계학적 관점에 초점을 두고 이해한다. 그러나 이 두 가지 분야는 서로 나눌 수 없는 관계에 있다.



통계학의 중요성은 여러 번 말해도 지나치지 않는다. 우리의 삶의 많은 곳에서 통계학이 스며들어 있고, 통계학의 관점을 아는 것과 모르는 것은 엄청난 차이를 나타낸다. 수많은 자료들은 통계를 바탕으로 측정되며 만들어지고 어떤 데이터를 가지고 어떤 방법으로 어떤 상황에서 이 자료가 만들어졌는지를 알아야 그 요지를 정확하게 파악할 수 있다. 이를 통해 우리가 가진 목적에 적합한 자료를 구별하여 취합하거나 선택 또는 만들어야한다.



이 책은 통계학원론서가 아니다. 통계학 중에서도 통계학습에 중점을 둔 책이다. 위에서 말한 것처럼 일반적으로 우리가 사용하는 통계학과 느낌이 다를 수 있다. 하지만, 표본의 중요성, 분포, 모델의 해석력 및 설명력, 검증 등등 현상을 나타내고 파악하며 근거로써 정확한지 데이터를 분석하는 것은 변함이 없기에 이제부터 차근차근 알아보도록 하자.



통계학과 통계학습, 기계학습에 조금이나마 익숙하신 분들은 원서를 사서 보는 것을 추천한다. 책이 흑백인데 색으로 구별된 그래프도 있기도 하고 영어를 자주 사용하기 때문에 이참에 통계학 용어를 영어로 읽는 것도 나쁘지 않다. 그러나 처음 접하시는 분들이면 용어나 개념에 익숙하지 않고 또 영어에 어려움이 더해지기 때문에 진전하기 힘들 수 있다. 그때는 번역본과 원서 PDF를 같이 보면 더 좋다.



이 책의 목차는


  • 1.도입


    • 1.1 통계학습의 개요

    • 1.2 통계학습의 간단한 역사

    • 1.3 표기법과 간단한 행렬 대수

    • 1.4 Lab과 연습문제에 사용된 자료


  • 2.통계학습(Statistical Learning)


    • 2.1 통계학습이란?


      • 2.1.1 f를 추정하는 이유
      • 2.1.2 어떻게 f를 추정하는가?
      • 2.1.3 예측 정확도와 모델 해석력 사이의 절충(trade-off)
      • 2.1.4 지도학습과 비지도학습
      • 2.1.5 회귀와 분류문제

    • 2.2 모델의 정확도 평가


      • 2.2.1 적합의 품질 측정
      • 2.2.2 편향-분산 절충
      • 2.2.3 분류 설정

    • 2.3 Lab:R에 대한 소개 (이건 SKIP하겠다.)


      • 2.3.1 기본명령어
      • 2.3.2 그래프
      • 2.3.3 데이터 인덱싱
      • 2.3.4 데이터 로딩
      • 2.3.5 추가적인 그래프와 수치 요약

    • 2.4 연습문제


  • 3.선형회귀(Linear Regression)


    • 3.1 단순선형회귀


      • 3.1.1 계수추정
      • 3.1.2 계수 추정값의 정확도 평가
      • 3.1.3 모델의 정확도 평가

    • 3.2 다중선형회귀


      • 3.2.1 회귀계수의 추정
      • 3.2.2 몇 가지 중요한 질문

    • 3.3 회귀모델에서 다른 고려할 사항


      • 3.3.1 질적 설명변수
      • 3.3.2 선형모델의 확장
      • 3.3.3 잠재적 문제

    • 3.4 마케팅플랜


    • 3.5 선형회귀와 K-최근접이웃의 비교


    • 3.6 Lab: 선형회귀


      • 3.6.1 라이브러리
      • 3.6.2 단순선형회귀
      • 3.6.3 다중선형회귀
      • 3.6.4 상호작용항
      • 3.6.5 설명변수의 비선형 변환
      • 3.6.6 질적 설명변수
      • 3.6.7 함수의 작성
      • 3.7 연습문제

  • 4.분류(Classification)


    • 4.1 분류의 개요


    • 4.2 왜 선형회귀를 사용하지 않는가?


    • 4.3 로지스틱 회귀(Logistic Regression)


      • 4.3.1 로지스틱 모델
      • 4.3.2 회귀계수의 추정
      • 4.3.3. 예측하기
      • 4.3.4 다중로지스틱 회귀
      • 4.3.5 반응변수의 클래스가 2개보다 많은 로지스틱 회귀

    • 4.4 선형판별분석(Linear Discriminant Analysis)


      • 4.4.1 분류를 위한 베이즈 정리의 사용
      • 4.4.2 선형판별분석(p = 1)
      • 4.4.3 선형판별분석(p > 1)
      • 4.4.4 이차선형판별분석

    • 4.5 분류방법의 비교


    • 4.6 Lab: 로지스틱회귀, LDA, QDA, KNN


      • 4.6.1 주식시장자료
      • 4.6.2 로지스틱 회귀
      • 4.6.3 선형판별분석
      • 4.6.4 이차판별분석
      • 4.6.5 K-최근접이웃
      • 4.6.6 Caravan 보험자료에 적용

    • 4.7 연습문제


  • 5.재표본추출 방법


    • 5.1 교차검증(Cross-Validation)


      • 5.1.1 검증셋 기법(Validation Set Approach)
      • 5.1.2 LOOCV(Leave-One-Out Cross-Validation)
      • 5.1.3 k-fold 교차검증
      • 5.1.4 k-fold 교차검증에 대한 편향-분산 절충
      • 5.1.5 분류문제에 대한 교차검증

    • 5.2 부트스트랩(Bootstrap)


    • 5.3 Lab: 교차검증과 부트스트랩


      • 5.3.1 검증셋 기법
      • 5.3.2 LOO(Leave-One-Out) 교차검증
      • 5.3.3 k-fold 교차검증
      • 5.3.4 부트스트랩

    • 5.4 연습문제


  • 6.선형모델 선택 및 Regularization


    • 6.1 부분집합 선택


      • 6.1.1 최상의 부분집합 선택
      • 6.1.2 단계적 선택
      • 6.1.3 최적의 모델 선택

    • 6.2 Shrinkage 방법


      • 6.2.1 능형회귀
      • 6.2.2 Lasso
      • 6.2.3 조율 파라미터 선택

    • 6.3 차원축소 방법


      • 6.3.1 주성분회귀
      • 6.3.2 부분최소제곱

    • 6.4 고차원의 고려


      • 6.4.1 고차원 데이터
      • 6.4.2 고차원에서 무엇이 문제인가?
      • 6.4.3 고차원에서의 회귀
      • 6.4.4. 고차원에서의 결과 해석

    • 6.5 Lab: 부분집합(서브셋) 선택 방법


      • 6.5.1 최소항의 서브셋 선택
      • 6.5.2 전진 및 후진 단계적 선택
      • 6.5.3 검증셋 기법과 교차검증을 사용한 모델 선택

    • 6.6 Lab2 : 능형회귀와 Lasso


      • 6.6.1 능형회귀
      • 6.6.2 Lasso

    • 6.7 Lab3: PCR과 PLS 회귀


      • 6.7.1 주성분회귀
      • 6.7.2 부분최소제곱

    • 6.8 연습문제


  • 7.선형성을 넘어서


    • 7.1 다항식회귀


    • 7.2 계단함수


    • 7.3 기저함수


    • 7.4 회귀 스플라인


      • 7.4.1 조각별 다항식
      • 7.4.2 제약조건과 스플라인
      • 7.4.3 스플라인 기저 표현
      • 7.4.4 매듭의 수와 위치 선택
      • 7.4.5 다항식회귀와 비교

    • 7.5 평활 스플라인


      • 7.5.1 평활 스플라인의 개요
      • 7.5.2 평활 파라미터 $\lambda$ 의 선택

    • 7.6 국소회귀


    • 7.7 일반화가법모델(Ganeralized Additive Models)


      • 7.7.1 회귀문제에 대한 GAMs
      • 7.7.2 분류문제에 대한 GAMs

    • 7.8 Lab: 비선형모델링


      • 7.8.1 다항식회귀와 계단함수
      • 7.8.2 스플라인(Splines)
      • 7.8.3 GAMS

    • 7.9 연습문제


  • 8.트리기반의 방법


    • 8.1 의사결정트리의 기초


      • 8.1.1 회귀트리
      • 8.1.2 분류트리
      • 8.1.3 트리와 선형모델
      • 8.1.4 트리의 장단점

    • 8.2 배깅, 랜덤포레스트, 부스팅


      • 8.2.1 배깅(Bagging)
      • 8.2.2 랜덤 포레스트(Random Forests)
      • 8.2.3 부스팅(Boosting)

    • 8.3 Lab: 의사결정 트리


      • 8.3.1 분류트리 적합
      • 8.3.2 회귀트리 적합
      • 8.3.3 배깅(Bagging)과 랜덤 포레스트(Random Forests)
      • 8.3.4 부스팅(Boosting)

    • 8.4 연습문제


  • 9.서포트 백터 머신 (Support Vector Machines)


    • 9.1 최대 마진 분류기


      • 9.1.1 초평면은 무엇인가?
      • 9.1.2 분리 초평면(Separating Hyperplane)을 사용한 분류
      • 9.1.3 최대 마진 분류기
      • 9.1.4 최대 마진 분류기의 구성
      • 9.1.5 분류 불가능한 경우

    • 9.2 서포트 벡터 분류기


      • 9.2.1 서포트 벡터 분류기의 개요
      • 9.2.2 서포트 벡터 분류기의 세부사항

    • 9.3 서포트 벡터 머신


      • 9.3.1 비선형 결정경계를 가진 분류
      • 9.3.2 서포트 벡터 머신
      • 9.3.3 심장질환 자료에 적용

    • 9.4 클래스가 2개보다 많은 SVM


      • 9.4.1 일대일 분류
      • 9.4.2 일대전부(One-Versus-All) 분류

    • 9.5 로지스틱 회귀에 대한 상관관계


    • 9.6 Lab: 서포트 벡터 머신


      • 9.6.1 서포트 벡터 분류기
      • 9.6.2 서포트 벡터 머신
      • 9.6.3 ROC 곡선
      • 9.6.4 다중클래스 SVM
      • 9.6.5 유전자 발현 자료에 적용

    • 9.7 연습문제


  • 10.비지도학습(Unsupervised Learning)


    • 10.1 비지도학습의 어려움


    • 10.2 주성분분석


      • 10.2.1 주성분은 무엇인가?
      • 10.2.2 주성분의 다른 해석
      • 10.2.3 PCA에 대해 더 알아보기
      • 10.2.4 주성분에 대한 다른 사용 예

    • 10.3 클러스터링 방법


      • 10.3.1 K-평균 클러스터링
      • 10.3.2 계층적 클러스터링
      • 10.3.3 클러스터링에서의 실질적 이슈

    • 10.4 Lab1: 주성분분석


    • 10.5 Lab2: 클러스터링


      • 10.5.1 K-평균 클러스터링
      • 10.5.2 계층적 클러스터링

    • 10.6 Lab3: NCI60 데이터 예제


      • 10.6.1 NCI60 데이터에 대한 PCA
      • 10.6.2 NCI60 데이터의 관측치에 대한 클러스터링

    • 10.7 연습문제




도입부분부터 시작하자.







본문



1. Introduction



1.1 통계학습의 개요



Summary



  • 통계학습은 데이터에 대한 이해를 돕기 위한 방대한 도구의 집합이다.

  • 지도 학습 : 입력변수를 기반으로 출력변수를 예측하거나 추정하는 통계적모델을 만드는 것

  • 비지도 학습 : 입력변수만을 가지고 자료의 상관관계와 구조를 파악하는 모델을 만드는 것

  • 목적에 따라 연속적 또는 양적 (회귀문제) , 범주적 또는 질적 출력 (분류문제)을 예측한다.


통계학습데이터에 대한 이해를 돕기 위한 방대한 도구 집합을 말한다. 이런 도구에는 지도학습 또는 비지도학습으로 분류될 수 있다. 지도적 통계학습은 하나 이상의 입력(input)변수를 기반으로 출력(output)변수를 예측하거나 추정하는 통계적 모델을 만드는 것이고, 비지도 통계학습은 output변수 없이 input변수만 있으면 자료의 상관관계와 구조를 파악할 수 있다. 자료를 통해 이를 알아보자. 목적에 따라 연속적(continuous) 또는 양적(quantitative)출력값을 예측하거나 기대하는 경우가 있다. 이때 연속적 또는 양적이라고 하는 것은 수치를 나타낸다. 아래에서 살펴 볼 wage(임금) 데이터는 임금을 예측하는 것이다. 즉 수치를 예측하는 것이다.
또한 어떤 경우는 연속적이거나 양적인 출력값이 아닌 범주형 또는 질적 출력값을 예측하고자 할 경우가 있다. 아래 자료의 주식시장 자료는 주식시장의 상승국면일지, 하강국면일지 분류하는 문제를 나타낸 것이다. 이때는 수치가 아닌 up, down 즉 범주형 출력을 원하는 경우이다.



wage 자료





이 자료는 미국의 대서양 지역에 거주하는 한 그룹의 남성들에 대한 임금과 여러 요소들에 대한 그래프이다. 첫 번째 그래프는 나이와 임금의 관계를 나타내는 그래프인데, 자세히 보면 2040세까지는 임금이 상승하다가 4060세에는 유지, 60세부터 떨어지는 것을 볼 수 있다. 그래프에서 수많은 점들은 사람 한명이 가지는 데이터를 시각화한 것이고 파란 줄은 트렌드를 나타낸 것이다. 우리는 특정인의 나이가 주어졌을 때 그 사람의 임금을 추측할 수 있을 것이다. 그러나 나이만을 가지고 정확한 임금을 측정할 순 없다.
그래서 우리는 임금과 관련한 많은 변수들 예컨대 year(임금을 받은 연도), education lavel(교육 수준)들을 분석하여 임금을 예측하기 좋은 데이터인지 파악해야 한다.



주식시장 자료





그래프는 주가지수가 상승하거나 하락한 날에 대한 전날의 S&P지수 변동률을 나타낸 것이다.(왼쪽부터 1,2,3일 전) 그래프를 보면 3개의 그래프가 거의 비슷하다고 볼 수 있다. 즉 연속된 날짜사이의 수익률에 강한 상관성이 없음을 시사한다.





이 그래프는 2001-2004년 데이터에 이차판별분석 (up,down)예측하는 모델을 적합하고 2005년 데이터를 사용하여 주식시장의 하락확률을 예측한 것이다. 평균적으로 시장의 하락에 대한 예측확률은 시장이 실제로 하락한 날이 더 높다. 즉 5년이라는 기간에 대해서는 작게나마 시장의 움직임을 예측한 것이다.



유전자 발현 자료




왼쪽: 2차원 공간 $Z_1$과 $Z_2$에 나타낸 NCI60 유전자 발현 자료. 그래프의 각 포인트는 64개 세포주 중 하나에 해당함
오른쪽: 다른 색깔의 기호를 사용하여 14개 다른 유형의 암을 각각 표시한 것을 제외하면 왼쪽 패널과 동일. 동일한 암 유형에 대응하는 세포주들은 2차원 공간에서 서로 가까이 위치하는 경향이 있음



앞의 두 자료는 입출력변수를 둘다 가지고 있는 경우이다. 유전자 발현 자료는 출력변수가 없는 경우이다. 예컨대 마케팅에서 다수의 현재 또는 잠재적인 고객에 대한 인구통계적 정보가 있을 떄 우리는 이들을 그룹화할 수 있다. 우리는 이를 클러스터링(clustering)문제라고 한다.


위 그림의 왼쪽 패널은 64개 세포주 각각을 단지 두개의 수 $Z_1$과 $Z_2$를 사용하여 나타낸 것이다. $Z_1$과 $Z_2$는 데이터의 처음 두 개의 주성분이며 이는 뒤에서 더 자세히 다룰 것이다. 중요한 점은 유전자 데이터(input)만을 가지고 유형을 그룹지어서 새로운 정보를 알아 낸 것이다. 입력데이터만 가지고 데이터의 상관관계와 구조를 알아낸 것이다.



1.2 통계학습의 간단한 역사



통계학습이란 용어는 상당히 새로운 것이지만, 이 개념들은 오래전에 개발되었다. 19세기 초반에 르장드르(Legendre)와 가우스(Gauss)는 최소 제곱법에 대한 논문을 발표했으며 여기엔 선형회귀로 알려진 형태를 구현했다. 이 방법으로 양적 값을 예측하는데 사용되었는데, 질적 데이터를 예측하기 위해 피셔(Fisher)는 1936년 선형판별분석(Linear discriminant analysis)을 제안했다. 1940년대에는 로지스틱회귀를, 1970년대 초, 넬더(Nelder)와 웨더번(Wedderburn)가 전체 통계학습방법들에 대한 일반화된 선형모델(generalized linear model)이란 용어를 만들었고 선형회귀와 로지스틱 회귀는 특수한 경우로 여기에 포함되었다.


1970년대 말까지 많은 기법들이 개발되었는데 대부분이 선형적인 방법들이었다. 당시에는 비선형적 상관관계를 적합하는 것에 계산적으로 한계가 있었기 때문이다. 1980년에 이르러 계산 기술이 충분히 발전하면서 비선형적 방법들도 계산가능하게 되었다. 1980년대 중반 브라이먼(Breiman), 프리드먼(Friedman), 올쉔(Olshen), 스톤(Stone)은 분류 및 회귀 나무(classification and regression tree)를 도입하였고, 이때 모델 선택을 위한 교차검증을 포함하여 처음으로 상세하고 실질적인 구현의 유용성에 대해 알렸다. 해스티(Hastie)와 티브시라니(Tibshirani)는 1986년 일반화된 선형모델의 비선형적 확장에 대해 일반화가법모델이란 용어를 만들었고 이 또한 구현되었다.


그 후 기계학습과 다른 기법의 출현으로 영향을 받은 통계학습은 통계학의 새로운 한 분야로 부상하였고 지도학습 및 비지도학습 모델링과 예측에 집중하였다.



1.3 표기법과 간단한 행렬대수



우리가 데이터를 나타낼 때 행렬을 많이 사용한다. 예컨대 wage자료에는 3000명의 사람들에 대한 12개(age, year, education level ...)의 변수로 구성되어 있다. 이때 데이터의 수는 n, 변수는 p로 표현하며 wage 데이터는 $n = 3000$, $p = 12$ 라고 할 수 있다. 일반적으로 i번째 관측지에 대한 j번째 변수를 표현할 때, $x_{ij}$로 나타내며, $i = 1,2,3,4,...,n$ 이고 $j = 1,2,...,p$이다. 행렬 $X$에 대해 $n \times p$ 라고 하며, 이 행렬의 (i,j)번째 원소는 $x_{ij}$이다. 이때 X를


$$X = \left[\begin{array}{rrr}
x_{11} & x_{12} & ... & x_{1p}\\
x_{21} & x_{12} & ... & x_{2p}\\
\vdots & \vdots & \vdots & \vdots\\
x_{n1} & x_{n2} & ... & x_{np}\\
\end{array}\right]$$



행을 나타낼 때는 $x_1,x_2,x_3,...,x_n$으로 나타내는데 이를 행렬로 나타내면



$$x_i = \left[\begin{array}{rrr}
x_1\\
x_2\\
\vdots\\
x_n\\
\end{array}\right]$$



열로 나타낼 때는 $x_1,x_2,...,x_p$로 나타내고 각각의 길이는 n인 벡터이다.


$$x_j = \left[\begin{array}{rrr}
x_{1j}\\
x_{2j}\\
\vdots\\
x_{np}\\
\end{array}\right]$$


이때 예측된 값을 나타내는 $y_i$를 사용할 때에는 n개의 관측치에 대하여


$$y_j = \left[\begin{array}{rrr}
y_1\\
y_2\\
\vdots\\
y_n\\
\end{array}\right]$$


으로 나타낼 수 있다. 그러면 관측된 데이터는 ${(x_1,y_1),(x_2,y_2),(...,...),(x_n,y_n)}$으로 구성되고 여기서 $x_i$의 길이는 p인 벡터가 된다.


어느 경우에는 두 행렬을 곱하는 연산이 필요한데 A와 B의 곱은 AB로 나타낸다.


$$A = \left(\begin{array}{rrr}
1 & 2\\
3 & 4\\
\end{array}\right), \quad B = \left(\begin{array}{rrr}
5 & 6\\
7 & 8\\
\end{array}\right)$$


그러면,



$$AB = \left(\begin{array}{rrr}
1 & 2\\
3 & 4\\
\end{array}\right)\left(\begin{array}{rrr}
5 & 6\\
7 & 8\\
\end{array}\right) = \left(\begin{array}{rrr}
1\times5 + 2 \times 7 & 1 \times 6 + 2 \times 8\\
3 \times 5 + 4 \times 7 & 3 \times 6 + 4 \times 8\\
\end{array}\right) = \left(\begin{array}{rrr}
19 & 22\\
43 & 50\\
\end{array}\right) $$



한 가지 주의할 점은 $i \times j$, $n \times p$라는 두 행렬을 곱한다고 할 때 j와 n이 같아야 한다.







오늘은 도입부 1. Introduction을 정리하였다. 다음은 2. 통계학습에 대하여 알아보도록 하자.😚


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함