외환 용인시
MT4에서 ATR 표시기를 사용하는 방법. 2014 년 7 월 2 일, 0510 02 33 02 GMT. Hi, 이것은 Shaun Overton with 및이 3 분짜리 비디오에서 ATR 표시기와이를 사용하는 방법을 설명하려고합니다. MetaTrader 4 MT4에 기본적으로 표시됩니다. 무료 데모 계정이 없다면이 비디오 아래의 링크를 클릭하여 OANDA의 계정과 함께 할 수 있습니다. ATR은 Average True Range를 나타냅니다. 막대의 범위 또는 실제 범위는 높은 마이너스 낮은 막대의 높이가 1 3512이고 낮음이 1 3460 인 경우 막대의 범위는 1 3512에서 1 3460, 즉 52 pips입니다. ATR은 둘 이상을 볼 때 작용합니다 bar 14는 ATR과 함께 사용되는 일반적인 기간입니다. 당신이하는 일은 14 개의 막대 중 범위의 평균을 취하는 것입니다. 1 번 촛불부터 시작해서 2 번 촛불의 범위를 가져 가세요. 범위는 ATR. ATR이 유용합니다. 하나의 바가 움직일 가능성이 많은 pips에 대한 아이디어를 제공하기 때문에 유용합니다. 항목을 개선하고자하는 거래자 그들의 주문의 가격은 한도 또는 정지 항목을 사용하는 것을 고려해야합니다. 한도 주문은 현재 시장보다 더 좋은 가격입니다. 중지 주문은 현재 시장보다 더 나쁜 가격입니다. 대부분의 초보자들은 말장난을 듣고 빠져 나가는 것을 생각하지만, 당신은 또한 중지 주문을 입력 할 수 있습니다 더 나쁜 가격을 기다리는 잠재적 인 이점은 가격이 귀하의 방향에 편향을 확인할 수 있다는 것입니다 이동을 계속 증가 신뢰에 대한 대가로 더 나쁜 항목을 거래하고 있습니다. 얼마나 많은 ATR 사용법은 보통 ATR 가치 중 약 25 점 정도를 시작하고 엔트리를 아래쪽으로 조정하는 것을 좋아합니다. ATR 비율을 사용하면 전문가 고문과의 거래에도 적용됩니다. 특히 시간 경과에 따른 변동성 변동 오늘의 1 시간 차트는 평균 15 pips의 실제 범위를 나타낼 수 있습니다. 지금부터 6 개월 후에 ATR은 30 pips로 점프 될 수 있습니다. 고정 이익 목표를 조정하고 변동성으로 손실을 막는 것이 좋습니다. 또한 대부분의 거래자와 프로 그램 Ammers는 ATR의 배수를 사용하여이 작업을 수행합니다. ATR이 15 pips이고 적당한 거리라고 생각하면 1의 배수를 사용합니다. 전략이 큰 움직임을 잡으려는 경향이있는 경우 ATR을 2로 곱하면 더 적합 할 수 있습니다. 배수를 조정하고 테스트하는 전문 고문은 상인에게 과거 실적을 백 테스팅하고 볼 수있는 기회를 제공합니다. 대부분의 거래자는 ATR에 대해 ATR에 대해 14로 기본 설정을 유지합니다. 이는 실수라고 생각합니다. ATR을 설정에 사용하면 더 큰 실수입니다 나가기 위해 14 개의 막대가 정말 작은 시간 틀이기 때문에 50주기 ATR을 사용하는 것이 좋습니다. 변동성의 변화를 부드럽게하기 때문입니다. 정확한 측정을 원하지 않습니다. 범위의 대략적인 예상치는 제 목적에 충분합니다. 찾을 수 있습니다. 네비게이터 창을보고 MT4의 ATR 사용자 정의 표시기 옆에있는 더하기 기호를 선택한 다음 아이콘을 차트로 끌어다 놓으십시오. 변경할 수있는 핍 값 계산 방법 유일한 설정은 마침표입니다. 청취 해 주셔서 감사합니다. 다음 단계는 l 이 비디오 아래에 OANDA와 함께 무료 MT4 데모 계좌를 신청하십시오. ATR로 Forex 위험 관리. 기사 요약 Forex 전략을 수립 할 때 배치를 중지하는 것은 어려운 작업이 될 수 있습니다. 오늘 ATR 변동성 지표를 사용하여 배치 중지를 검토합니다. 열린 포지션에서 리스크를 관리하는 방법을 아는 것은 액티브 외환 거래 계획에서 가장 중요한 단계 중 하나입니다. 이 프로세스를보다 쉽게 수행 할 수 있도록 중단 명령을 어디에 둘 것인지 결정하는 데 도움이되는 다양한 지표가 있습니다. ATR 지표를 사용하여 고정 된 스톱을 설정하는 동안 변동성을 측정하는 방법. ATR 평균 진정한 범위는 변동성 지표 목록에서 Marketscope 2 0 내부에서 발견되는 우수한 지표입니다. 지표는 이전 최고치와 최고치 사이의 핍의 차이를 비교하여 시장 변동성을 측정합니다 설정된 기간 동안 통화 쌍의 최저치 시장 방향에 관계없이이 두 점의 차이가 클수록 ATR이 높을수록 De 보류중인 총액에 대해 거래자는 핍 값 계산 방법 위험 매개 변수를 조정할 수 있습니다. 특정 쌍에 대해 ATR 판독 값이 커지면 현재 고려해야 할 변동성이 크고 사용되어야 할 더 큰 거래 중지가됩니다. 휘발성 통화 쌍이 더 자주 실행되는 경향이 있습니다. 더 작은 정지 점은 덜 휘발성 인 쌍의 시간 동안 사용될 수 있습니다. 이 단계를 수행하면 상인이 불필요하게 대형 스톱을 만드는 것을 막을 수 있습니다. ATR을 사용하는 대부분의 상인은 최소 1X ATR 가치를 할인 된 가격으로 예를 들어 보겠습니다. ATR을 통해 USDCHF 4 시간을 알아보십시오. FXCM을 사용하여 만들었습니다. Marketscope 2 0 차트. 우리는 USDCHF 통화 쌍으로 발전한 강력한 하락세를 볼 수 있습니다. 이 하락 추세를 위해 선택한 전략에 관계없이, 거래자는 USDCHF 4Hour 차트의 현재 ATR을 적극적으로 관리해야합니다. at 27이 새로운 트렌드가 시작되었을 때와 비교하여 변동성이 절반 이상 줄어 들었음을 의미합니다. 변동성이 낮은시기에 더 가파르게 멈추고 자하는 트레이 더스는 새로운 포지션에서 1 ATR 스톱을 사용할 수 있습니다. 27 pips이면 거래자는 자신의 선호도에 따라 위험 보상 비율을 쉽게 추정 할 수 있습니다. 1에서 2까지의 위험 보상 비율을 이용하는 거래자는 위험을 몇 배 증가시켜 새로운 순위에서 54 pips의 최종 이익 목표를 달성 할 수 있습니다. Walker England, Trading Instructor. Walker에게 이메일을 보내십시오. WEnglandFX의 트위터에서 나를 따라 오십시오. Walker의 전자 메일 배포 목록에 추가하려면 여기를 클릭하고 전자 메일 정보를 입력하십시오. 외환 시장에 새로운 FOREX 무역이 무엇에 관한 것인지를 알아내는 데 시간을 절약 할 수 있습니다. 무료로 20 분간하십시오 DailyFX Education에서 제공하는 FX 과정에 익숙하지 않습니다. 이 과정에서 FOREX 거래의 기초, 레버리지, 귀하의 거래에 대한 적절한 레버리지를 결정하는 방법을 알려드립니다. 지금 FOREX 학습을 시작하려면 여기를 입력하십시오. DailyFX는 글로벌 통화 시장에 영향을주는 추세에 대한 외환 뉴스 및 기술적 분석을 제공합니다. ATR 표시기 ATR 표시기 란 무엇입니까? 26, 2016, 4 03 AM. The Average True Range 또는 ATR 지표는 J Welles Wilder가 변동성이 더 큰 상품 시장에 대한 가격 변동의 변동성을 측정하기 위해 개발되었지만 이제는 외환 시장에서 널리 사용됩니다 상인뿐만 아니라 상인은 미래의 가격 이동 방향을 식별하기 위해이 지표를 사용하는 경우는 거의 없지만 거래를위한 실행 계획을 준비하기 위해 최근의 변동성에 대한 인식을 얻기 위해 지표를 사용하는 경우는 거의 없습니다 탈락 또는 휩쓸 리지 않도록 유익한 수준의 진입 정지 지점과 진입 지점은이 지표의 이점으로 볼 수 있습니다. ATR은 결과 곡선이 선택한 기간 동안의 가격 변동성 수준에 따라 계산 된 값 사이에서 변동하므로 발진기로 분류됩니다. It 그것은 가격 방향과 관련이 없다는 점에서 선도적 인 지표가 아닙니다. 높은 가치는 주식 시장이 너에게 빠르게 움직이는 것을 막기 위해 진입 지점뿐만 아니라 진입 지점이 더 넓을 것을 제안합니다. ATR의 일정 비율의 독서를 통해 상인은 atr 공식. ATR 지표는 Metatrader4 거래 소프트웨어에서 일반적이며 계산 공식 시퀀스는 이러한 간단한 단계를 포함합니다. 각 기간에 대해 3 가지 절대 값, 즉 높음 - 낮음을 계산합니다 , b 이전의 하이 - 이전 기간 s 닫기 및 c 이전 기간의 닫기 - 낮음. 진정한 범위 또는 TR은 이전의 세 계산 중 가장 큰 값입니다. ATR은 선택한 기간 길이에 대한 이동 평균입니다. 일반적인 길이 설정은 14입니다. 소프트웨어 프로그램은 필요한 계산 작업을 수행하고 핍 값 계산 방법 다음 차트의 하단에 표시된대로 ATR 표시기를 생성합니다 . ATR 표시기는 하나의 변동 곡선으로 구성됩니다 위의 예에서 GBP USD 통화 쌍을 사용하는 경우 ATR 표시기 범위는 5 ~ 29 핍 값 계산 방법 pips입니다. 커브의 피크에서 크기가 확대 된 촛대와 증거를 시각적으로 볼 수 있습니다 활동 강도의 낮은 값이 일정 기간 동안 지속된다면 시장은 통합되고 브레이크 아웃이 순서대로 진행될 수 있습니다. 이 시리즈의 ATR 지표에 대한 다음 기사에서는이 진동기가 외환 거래에서 어떻게 사용되는지와 읽는 방법에 대해 설명합니다 리스크 성명서 마진 거래 외환 거래는 높은 위험도를 지니고 있으며 모든 투자자에게 적합하지 않을 수 있습니다. ou는 귀하의 초기 예치금보다 많은 손실을 초래할 수 있습니다. OptiLab Partners AB Fatburs Brunnsgata 31 118 28 스톡홀름 스웨덴. 마진에 대한 외환 거래는 높은 위험을 지니고 있으며, 그렇지 않을 수도 있습니다. 모든 투자자에게 적합합니다 높은 레버리지는 당신과 당신을 상대로 일할 수 있습니다 외환에 투자하기로 결정하기 전에 투자 목표, 경험 수준 및 위험 식욕을 신중하게 고려해야합니다. 이 사이트에 포함 된 정보 나 의견은 지분 또는 기타 금융 상품 또는 서비스를 매매하기위한 권유 또는 청약으로 간주됩니다. 과거 실적은 미래 성과에 대한 표시 또는 보증이 아닙니다. 우리의 법적 면책 조항을 읽으십시오 .2017 OptiLab Partners AB All Rights Reserved.
핍 값 계산 방법
Tree 기반의 러닝 알고리즘을 사용한 gradient boosting framework 입니다.
아래와 같은 장점이 있습니다.
- Faster training speed and higher efficiency. (빠른 훈련 속도와 높은 효율)
- Lower memory usage. (적은 메모리 사용)
- Better accuracy. (높은 정확도)
- Support of parallel and GPU learning. (병렬 처리와 GPU 러닝 지원)
- Capable of handling large-scale data. (큰 scale 데이터 다룰 수 있음)
개인적으로 사용해본 결과는 XGBoost 와 사용법이 비슷하고 좀 더 정확도가 높은것 같습니다.
1. 설치하기
1.1 Conda 이용하기
https://anaconda.org/conda-forge/lightgbm
conda install -c conda-forge lightgbm
conda install -c conda-forge/label/cf201901 lightgbm
1.2 PIP 이용하기
2. XOR data로 lightGBM 사용하기
XOR함수는 입력을 2개를 받고 두개의 값이 같으면 1이되고 다르면 0이 되는 함수 입니다.
0,1 정수만 넣어서 예제를 만들면 test와 train 데이터가 겹치는 부분도 있고 해서 여기에서는 random 을 이용해서 실수 형태로 만들었습니다. 또한 Y가 한개인것보다 복잡한 sample을 만들기 위해 y1, y2는 서로 반대가 되는 값을 넣었습니다.
2.1 XOR data 만들기
실행결과는 아래와 같습니다. 위 코드는 데이터를 만들기 위한 용도이므로 자세한 설명은 생략합니다. 결과는 아래와 같고 train.csv, test.csv 파일을 생성해 냅니다. 형태는 아래 결과 와 같습니다. test.csv파일의 y1, y2는 0으로 가득차 있으며, 해당값을 예측해야 합니다.
데이터를 보는 방법은 다음과 같습니다.
x1값이 0.5 보다 작으면 0으로, 0.5 보다 크면 1로 생각하고 두개 값이 (대략)0이면 y1=0, y2=1, 0,1또는 1,0으로 다를 경우 y1=1, y2=0 이 됩니다.(XOR은 입력값이 배타적일때 참이 됩니다.) 결과 값 또한 0~1 사이의 binary 형태의 데이터입니다.
만들려고 하는 예제는 위 데이터(train.csv)를 가지고 학습한뒤 test.csv 에 주어지는 x1, x2를 이용하여 y1, y2를 예측하는 예제입니다.
2.2 lightgbm 예제 코드 작성
이제 본론입니다. 해당 코드는 StratifiedKFold 교차 검증, random seed를 이용한 반복 훈련, Feature Select, MinMaxScaler, StandardScaler 내용을 포함하는 예제입니다.
전반적인 흐름은 train.csv 파일을 읽어서 MinMaxScaler, StandardScaler 를 할 수도 있으며, 훈련 후 그 결과를 result.csv 파일에 저장하는 코드입니다.
StratifiedKFold 교차검증 관련해서는 아래 게시글 참고 부탁드립니다.
https://swlock.blogspot.com/2019/01/scikit-learn-cross-validation-iterators.html
StratifiedKFold 는 사용상 주의점이 있는데 아래 소스를 바탕으로 예제를 작성하는 경우 간혹 에러가 발생할 수 있습니다. 이유는 위 링크에서도 언급이 되어있는데, y값에 따라 발생합니다. 따라서 해당 경우에는 KFold로 변경해서 사용하시면 됩니다.
(base) E:\work\lightgbm>python lightgbm_xor_cv.py
Traceback (most recent call last):
File "lightgbm_xor_cv.py", line 34, in
from sklearn.model_selection import StratifiedKFold
File "e:\ProgramData\Anaconda3\lib\site-packages\sklearn\__init__.py", line 64, in
from .base import clone
ModuleNotFoundError: No module named 'sklearn.base'
2.3 코드 설명
class writeLog():
def write(self, fileName, text):
print(text)
f=open(fileName,'a')
f.write(text)
f.write("\n")
f.close()
def writeWithoutCR(self, fileName, text):
f=open(fileName,'a')
f.write(text)
f.close()
train_df = pd.read_csv(BASE_PATH+'train.csv', header=0, encoding='utf8')
test_df = pd.read_csv(BASE_PATH+'test.csv', header=0, encoding='utf8')
#drop Y
Y1train_df = train_df.pop('y1')
Y2train_df 핍 값 계산 방법 = train_df.pop('y2')
Y1test_df = test_df.pop('y1')
Y2test_df = test_df.pop('y2')
if NOR_ALL == True:
names = allX.columns
scaler = preprocessing.MinMaxScaler()
allX = scaler.fit_transform(allX)
allX = pd.DataFrame(allX, columns=names)
if STD_ALL == True:
names = allX.columns
scaler = preprocessing.StandardScaler()
allX = scaler.fit_transform(allX)
allX = pd.DataFrame(allX, columns=names)
그 후 X feature중에 필요한것만 선택하도록 합니다. 이름이 Y1sel_feature라고 되어있지만, 실은 해당 y값을 train할때 입력이 되는 x를 선택하기 위한 이름입니다. 이 부분은 사용자가 feature를 넣고 빼고 할때 사용하기 위함입니다.
if SELECT_NEED :
Y1sel_feature = []
for feature, count in Y1_FEATURE_LIST_FOR_SELECT :
if count>=Y1_SELECT_LEVEL :
Y1sel_feature.append(feature)
log.write(PREFIX+"log.txt","Y1 selected:%d"%(len(Y1sel_feature)))
Y2sel_feature = []
for feature, count in Y2_FEATURE_LIST_FOR_SELECT :
if count>=Y2_SELECT_LEVEL :
Y2sel_feature.append(feature)
log.write(PREFIX+"log.txt","Y2 selected:%d"%(len(Y2sel_feature)))
Ysel_feature = []
Ysel_feature = Y1sel_feature + Y2sel_feature
Ysel_feature = list(set(Ysel_feature))
log.write(PREFIX+"log.txt","Y selected:%d"%(len(Ysel_feature)))
else: 핍 값 계산 방법
Ysel_feature = []
Y1sel_feature = []
Y2sel_feature = []
def OutputData(filename,Y1,Y2):
test_csv = pd.read_csv(BASE_PATH+'test.csv', header=0, encoding='utf8')
test_csv.pop('y1')
test_csv.pop('y2')
predAll = pd.concat([test_csv,pd.DataFrame(Y1, columns=['y1'])], axis=1)
predAll = pd.concat([predAll,pd.DataFrame(Y2, columns=['y2'])], axis=1)
predAll.to_csv(path_or_buf=PREFIX+filename, index=False)
del predAll
이제 가장 중요한 train 함수입니다. trainX는 X의 dataframe이고 trainY는 y의 dataframe입니다. Ystr는 출력을 위한 문자열입니다. 즉 Y값이 여러개일때 출력시 어떤 Y값인지 구분하기 위해서 인자를 하나 더 넣었습니다. EPOCHS seed를 이용한 반복하는 값입니다. sel_feature 는 앞에서 Y1sel_feature, Y2sel_feature 로 선택된 컬럼 값입니다. 빈 [] list일경우 전체 데이터를 선택합니다. fold_count는 교차 검증 Fold인자가 됩니다.
def Train(trainX, trainY, Ystr, ysize, EPOCHS, sel_feature, fold_count):
실자 호출은 다음과 같습니다.
y1_pred, rmse1 = Train(trainX, Y1train_df, "Y1", len(Y1test_df), EPOCHS_TO_TRAIN, Y1sel_feature, FOLD_COUNT)
y2_pred, rmse2 = Train(trainX, Y2train_df, "Y2", len(Y2test_df), EPOCHS_TO_TRAIN, Y2sel_feature, FOLD_COUNT)
train 함수 안에서는 다음코드로 EPOCHS 만큼 루프를 돌게됩니다. 그리고 prameter의 인자로 들어갑니다. 교차 검증 완료시 cv_rmse, cv_pred 값이 발생하는데 이것을 최종 final_cv_rmse, final_cv_pred 값에 넣고 다시 평균을 구합니다.
for seed in range(EPOCHS):
param['random_seed'] = seed
.
final_cv_rmse += cv_rmse 핍 값 계산 방법
final_cv_pred += cv_pred
final_cv_rmse /= EPOCHS
final_cv_pred /= EPOCHS
한번의 교차검증이 끝날때 마다 rmse과 model.predict(predictX.as_matrix(columns=sel_feature), num_iteration=model.best_iteration) 예측 결과 값을 더해줍니다. 그리고 교차 검증 최종에는 fold 수만큼 나누어 줍니다. 해당 부분은 다음 부분 입니다. cv_rmse /= fold_count
for train_index, validate_index in stratifiedkfold.split(trainXnp, trainYnp): i = i + 1 log.write(PREFIX+"log.txt","[%d]Fold"%(i)) . cv_rmse += rmse cv_pred += model.predict(predictX.as_matrix(columns=sel_feature), num_iteration=model.best_iteration) cv_rmse /= fold_count cv_pred /= fold_count
dtrn = lgb.Dataset(X_train, label=y_train, feature_name=sel_feature) 핍 값 계산 방법 dvld = lgb.Dataset(X_validate, label=y_validate, feature_name=sel_feature)
train 중 지켜보는 값입니다. validation, train 값을 넣어봤습니다. overfit 되는지 지켜보는 용도인데 넣지 않아도 됩니다. 10000은 전체 train 수인데, early_stopping_rounds 값에 의해서 일반적으로 해당 수치에 의해서 10000루프를 모두 돌지는 않게 됩니다.
watch_list = [dvld,dtrn] model = lgb.train(param, dtrn, 10000, valid_sets=watch_list, valid_names = ['eval','train'], early_stopping_rounds=10)
2.4 실행 결과
random seed를 이용해서 여러번 반복하는것은 EPOCHS_TO_TRAIN = 2 값에 의해서 결정됩니다. 교차 검증은 다음 값에 의해서 결정됩니다. FOLD_COUNT = 2
Train 함수 호출 횟수는 EPOCHS_TO_TRAIN = 2 * FOLD_COUNT = 2, 4회인데 Y1, Y2 두개에 대해서 진행하므로 8회가 됩니다.
최종 RMSE는 Total rmse 0.002844 + 0.002844 = 0.002844 가 평균값이라 더해서 2로 나누어 줍니다. 앞쪽은 Y1 rmse값이 되고 뒤쪽 값은 Y2 rmse 값이 됩니다.
2.5 결과 데이터 확인
1번째 라인
[x1=1.077770981623956(대략)1]XOR[x2=0.16715055841696874(대략)0]= 1
SH의 학습노트
*아래 학습은 Fastcampus의 "머신러닝 A-Z까지"라는 인터넷 강의에서 실습한 내용을 복습하며 학습과정을 공유하고자 복기한 내용입니다.
이 게시글은 오로지 파이썬을 통한 핍 값 계산 방법 실습만을 진행한다. 중요변수를 추출하기 위한 방법과 shap value의 개념 및 원리를 알고자하면 아래 링크를 통해학습을 진행하면 된다.
[Data Analysis 개념] Ensemble(앙상블)-4 : Feature Importance & Shap Value
1. Feature importance 앙상블에서 변수 해석의 문제 앙상블 모형은 많은 모델들이 기본적으로 Tree 기반으로 이루어진다. 동시에, 이 Tree기반의 앙상블들은 전반적으로 우수한 성능을 내는 모델들이�
실습에 사용할 데이터는 아래의 데이터이다. 집 price가 target이고 그 외 집의 특성을 뜻하는 변수들이 feature로 존재한다. 상세한 내용은 아래와 같다.
id: 집 고유아이디
date: 집이 팔린 날짜
price: 집 가격 (타겟변수)
bedrooms: 주택 당 침실 개수
bathrooms: 주택 당 화장실 개수
floors: 전체 층 개수
waterfront: 해변이 보이는지 (0, 1)
condition: 집 청소상태 (1~5)
grade: King County grading system 으로 인한 평점 (1~13)
yr_built: 집이 지어진 년도
yr_renovated: 집이 리모델링 된 년도
zipcode: 우편번호
lat: 위도
long: 경도
이제 shap value를 시각화시켜 구현하는 과정을 진행해보자.
1. 데이터 준비
위의 경우까지는 sklearn을 활용한 실습을 했을 때, 반복했던 과정이기에 설명을 생략하겠다.
2. Shap Value 실습을 위한 LightGBM 모델 구현
이는 lightGBM모델로 boosting(Gradient Boosting)의 방법 중 하나이다. 즉, Decision Tree 기반의 Ensemble모형을 구현한 것이다. 이 모델의 RMSE 결과는 212217로 나왔다. 이 모델을 해석하기 위한 Shap Value를 구현해보자.
3. Shap Value 구현 & 시각화
Shap Value는 기본적으로 cmd에서 "pip install shap"를 통해 설치를 해야한다. 그리고 sklearn image package 또한 사용할 것이기에 동일한 방법으로 설치를 하여야 한다.
Shap value를 통해 Tree기반의 Explainer를 생성할 것이고 해당 함수에 인수로 미리 만들어 두었던 lightGBM모델을 입력하였다. explainer를 만들어주어 .shap_values()함수를 통해서 shap value의 계산과정을 진행한다.
위의 과정은 첫 번째 test data instance에 대해 Shap Value를 적용하여 시각화한 것이다. 빨간색이 영향도가 높은 것이고, 파란색이 영향도가 낮은 것이다. 즉 집의 condition과 bedrooms/bathrooms가 집 가격에 큰 양의 영향력을 주고, yr_bulit, floors, waterfront는 음의 영향력을 준다고 보여진다.
핍 값 계산 방법
이는 전체 test데이터 셋에 대해서 적용한 것이다. 가로축에는 변수와 sample order를 선택할 수 있는 피벗이 생성되고, 세로축에는 각각의 변수에 대한 영향력과 model output value를 선택할 수 있는 핍 값 계산 방법 피벗이 생성된다. 이를 바꿔가면서 변수에 대한 영향력과 전반적인 모델의 설명을 확인할 수 있다.
위는 모든 변수들의 shap value를 요약한 것이다. 해당 변수가 빨간색을 띄면 target(price)에 대해 양의 영향력이 존재하는 것이고, 파란색을 띄면 음의 영향력이 존재하는 것이다. 해석을 하면 아래와 같다.
- grade : 변수의 값이 높을 수록, 예상 가격이 높은 경향성이 있다.
- yr_built : 변수의 값이 낮을 수록, 예상 가격이 높은 경향성이 있다.
- bathrooms : 변수의 값이 높을 수록, 예상 가격이 높은 경향성이 있다.
- bedrooms : 변수의 값이 높을 수록, 예상 가격이 높은 경향성이 있다.
- condition : 변수의 값이 높을 수록, 예상 가격이 높은 경향성이 있다
- waterfront : 변수의 값이 높을 수록, 예상 가격이 높은 경향성이 있다.
- floors : 해석 모호성 (Feature Value에 따른 Shap Values의 상관성 파악 모호)
- yr_renovated : 해석 모호성 (Feature Value에 따른 Shap Values의 상관성 파악 모호)
이는 각 변수의 shap value에 절대값을 취한 것으로 변수의 평균적인 영향력을 보여준다. 큰 영향력을 보일 수록, target과 관계성(인과관계X)이 크다는 것이다. 즉, 변수의 중요도와 비슷한 개념이다.
이는 변수간 의존성을 보여주는 shap value이다. 위를 보면, 빨간 점이 최신일수록 파란점에 비해 많이 분포하기에, 최신 집일수록 grade가 높은 경향이 있다고 보여진다.
shap value는 이러한 방식으로 구현할 수 있다. 더 많은 자세한 내용이 있지만 추가적인 내용은 아래 링크의 shap github를 통해서 확인하길 바란다.
A game theoretic approach to explain the output of any machine learning model. - slundberg/shap
0 개 댓글