카테고리 없음

[패스트캠퍼스 수강 후기] R 인강 100% 환급 챌린지 32차 미션

열린세계 2020. 9. 10. 00:04

[패스트캠퍼스 수강 후기] R 인강 100% 환급 챌린지 32차 미션

 

패스트캠퍼스의 강의 중, 프로젝트와 함께 배우는 R 데이터 분석 올인원 패키지 Online를 수강하고 있습니다.

https://bit.ly/2DKMGNx 

내용을 복습도 할 겸, 미션에도 참가할 겸, 블로그에 매일 매일 정리해 보게 되었습니다.

 

오늘은 32회차 미션!

Part 2) [R로 하는 데이터 분석] 데이터 분석 기본기 익히기

  1. 10. Ch 02. k-Nearest Neighbor - 04. k-Nearest Neighbor 예제 실습

  2. 11. Ch 03. Logistic Regression - 01. Logistic Regression의 개념 이해

 

  1. 10. Ch 02. k-Nearest Neighbor - 04. k-Nearest Neighbor 예제 실습

    1. 와인데이터를 가지고 실습

      1. 와인에는 1, 2, 3 3가지 클래스가 있음

      2. 여러 변수를 이용하여 클래스를 판별할 예정

      1. 현재 숫자로만 적혀 있음

      2. 모두 단위가 다르다.

        1. 마그네슘은 100 전후

        2. ash는 2~3 정도의 값

    2. 데이터 불러오기

      1. caret 설치

      2. read.csv로 가져옴

      3. as.factor(rawdata$Class)

        1. 와인은 1, 2, 3이라는 '숫자'로 표현되었지만 실제 숫자가 아니고 명모견수

          1. 이럴 때, as.factor라고 해주는 것

        1. as.factor를 사용했기에 Class는 factor라고 되어 있음을 확인 가능

    3. 테스트 데이터 분할

      1. 전체 데이터를 학습 데이터와 테스트 데이터로 분할하는 과정

      2. set.seed(2020)

        1. 시드 설정

        2. 데이터를 자를 때 순서를 유지한 채 슥 나누지 않음

        3. 랜덤하게 나누게 된다.

          1. 다만 랜덤이지만, 향후에도 같은 순서의 랜덤으로 가져올 수 있게 하기 위한 값

            1. 임의의 숫자를 넣으면 됨 (단지 여기선 2020년이라서 2020을 넣음)

      3. sample()

        1. 샘플을 뽑는데, 여기서 전체 데이터 개수(nrow() 중에 0.7 (70%)를 뽑겠다.

        2. sample(100, 70)

          1. 100개 중 70개를 뽑겠다.

      4. sort는 정렬

      5. train에는 70%만 추가 (train <- rawdata[datatotal,]

      6. test에는 나머지 rawdata[-datatotal, ] 상태) 문법 공부 따로 해야할 듯

      7. 1~13까지는 속성

      8. 14는 타겟

    4. 이제 실제로 해보자.

        1. 모형을 만들자

          1.  

            1. 1부터 10까지 KNN을 할 것

            2. ctrl을 trControl로 사용

          2. 결과를 보자.

            1. knnfit

              1. 124개 sample을 사용했고

              2. 13가지 피처로 예측 

              3. 3가지 클래스를 판별

              4. 결과에 accuracy와 kappa가 표시됨

              5. 가장 높은 정확도가 5일 때라고 표시됨

            2. plot(knnfit)

              1. 시각화

                1. k=5일 때 정확도가 가장 높음을 시각적으로 활용 가능

        2. 이제 만들어진 모형으로 예측을 해보자.

          1. predict()라는 함수를 사용

            1. 인자로 새로운 데이터를 입력

          2. confusionMatrix() 예측과 실제에 대한 분할표 

            1. 우측과 같이 붕할표가 나오고.. 대부분을 맞춤.

              1. 틀린 건 3개뿐.

                1. 정확도 94.4%

            2. 아래에 있는 여러가지 sensitivity등등의 값들도 표시되고..

        3. 변수 중요도를 확인

          1. 13개의 피처를 썼는데, 이 중에 어떤 피처가 중요한 지 확이 ㄴ가능

            1. varIm()

              1. 각 변수 별로 중요도가 표시됨

  2. 11. Ch 03. Logistic Regression - 01. Logistic Regression의 개념 이해

    1. 앞서 선형 regression을 다루었는데, 이제는 Logistic regression을 다뤄보자.

      1. 선형 회귀분석과 로지스틱 회귀분석의 차이

        1. 선형 회귀 분석

          1. -무한대 < 종속변수 < 무한대 --> 어떤 값이든 가질 수 있음

            1. 종속변수 = 연속형 숫자 

              1. 즉, 범주형 변수에는 적용 불가!

        2. 로지스틱 회귀분석

          1. 종속변수값에 제한이 있음

            1. 즉, 종속변수가 가능한 범위가 있음

              1. 가질 수 없는 값이 존재

            2. 종속변수 = 범주형 변수

              1. 연속이 아님

          1. 즉, 로지스틱 회귀분석의 종속변수에는 '제한이 있다'가 제일 중요한 개념

      2. 종속변수가 [0. 1]의 범위라는 것은

        1. 분류일 경우, 0 또는 1일 수도 있고

        2. 예측일 경우, 1일 확률을 예측하는 것일 수도 있음

    2. 로지스틱 회귀분석 탄생 배경

      1. 선형회귀 vs. 로지스틱 회귀분석

        1. 선형회귀 분석은 종속변수가 -무한대 < 종속변수 < 무한대 (타겟 y는 어떤 값이든 가질 수 있음)

          1. 종속변수 = 연속변수

        2. 로지스틱 회기ㅜ분석

          1. 종속변수에 제한이 있음

            1. 가능한 범위가 있다.

            2. 즉, 가질 수 없는 값이 있다.

            3. 예를 들어 y가 0<y<1 이면, 2나 3은 불가

          2. 종속변수 = 범주형일 때 사용

            1. 연속변수일 때도 사용하긴 함

      2. 0 < 종속변수  < 1 이라면?

        1. 0은 0%, 1은 100%라고 볼 수도 있음

        2. 분류라고 보면

          1. 0이냐 1이냐 판별

        3. 예측이라고 보면

          1. 1일 확률: 0.5 (50%) 0.7 (70%)

        1. 선형회귀에서는

          1. z값에 제한이 없음!

          2. y가 아닌 z라고 하는 이유는 나중에 y를 다른 목적으로 쓰기 때문!

        2. 그런데, z값에 제한을 두고 싶을 때는 어떻게 하는가?

      3. z값에 제한이 있게끔 하기 위해 식을 구성해 보자.

        1. y라는 변수로 아래와 같이 표현해보자

          1. 이때, 아래에 노랗게 표현한 식을 '시그모이드 함수'라고 함

        2. 위의 식은 좀 지저분하기에, log (ln)을 이용하여 아래와 같이 표현

      4. y =π(x)라고 표현할 것

        1. p(Y=1 | X = x)

          1. x가 주어졌을 때, Y가 1일 확률

        1. 위와 같이 표현.

        2. logit(π(x))이라는 표현을 사용

          1. (log (y/(1-y))를 이렇게 정의한 것.

          2. 이 식을 오즈비라고 부름 (odds ratio)

            1. 양성 확률은 음성 확률의 몇 배인가?

              1. π(x) : 1일 확률 (양성 확률)

              2. 1-π(x): 0일 확률 (음성 확률)

        3. logit(π(x)) 로 표현할 지, y로 표현할 지는 그때그때 알아서 하면 됨

    3. x > 0.5일 때부터 기울기가 커짐

      1. 즉, 확률의 변화가 커짐

        1. 0.2->0.3이 되었을 때는 확률 변화가 적지만

        2. 0.5->0.6일 때는 확률변화가 크다.

    4. 우리가 0과 1을 구분하는 문제에서, 몇부터 1이라고 판별할까?

      1. 그래서 보통 0.5를 기준으로 함

      2. 즉, 분류 문제에서 0, 1 을 판별할 때 사용

 

와인 데이터를 가지고 실습한 것.

꼭 해봐야할 것 같고

 

로지스틱 회귀분석은 분류에 사용하는 것.

분류에 이를 어떻게 적용할 지를 고민해 보자.

시그모이드 함수라는 용어도 기억!