[혼자 공부하는 머신러닝 + 딥러닝] 11강_로지스틱 회귀로 와인 분류하기 & 결정 트리

 11강_로지스틱 회귀로 와인 분류하기 & 결정 트리


로지스틱 회귀로 와인 분류하기 

  • class 가 타깃값
  • 레드 와인과 화이트 와인을 구분하는 이진 분류 문제 (화이트가 양성)
  • info()
    • 데이터프레임의 각 열의 데이터 타입과 누락된 데이터가 있는지 확인하는데 유용. 
  • 누락된 값이 있을때
    • 그 데이터를 버리거나 평균값으로 채운 후 사용가능
    • 두가지 모두 시도해보는 것 추천.
    • 훈련 세트의 평균값으로 테스트 세트의 누락된 값을 채워야 함. 
  • describe() 
    • 열에 대한 간략한 통계 출력
    • 최소, 최대, 평균값 등 
    • 스케일 확인 가능 (Q)
  • StandardScaler 클래스를 사용해 특성을 표준화 


설명하기 쉬운 모델과 어려운 모델

  • 결정트리 모델이 이유를 설명하기 쉬움. 


결정 트리

  • 사이킷런의 DecisionTreeClassifier 클래스 사용해서 결정 트리 모델 훈련
  • 예측방법: 리프 노드에서 가장 많은 클래스가 예측 클래스가 됨. 
  • fit() 모델 훈련 / score() 정확도 평가 
  • random_state 지정이유
    • 사이킷런의 결정 트리 알고리즘은 노드에서 최적의 분할을 찾기 전에 특성의 순서를 섞기 때문에 약간의 무작위성이 주입되는데 실행할 때마다 점수가 조금씩 달라짐. (결과가 같도록 유지하기 위해 지정한것이고, 실전에서는 불필요)
  •  plot_tree() 
    • 결정 트리를 이해하기 쉬운 트리 그림으로 출력해 줌
  • 노드
    • 결정 트리를 구성하는 핵심 요소 (루트 / 리프 노드)
    • 훈련 데이터의 특성에 대한 테스트를 표현 
    • 가지는 테스트의 결과를 나타내며 일반적으로 하나의 노드는 2개의 가지를 가짐
  • 만약 결정 트리를 회귀 문제에 적용하면 리프 노드에 도달한 샘플의 타깃을 평균하여 예측값으로 사용함. (DecisionTreeRegressor)
  • 알고리즘
    • 불순도 기준을 사용해 정보 이득이 최대가 되도록 노드를 분할함. 
    • 순수하게 나눌수록 정보 이득이 커짐. 
    • 새로운 샘플에 대해 예측할 때에는 노드의 질문에 따라 트리를 이동. 
    • 마지막에 도달한 노드의 클래스 비율을 보고 예측을 만듬. 
  • 결정 트리는 표준화 전처리 과정이 필요 없음. 
  • 결정 트리는 어떤 특성이 가장 유용한지 나타내는 특성 중요도를 계산해 줌. 
  • 특성 중요도
    • 결정 트리 모델의 feature_importances_속성 
    • 각 노드의 정보 이득과 전체 샘플에 대한 비율을 곱한 후 특성별로 더하여 계산
    • 결정 트리의 특성 중요도를 특성 선택에 활용할 수 있음. 


불순도

  • gini 는 지니 불순도를 의미. 
  • 결정트리 모델은 부모 노드와 자식 노드의 불순도 차이가 가능한 크도록 트리를 성장시킴
  • 정보 이득
    • 부모와 자식 노드 사이의 불순도 차이


가지치기

  • 가지치기를 하지 않으면 훈련 세트에는 아주 잘 맞겠지만 테스트 세트에서 점수는 그에 못 미침. (일반화가 잘 안 될 것 같다고 말함)
  • 자라날 수 있는 트리의 최대 깊이를 지정. 
  • DecisionTreeClassifier 클래스의 max_depth 매개변수 지정

-실전에서 결정 트리를 사용할 때는 많은 특성을 사용하고 트리의 깊이도 깊어짐. 


이해하기 쉬운 결정 트리 모델

  • 이진 분류 로지스틱 회귀 모델은 이해하기 힘듬
  • 결정 트리 사용
    • 특성 추가 하지 않고도 성능이 더 좋음. 
    • 깊이가 깊지 않다면 설명도 쉬움. 
    • 불순도, 정보 이득 이해 
  • 결정 트리는 많은 앙상블 학습 알고리즘의 기반이 됨. 
  • 앙상블 학습은 신경망과 함께 가장 높은 성능을 내기 때문에 인기가 높은 알고리즘임. 


키워드로 끝내는 핵심 포인트

  • 결정트리
    • 예 / 아니오에 대한 질문을 이어나가면서 정답을 찾아 학습하는 알고리즘
    • 비교적 예측 과정을 이해하기 쉽고 성능도 뛰어남. 
  • 불순도
    • 결정 트리가 최적의 질문을 찾기 위한 기준
    • 사이킷런은 지니 불순도와 엔트로피 불순도를 제공함. 
  • 정보 이득
    • 부모 노드와 자식 노드의 불순도 차이.
    • 결정 트리 알고리즘은 정보 이득이 최대화되도록 학습함. 
  • 가지치기
    • 결정 트리의 성장을 제한하는 방법 (제한 없이 성장하면 훈련 세트에 과대적합되기 쉬움.)
  • 특성 중요도 
    • 결정 트리에 사용된 특성이 불순도를 감소하는데 기여한 정도를 나타내는 값
    • 특성 중요도를 계산할 수 있는 것이 결정 트리의 또 다른 큰 장점


핵심 패키지와 함수

  • pandas
    • info()
      • 데이터프레임의 요약된 정보를 출력 
      • 인덱스와 컬럼 타입을 출력하고 널(null)이 아닌 값의 개수, 메모리 사용량을 제공. 
      • verbose 매개변수 (True, False)
    • describe()
      • 데이터프레임 열의 통계 값 제공
      • 수치형일 경우 최소, 최대, 평균, 표준편차와 사분위값 등이 출력
      • 문자열 같은 객체 타입의 열은 가장 자주 등장하는 값과 횟수 등이 출력됨.
      • percentiles 매개변수 (백분위수 지정)
  • scikit-learn
    • DecisionTreeClassifier 
      • 결정 트리 분류 클래스
      • criterion / splitter / max_depth / min_samples_split / max_features 
    • plot_tree() 
      • 결정 트리 모델 시각화
      • max_depth / feature_names / filled 


확인 문제

  • 다음 중 결정 트리의 불순도에 대해 옳게 설명한 것을 모두 고르세요. 
  • 결정 트리에서 계산한 특성 중요도가 저장되어 있는 속성은 무엇인가요?




댓글

이 블로그의 인기 게시물

[혼자 공부하는 머신러닝 + 딥러닝] 17강_인공 신경망: 간단한 인공 신경망 모델 만들기

[솔트룩스] 새싹 인공지능 응용 SW 개발자 양성과정 | 24일차 | 5. 머신러닝 (2)

[혼자 공부하는 머신러닝 + 딥러닝] 10강_확률적 경사 하강법 알아보기