728x90
1. 주성분 분석
2. 0에 가까운 분산을 가지는 변수 제거
분산이 0에 가까운 변수는 제거해도 큰 영향이 없음.
nearZeroVar()함수
https://www.rdocumentation.org/packages/caret/versions/6.0-86/topics/nearZeroVar
where
'saveMetrics=FALSE'속성: 예측변수의 컬럼위치에 해당하는 정수 벡터
'saveMetrics=TRUE'속성: 컬럼을 가지는 데이터프레임
freqRatio: 가장 큰 공통값 대비 두번째 큰 공통값의 빈도의 비율
percentUnique: 데이터 전체로 부터 고유 데이터의 비율
zeroVar: 예측변수가 오직 한개의 특이값을 갖는지 여부에 대한 논리 벡터
nzv: 예측변수가 0에 가까운 분산예측 변수인지 여부에 대한 논리 벡터
실습.
install.packages("caret")
library(caret)
install.packages("mlbench")
library(mlbench)
nearZeroVar(iris, saveMetrics=TRUE)
data(Soybean)
head(Soybean)
# 0에 가까운 분산을 가지는 변수의 존재 여부 확인
nearZeroVar(Soybean, saveMetrics=TRUE)
nzv = 'TRUE' 인 leaf.mild, mycelium, sclerotia 변수를 제거 해도 큰 영향이 없다.
3. 상관관계가 높은 변수 제거
상관관계가 높은 컬럼을 제외
findCorrelation()함수
https://www.rdocumentation.org/packages/caret/versions/6.0-88/topics/findCorrelation
실습.
library(caret)
library(mlbench)
data(Vehicle)
head(Vehicle)
# 상관관계 높은 열 선정
findCorrelation(cor(subset(Vehicle, select=-c(Class))))
# 상관관계가 높은 열끼리 상관관계 확인
cor(subset(Vehicle, select=-c(Class))) [c(3,8,11,7,9,2), c(3,8,11,7,9,2)]
# 상관관계 높은 열 제거
Cor_Vehicle <- Vehicle[,-c(3,8,11,7,9,2)]
findCorrelation(cor(subset(Cor_Vehicle, select=-c(Class))))
head(Cor_Vehicle)
4. 카이 제곱 검정을 통한 중요 변수 선발
카이제곱검정을 실행하여 중요 변수 선발
실습.
install.packages("FSelector")
library(FSelector)
library(mlbench)
data(Vehicle)
#카이 제곱 검정으로 변수들의 중요성 평가
(cs <- chi.squared(Class ~., data=Vehicle))
#변수 중에서 중요한 5개 선별
cutoff.k(cs,5)
'데이터분석 > 머신러닝기반' 카테고리의 다른 글
서포트벡터머신(Support Vector Machine) (1) | 2022.12.12 |
---|---|
앙상블(Ensemble) (0) | 2022.12.12 |
의사결정 나무(Decision Tree) (0) | 2022.12.12 |
다차원 척도법(Multi-Dimensional Scaling) (0) | 2022.12.12 |
베이지안(Baysian) (1) | 2022.12.12 |