모도리는 공부중

20.12.31. 머신 러닝 본문

728x90
반응형

오늘부터의 수업은 이명훈쌤이 진행합니다.

 

 

※머신러닝 진행과정※

  1. 문제정의 (비즈니스 목적 정의, 현재 솔루션 구성파악)
  2. 데이터수집(Web Crawling)
  3. 데이터 전처리 (단위변환 새로운 속성 추출, 인코딩)
  4. EDA(탐색적 데이터 분석) (특성간의 상관관계 파악)
  5. 모델 선택 및 하이퍼파라미터 튜닝(직접 값을 변경시켜주어야 함) (ex. KNN : 이웃의수 조정:n_neighbors=n)
  6. 모델 학습(fit)
  7. 모델 평가(정확도, 재현율 등 확인)

 

Decision Tree (결정트리)

  • 타깃 값이 한 개인 리프 노드를 순수 노드라고 한다.
  • 모든 노드가 순수 노드가 될 때 까지 학습하면 복잡해지고 과대적합이 된다.
  • 새로운 데이터 포인트가 들어오면 해당하는 노드를 찾아 분류라면 더 많은 클래스를 선택하고, 회귀라면 평균을 구한다.

 

Decision Tree(결정트리) 과대적합 제어

  • 노드 생성을 미리 중단하는 사전 가지치기(pre-pruning)와 트리를 만든후에 크기가 작은 노드를 삭제하는 사후 가지치기 (pruning)가 있다. (sklearn은 사전 가지치기만 지원)
  • 트리의 최대 깊이나 리프 노드의 최대 개수를 제어
  • 노드가 분할 하기 위한 데이터 포인트의 최소 개수를 지정

 

주요 매개변수(Hyperparameter) - scikit-learn의 경우

  • max_depth : 트리의 최대 깊이 (값이 클수록 모델의 복잡도가 올라간다.)
  • max_leaf_nodes : 리프 노드의 최대 개수
  • min_samples_leaf : 리프 노드를 구성하는 최소 샘플의 개수

장점

  • 만들어진 모델을 쉽게 시각화할 수 있어 이해하기 쉽다. (white box model)
  • 각 특성이 개별 처리되기 때문에 데이터 스케일에 영향을 받지 않아 특성의 정규화나 표준화가 필요 없다.
  • 트리 구성시 각 특성의 중요도를 계산하기때문에 특성 선택 (Feature selection)에 활용될 있다.

 

단점

  • 훈련(train)데이터 범위 밖의 포인트는 예측 할 수 없다. (ex : 시계열 데이터)
  • 가지치기를 사용함에도 불구하고 과대적합되는 경향이 있어 일반화 성능이 좋지 않다.

한 번에 하나의 영역에 대해서만 질문을 던지고 직선으로 나누기 때문에 선형모형에서는 적합하지 않다.

왼쪽의 2개는 선형모델로 구분, 오른쪽 2개는 decision tree(의사결정나무)로 구분한 것이다.

하나의 네모가 하나의 영역을 구분. 오른쪽 x쳐진 모형은 판단에 따라 잘 구분되었다고 볼 수도 있겠지만 정확히 구분되었다고 볼 수 없다. 결국, decision tree를 통해서 이것을 잘 구분하려면 여러번의 질문을 던져야만 할 것이다.

선형모델은 회귀와 분류 모두 사용이 가능하다. (다음주쯤 배울 예정)

 

 

Decision Tree (트리 모형으로 Yes/no를 통해서 결정을 해 분류해주는 모델)

구조:
-root note (첫질문)
- internal node (중간 질문들)
-leaf node(마지막 질문. 만약 타깃이 하나만 있다면 순수 노드라고 한다.)

순수 노드가 많으면 좋지 않다. 왜냐면 복잡해지고 과대적합이 되기 쉽기 때문이다 그래서 가지치기를 해서 최대 개수를 제한한다.

주요 매개변수 :
-max_depth (트리의 최대 깊이)
-max_leaf_nodes (노드의 최대 개수)
-min_samples_leaf (리프 노드를 구성하는 최소 샘플의 개수)

장점:
-쉽게 시각화가 가능하다
-각 특성이 개별 처리 되어서 정규화나 표준화 불필요
-트리 구성시 각 특성의 중요도를 계산해서 특성 선택에 활용 가능

단점:
-트리 범위 밖은 예측 불가
-가지치기를 해도 과대적합이 빈번히 발생
-선형모형에는 적합하지 않음

728x90
반응형
Comments