hyeori

유용한 특성 선택 본문

머신러닝

유용한 특성 선택

혜오리이 2024. 5. 8. 22:41
  • 과대적합(overfitting) : 모델이 테스트 데이터셋보다 훈련 데이터셋에서 성능이 훨씬 높다.

→ 더 많은 훈련 데이터

→ 규제를 통해 복잡도를 제한

→ 파라미터 개수가 적은 간단한 모델 선택

→ 데이터 차원을 줄이기

 

4.5.1 모델 복잡도 제한을 위한 L1 규제와 L2 규제

- L2 규제 (Ridge) :

- L1 규제 (Lasso) :

가중치 제곱 → 가중치 절댓값, 희소한 특성 벡터를 만든다. 대부분의 특성 가중치가 0이 된다.(고차원 데이터의 경우), 훈련 샘플보다 관련 없는 특성이 더 많은 경우

 

4.5.2 L2 규제의 기하학적 해석

L2 규제 ) 비용함수 + 패널티 항

목표 : train data에서 비용함수를 최소화하는 가중치 값의 조합을 찾자! (타원 중심 포인트)

4.5.3 L1 규제를 사용한 희소성

  • C 가 커질수록 규제가 풀린다. C = 1/lambda​

4.5.4 순차 특성 선택 알고리즘

일부만 선택

- 전진선택법

- 후진선택법

차원 축소 기법

  • 특성 선택 (feature selection)
  • 특성 추출 (feature extraction)
  1. 순차 후진 선택 (Sequential Backward Selection, SBS)
    • 전체 특성에서 순차적으로 특성 제거
  # 주요 코드 
  while dim > self.k_features:
            scores = []
            subsets = []

            for p in combinations(self.indices_, r=dim - 1):
                score = self._calc_score(X_train, y_train, 
                                         X_test, y_test, p)
                scores.append(score)
                subsets.append(p)

            best = np.argmax(scores) # 점수 최대값
            self.indices_ = subsets[best] # index 넣기 
            self.subsets_.append(self.indices_)
            dim -= 1

            self.scores_.append(scores[best]) # 최적 조합의 정확도 점수를 리스트에 모은다.
        self.k_score_ = self.scores_[-1]

        return self