초보자의 특징 공학
나는 점차적으로 갱신하고 싶다!!
이 보도의 독법
프로젝트마다 GiitHub에 Juptyter-notebook을 올리고 있으니 보면서 글을 읽어주시기 바랍니다.
특징 공정
Microsoft Azure의 정의에 따라
특징 공학에서 학습 과정을 추진하는 데 도움이 되는 원시 데이터에서 특징을 창조하고 학습 알고리즘의 예측력을 향상시키려고 한다.피쳐 엔지니어링 및 선택은 TDSP의 일부입니다.
- 특징 공학: 본 과정은 데이터에 있는 기존의 원시적 특징에서 관련 특징을 생성하여 학습 알고리즘의 예측 능력을 향상시키고자 한다.
- 특징 선택: 이 과정은 원시 데이터가 가지고 있는 관건적인 서브집합을 선택하여 훈련 문제의 차원을 줄인다.
이런 방법은 더욱 높은 정밀도의 모델을 구축하여 식별 결과가 쉽게 설명될 수 있는 환경을 만들기 위한 것이다.
데이터 설명
이번에 나는 두 가지 데이터 집합을 사용한다.
이번에 나는 두 가지 데이터 집합을 사용한다.
Kuzushiji-MNIST
는 일본어의 붕괴 문자를 MNIST와 같은 문자 이미지로 분류하는 데이터 세트입니다.Titanic
카글로 유명한 타이타닉호 생존자 분류 문제특징 공정에서 이것은 매우 효과적인 방법이다.
特徴の重要度
를 얻을 수 있기 때문에 직관적으로 이해할 수 있다Titanic
등 의미 있는 특징에서 효과적이다.Pearson Correlation | 필슨 상관 관계
일반적으로 통계에서 사용되는相関係数
. 각 특징과 교사 라벨의 상관수를 각각 취하여 의미 있는 특징을 식별하는 기법을 선택한다. 아래의 사이트는 개념을 간단명료하게 설명한다.
'상관수'가 뭐예요? -알기 쉬운 의미, 장점과 단점을 간단명료하게 설명하다.
GitHub
House Detecting: Machine-Learning/Pearson_Correlation.ipynb at master · sasayabaku/Machine-Learning
How to
상관계수의 획득 방법
상세한 상황은 GiitHub의Cal Correlations
에서 아래 그림과 같이 각 특징에 따라 특징과 교사 라벨의 선형 회귀를 진행한다.
(데이터의 분산이 심해서 이 회귀는 미묘해 보인다...)
이 네 가지는 이번 시도의 데이터 중 높은 특징이다.
상관수 높은 데이터 얻기
GiitHubPlot Correlation
근처에 있습니다!
각 특징의 상관계수를 얻어 상위 10위보다 높은 그림을 나타낸다. 이런 상황에서 0.79
의 상관계수OverallQual
는 라벨과 가장 관련이 있다.
선택한 피쳐로 학습할 때의 정밀도|선형 회귀
그렇다면 특징 선택이 끝났으니 정밀도 확인을 배워보자.
특징을 모두 사용했을 때(289차원)와 관련이 높은 특징을 10차원으로 사용했을 때 정밀도는 거의 변화가 없기 때문에 관련 특징 선택을 약간 나타내는 것이 효과적이다.
결점
임무가 회귀 문제일 때 쌍방이 모두 연속값이기 때문에 상관수는 유형 데이터 등 이산 특징에서 효과가 없을 수 있다.
LightGBM
라이트GBM은 결정목 중 하나로 그래디언트 부스팅이라고 불리는 합성기 학습을 응용해 간단하지만 범용성을 지닌 기법이다.
사이트 축소판 그림의LightGBMの仕組み
는 매우 명확하게 설명합니다!
GitHub
Machine-Learning/Titanic_LightGBM.ipynb at master · sasayabaku/Machine-Learning
환경 설정
이번에는 파이톤의 lightgbm
라이브러리를 사용합니다.
Install
pip install -y lightgbm
배우다
LightGBM 학습 설명 | 클릭
학습 매개 변수 설정
params = {
'task': 'train',
'boosting_type': 'gbdt',
'objective': 'multiclass',
'num_class': 2,
'verbose': 2,
'seed': seed_value
}
boosting_type
는 원논문Gradient Base
에서 공부를 잘하기 때문에 사용합니다.
변환 데이터 형식
LightGBM
라이브러리는 전용 Dataset
모듈로 전환해야 한다.lgbm_train_data = lightgbm.Dataset(train_data, label=train_labels)
lgbm_validation_data = lightgbm.Dataset(validation_data, label=validation_labels, reference=lgbm_train_data)
배우다
evaluation_results = {}
history = lightgbm.train(
params,
lgbm_train_data,
valid_sets=[lgbm_train_data, lgbm_validation_data],
valid_names=['Train', 'Validation'],
evals_result=evaluation_results,
feval=accuracy,
num_boost_round=500,
verbose_eval=20,
early_stopping_rounds=50
)
valid_sets
와 valid_names
의 대응을 통해 학습 로그와Validation 로그를 설정eval_result
의 dict형 변수에 저장합니다.feval
에서는 평가 함수를 설정했지만 분류기는 존재하지 않는다Accuracy
.... 따라서 아래 코드를 사용하여 자체 제작한다.num_boost_round
는 이른바 Epoch수다. LightGBM은 반복 학습이기 때문에iterate 횟수를 설정한다.def accuracy(preds, data):
y_true = data.get_label()
N_LABELS = 2
reshaped_preds = preds.reshape(N_LABELS, len(preds) // N_LABELS)
y_pred = np.argmax(reshaped_preds, axis=0)
acc = np.mean(y_true == y_pred)
return 'accuracy', acc, True
피쳐 선택
early_stopping_rounds
중LightGBM
은 학습 매개 변수로서 특징 선택을 하는 기술이 있다.
중요성 시각화
importance
(학습로그)에서 history
(중요도)에 대응하는 feature_importance
(특징명) 데이터를 Frame화하여 feature_name
의 값에 따라 정렬한다.importances = pd.DataFrame(
{'features': history.feature_name(),
'importance': history.feature_importance()
}
).sort_values('importance', ascending=False)
importances.reset_index(drop=True)
LinterSVC를 통해 피쳐 선택의 유효성 검사
Titanic
무조화importance
모델은 정밀도를 평가했다.
모든 피쳐를 사용하지 않고 상위 6개의 피쳐를 사용하면 평균 정밀도가 좋아집니다. 이렇게 하면 LightGBM을 사용하여 LinearSVC
, Kagle特徴選択
로 다른 모델을 만들 수 있습니다.
그러나 아래 그림에서 보듯이 LightGBM의 정밀도는 상당히 높기 때문에 LightGBM은 항상 가장 좋은 모델이다
총결산
이번에는 특징 공사로서
라이트GBM은 결정목 중 하나로 그래디언트 부스팅이라고 불리는 합성기 학습을 응용해 간단하지만 범용성을 지닌 기법이다.
사이트 축소판 그림의
LightGBMの仕組み
는 매우 명확하게 설명합니다!GitHub
Machine-Learning/Titanic_LightGBM.ipynb at master · sasayabaku/Machine-Learning
환경 설정
이번에는 파이톤의
lightgbm
라이브러리를 사용합니다.Install
pip install -y lightgbm
배우다
LightGBM 학습 설명 | 클릭
학습 매개 변수 설정
params = {
'task': 'train',
'boosting_type': 'gbdt',
'objective': 'multiclass',
'num_class': 2,
'verbose': 2,
'seed': seed_value
}
boosting_type
는 원논문Gradient Base
에서 공부를 잘하기 때문에 사용합니다.변환 데이터 형식
LightGBM
라이브러리는 전용 Dataset
모듈로 전환해야 한다.lgbm_train_data = lightgbm.Dataset(train_data, label=train_labels)
lgbm_validation_data = lightgbm.Dataset(validation_data, label=validation_labels, reference=lgbm_train_data)
배우다
evaluation_results = {}
history = lightgbm.train(
params,
lgbm_train_data,
valid_sets=[lgbm_train_data, lgbm_validation_data],
valid_names=['Train', 'Validation'],
evals_result=evaluation_results,
feval=accuracy,
num_boost_round=500,
verbose_eval=20,
early_stopping_rounds=50
)
valid_sets
와 valid_names
의 대응을 통해 학습 로그와Validation 로그를 설정eval_result
의 dict형 변수에 저장합니다.feval
에서는 평가 함수를 설정했지만 분류기는 존재하지 않는다Accuracy
.... 따라서 아래 코드를 사용하여 자체 제작한다.num_boost_round
는 이른바 Epoch수다. LightGBM은 반복 학습이기 때문에iterate 횟수를 설정한다.def accuracy(preds, data):
y_true = data.get_label()
N_LABELS = 2
reshaped_preds = preds.reshape(N_LABELS, len(preds) // N_LABELS)
y_pred = np.argmax(reshaped_preds, axis=0)
acc = np.mean(y_true == y_pred)
return 'accuracy', acc, True
피쳐 선택
early_stopping_rounds
중LightGBM
은 학습 매개 변수로서 특징 선택을 하는 기술이 있다.중요성 시각화
importance
(학습로그)에서 history
(중요도)에 대응하는 feature_importance
(특징명) 데이터를 Frame화하여 feature_name
의 값에 따라 정렬한다.importances = pd.DataFrame(
{'features': history.feature_name(),
'importance': history.feature_importance()
}
).sort_values('importance', ascending=False)
importances.reset_index(drop=True)
LinterSVC를 통해 피쳐 선택의 유효성 검사
Titanic
무조화
importance
모델은 정밀도를 평가했다.모든 피쳐를 사용하지 않고 상위 6개의 피쳐를 사용하면 평균 정밀도가 좋아집니다. 이렇게 하면 LightGBM을 사용하여
LinearSVC
, Kagle特徴選択
로 다른 모델을 만들 수 있습니다.그러나 아래 그림에서 보듯이 LightGBM의 정밀도는 상당히 높기 때문에 LightGBM은 항상 가장 좋은 모델이다
총결산
이번에는 특징 공사로서
앞으로도 점진적으로 업데이트되길 바란다.
참고 문헌
라이트 GBM이 FIFA 18의 선수 데이터에 대한 시장 가치 평가
파이썬: LightGBM-CUBE SUGAR CONTAINER
Pythhon: LightGBM 처리 사용자 정의 양도 - CUBE SUGAR CONTAINER
Reference
이 문제에 관하여(초보자의 특징 공학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sasayabaku/items/2b00589aa4e5d148b4a5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)