Table of Contents
특성의 수를 줄이는 방법에는 여러 가지가 있습니다. 특성 선택(feature selection)과 차원 축소(dimensionality reduction)를 통해 불필요한 특성을 제거하거나 변환할 수 있습니다. 아래에 몇 가지 방법을 소개합니다.
1. 특성 선택 (Feature Selection)
1.1. 필터 방식 (Filter Method)
통계적 방법을 사용하여 각 특성의 중요도를 평가하고, 중요도가 낮은 특성을 제거합니다.
분산 임계값 (Variance Threshold): 분산이 낮은 특성을 제거합니다.
from sklearn.feature_selection import VarianceThreshold selector = VarianceThreshold(threshold=0.1) X_reduced = selector.fit_transform(X)
상관 계수 (Correlation Coefficient): 특성 간의 상관관계를 분석하여 상관관계가 높은 특성 중 하나를 제거합니다.
1.2. 래퍼 방식 (Wrapper Method)
특정 모델을 사용하여 반복적으로 특성을 선택합니다.
순방향 선택 (Forward Selection): 처음에 특성이 없는 상태에서 하나씩 추가하여 모델 성능이 개선되는 특성을 선택합니다.
후진 제거 (Backward Elimination): 모든 특성을 포함한 상태에서 하나씩 제거하여 모델 성능에 미치는 영향을 평가합니다.
RFE (Recursive Feature Elimination): 모델을 학습시키고, 가장 중요도가 낮은 특성을 반복적으로 제거합니다.
from sklearn.feature_selection import RFE from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() selector = RFE(model, n_features_to_select=10) X_reduced = selector.fit_transform(X, y)
1.3. 임베디드 방식 (Embedded Method)
모델 학습 과정에서 특성 선택을 수행합니다.
Lasso 회귀 (Lasso Regression): L1 정규화를 사용하여 중요하지 않은 특성의 계수를 0으로 만듭니다.
from sklearn.linear_model import Lasso lasso = Lasso(alpha=0.1) lasso.fit(X, y) X_reduced = X[:, lasso.coef_ != 0]
2. 차원 축소 (Dimensionality Reduction)
2.1. PCA (Principal Component Analysis)
고차원 데이터를 저차원으로 변환하여 중요한 성분만을 유지합니다.
from sklearn.decomposition import PCA
pca = PCA(n_components=10)
X_reduced = pca.fit_transform(X)
2.2. LDA (Linear Discriminant Analysis)
분류 문제에서 클래스 간 분산을 최대화하는 축을 찾습니다.
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
lda = LDA(n_components=2)
X_reduced = lda.fit_transform(X, y)
3. 특성 엔지니어링 (Feature Engineering)
도메인 지식을 활용하여 새로운 유용한 특성을 생성하거나, 불필요한 특성을 제거합니다.
4. 특성 중요도 평가
랜덤 포레스트와 같은 트리 기반 모델을 사용하여 각 특성의 중요도를 평가하고, 중요도가 낮은 특성을 제거합니다.
model = RandomForestClassifier()
model.fit(X, y)
importances = model.feature_importances_
# 중요도 기준으로 특성 선택
import numpy as np
important_indices = np.argsort(importances)[-10:] # 상위 10개 특성 선택
X_reduced = X[:, important_indices]
결론
위의 방법들을 사용하여 특성의 수를 줄일 수 있습니다. 데이터와 문제의 특성에 맞게 적절한 방법을 선택하여 적용해 보세요. 필요하다면 여러 방법을 조합하여 사용할 수도 있습니다.
'ML' 카테고리의 다른 글
Why does GluonTS perform well? (1) | 2024.06.09 |
---|---|
tsfresh, sktime, darts, gluonts, prophet: which is the best performance? (0) | 2024.06.09 |
t-SNE(t-Distributed Stochastic Neighbor Embedding) (3) | 2024.06.02 |
차원의 저주 Curse of Dimensionality, 주성분 분석 PCA (1) | 2024.06.02 |
데이터 어노테이션(data annotation) (1) | 2024.06.02 |
- Total
- Today
- Yesterday
- speaking
- 코딩테스트
- Numpy
- recursion #재귀 #자료구조 # 알고리즘
- clustering
- classification
- 파이썬
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- LIST
- t5
- PEFT
- RAG
- Github
- 해시
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- Lora
- Python
- English
- LLM
- 오블완
- 리스트
- Array
- git
- nlp
- Hugging Face
- 티스토리챌린지
- Transformer
- cnn
- 손실함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |