평균트루범위 지표

마지막 업데이트: 2022년 6월 13일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
AUC(ROC 곡선 아래 영역)

평균트루범위 지표

조회수 목적의 광고상품 을 집행했을 때 어떤 효율이 좋은건지 , 어떤 지표를 보고 광고 성과를 평가해야 될지를 알아보자 .

□ CPV (Cost Per View) - 조회 당 비용

  • 계산식 : 비용/조회수
  • 1번 조회하는데 얼마의 비용이 드는지를 의미 하는 지표이다.

□ VTR (View Through Rate) - 조회율

  • 계산식 : (조회 수/노출 수) * 100
  • 고객이 영상에 노출 되었을 때 어느 정도의 비율만큼 영상을 조회하는지를 의미 하는 지표이다.
  • 예를 들어 노출이 100번 되었을 때 조회가 10번 발생했다면 VTR은 10%가 된다.

업종이나 , 광고소재 , 예산 , 타겟팅 등에 따라 차이가 존재하지만 ,

  • 인스트림 평균트루범위 지표 평균트루범위 지표 의 경우 CPV는 평균적으로 30~40원 정도가 평균이고, VTR은 평균적으로 20~30%이다.
  • 디스커버리 의 경우 CPV는 평균적으로 10~60원 정도가 평균이고, VTR은 평균적으로 1~1.2%이다.

Q1. CPV가 낮을수록 효율적으로 광고를 집행하는 건가?

A. 맞다 . 한정된 예산에서 CPV 를 낮출수록 조회수를 더 확보할 수 있기 때문이다 . 그러나 무조건 CPV를 낮춘다고 좋지는 않다 . 이유는 타겟팅의 범위를 넓게 잡을수록 CPV 는 떨어지지만 , 그만큼 의미 있는 타겟층 외의 타깃에게 비용이 들기 때문이다 .

Q2. VTR이 높을수록 좋은가?

A. 조회율이 평균트루범위 지표 높다고 무조건 좋은 것은 아니다 . 조회율이 높다는 의미는 사람들이 광고에 노출이 될 때마다 광고와 상호작용을 한다는 뜻인데 , 구글애즈 시스템 상에서 목적으로 하는 조회수를 확보하면 노출은 줄어든다 .

평균트루범위 지표

이번에 소개해 드릴 내용은 켈트너 채널(Keltner Channel)기법입니다.

그 유명한 볼린저 밴드의 원조격이 되는 기법이라고 보시면 됩니다.

1960년, Chester W. Keltner는 책 《How to Make in Commodities》에서, 변동성(volatility)을 기반으로 하는 밴드(band) 기법을 소개합니다.

이것은 종가 데이터 이외에 고가, 저가까지 고려하였습니다. 따라서, 하나의 캔들 내에서의 변화까지 고려한 분석이라는데 의미가 있습니다. 계산방법은, 초기의 버젼과 현대에 변형된 버젼 이 있습니다.

매수선 : 10일 중심가격(typical price)의 이동평균 + 10일 거래범위 이동평균

매도선 : 10일 중심가격(typical price)의 이동평균 - 10일 거래범위 이동평균

하나의 캔들의 거래범위 = (고가 - 저가)

하나의 캔들의 중심가격 = (고가 + 종가 + 저가)/3

중심가격은, 트레이딩이 집중적으로 일어나는 지점을 조금 더 구체적으로 표현할 수 있습니다.

그런데, 1980년대에 이 공식은 조금 변형되어 오늘날은 ATR(Average True Range)를 이용한 계산방법을 주로 사용합니다.

혹시나 이동평균에 대해 이해가 가지 않으시는 분들은 아래 포스팅을 읽어보시길 권합니다.

이동평균(Moving Average)의 계산방법 및 의미

이전에 포스팅에서, RSI수치를 구할 때 이동평균(Moving average)를 이용한다고 하였는데요, 이번에는 이것에 대해 더 자세히 알아보려고 합니다. primestory.tistory.com/8 RSI(Relative Strength Index) 계산방..

Upbit의 KC(Keltner Channel)

Middle Line = EMA(Exponentially Moving Average)

Upper Band = EMA + multiplier*ATR

Lower Band = EMA - multipllier*ATR

EMA의 계산은, 일반적으로 α = 1/20 이하의 값을 사용합니다.

단순이동평균을 사용할 수도 있지만 보통은 EMA를 이용합니다.

일반적으로, multiplier = 2 를 사용합니다. 이보다 큰 값을 사용할 수록 channel의 크기는 넓어집니다.

ATR(Average True Range)은 기술적 분석의 거장인 J. Welles Wilder가 개발한 지표로, 변동성 지표(volatility indicator)입니다. 이것은 상승/하강의 추세를 보여주는 것이 아닌, 가격의 변동이 얼마만큼 출렁이면서 변동하는지를 보여줍니다.

ATR = TR에 대한 EMA

한 캔들의 TR(True Range) = |고가-저가|, |고가 - 이전종가|, |저가 - 이전종가| 중 최댓값

이것은, 특별히 이전 종가가 고가/저가보다 더 높게/낮게 형성될 경우에 까지 확장한 것이므로.. 사실상 일반적인 상황에서는 TR = |고가-저가| 가 됩니다. 즉, 그냥 캔들의 범위를 나타낸다고 보시면 됩니다.

TR에 대한 EMA계산에 사용되는 α = 1/20 ~ 1/10 을 사용합니다.

Keltner Channel은 추세를 보기에 유용하다는 특징을 가지고 있습니다.

위의 차트에서도 볼 수 있듯이, 상승장에서는 Middle Line 윗부분에서 움직이고 있음을 확인할 수 있습니다.

하락장에서는 Middle line의 아랫부분에서 움직인다고 합니다.

(ad. 그렇다면, 지금 비트코인은 정말 하락장인걸까요. )

따라서, 상승 추세일 경우에는 Middle Line의 부근에서 매수한 후 그 윗부분에서 매도를 하고, 하락 추세일 경우에는 Middle Line부근에서 매도한 후 그 아랫 부분에서 매수를 하는 'Trend Pullback'전략 을 이용할 수 있습니다.

또는, Lower Band를 뚫고 하락할 때 매도한 후 Middle Line에 오면 다시 사고, Upper Band를 뚫고 상승 할 때 매수한 후 Middle Line에 오면 다시 파는 'Break out'전략 을 이용할 수도 있습니다. 이 전략은, 추세의 시작점에서 거래를 하여 손실을 최소화 하거나 이득을 최대화 하는 것을 목표로 합니다. 특히 변동성이 심한 아침장(개장 직후)에서 특히 유용합니다. (평균트루범위 지표 Upbit로 따지면 9시즈음??)

조건에 기반한 계산된 컬럼

컬럼을 계산할 때 특정 조건의 충족 여부에 따라 표현식의 결과가 달라져야 하는 경우가 있습니다. 조건은 논리 함수 If() 또는 Case() 를 사용하여 표현식에서 설정합니다.

If() 함수를 사용할 때는 true 또는 false인 조건을 지정하고, 조건이 true일 때 반환할 항목과 false일 때 반환할 항목을 평균트루범위 지표 차례로 지정합니다.

다음 표현식의 의미는 아래와 같습니다.

컬럼 'Amount'의 행 값이 10보다 작은 경우 값 'low'가 결과로 반환되지만, 값이 10 이상인 경우에는 값 'high'가 반환됩니다.



다른 말로 하면 If() 함수는 행을 두 그룹으로 나눕니다. 하나의 그룹은 지정된 조건이 true인('low'를 결과로 반환) 행으로 구성되며, 다른 그룹은 지정된 조건이 false인('high'를 결과로 반환) 행으로 구성됩니다.

반환될 값이 집계된 값인 경우 두 그룹은 따로 처리됩니다. 아래 테이블에서 다음 표현식이 추가된 예제를 볼 수 있습니다.

이 표현식에는 평균 집계가 포함되어 있습니다. 이 경우 두 그룹 모두에 동일한 집계가 지정되었지만 서로 다른 집계를 사용할 수도 있습니다.



행 값이 10 미만인 경우, 즉 'true' 그룹의 경우에는 평균 6이 반환되며((5+7)/2), 'false' 그룹의 경우에는 평균 13((14+10+15)/3)이 반환됩니다.

if() 함수를 and 또는 or 와 결합하여 사용할 수도 있습니다. 예를 들어

표현식은 아래의 추가된 계산된 컬럼으로 나타납니다.



조건 결과가 true 및 false로 제한되지 않는 표현식을 작성하려면 case() 함수를 사용할 수 있습니다. Case() 는 두 가지 형식으로 사용할 수 있으며 아래에서 예제를 사용하여 모두 설명합니다.

예제 1

아래의 책과 비디오 가격이 각각 10%와 50% 할인되어 가격 목록을 업데이트해야 한다고 가정하겠습니다.



제품 유형에 따라 할인율이 다르기 때문에 case() 표현식을 사용하여 새 가격을 계산합니다.



여기서 case() 는 'Type'을 표현식의 when 옵션 각각과 비교합니다.

예제 2

두 번째 예제에서는 case() 를 사용하여 학생들의 시험 결과를 평가합니다. 평가 수준에는 Failed(총계가 100 미만), Passed 및 Excellent(총계가 160 이상)의 세 가지 수준이 있습니다.



이 예제의 Case() 는 각 when 옵션마다 독립적으로 조건을 평가합니다.

이 방법을 사용하면 예제 1에서보다 복잡한 조건을 구현할 수 있습니다.

결과 계산된 컬럼은 아래와 같습니다.



조건 실행 순서

case() 표현식의 여러 부분은 위에서 아래 순서로 실행됩니다. 아래의 표현식과 결과 컬럼을 참조하십시오.



40 미만인 숫자는 'yes'로 설정되며 변경되지 않습니다. 70 미만의 숫자를 'no'로 설정하는 표현식의 다음 부분은 나머지 행에만 영향을 줍니다.

평균트루범위 지표

혼동행렬(confusion 평균트루범위 지표 matrix)은 기계학습분야, 특별히 통계분류(statistical classification)문제 분야에서 오류 행렬이라고도하며, 일반적으로 지도학습에서 알고리즘의 성능을 시각화 할 수 있는 표입니다. 비지도 학습에서는 일반적으로 일치 행렬( matching matrix) 이라고합니다.

분류 모델을 학습하는 것의 목적은, 주어진 데이터를 의도에 맞게 잘 분류해내기 위한 것이다. 그렇다면 이러한 모델을 평가하는 기준이 필요할 것이다. 모델을 평가할때는 모델이 얼마나 정밀한지, 얼마나 실용적인 분류를 해내었는지, 얼마나 정확한 분류를 했는지를 평가해야 한다.

이러한 내용들을 모두 포함하고 있는 것이 Confusion Matrix이다.

먼저 모델의 성능을 평가하기 위해 혼동행렬과 함께 필요한 네 가지 개념이 있습니다.

TP(True Positive) - 맞는 것을 올바르게 맞다고 예측한 것 (정답)

TN(True Negative) - 아닌 것을 올바르게 틀리다고 예측한 것 (정답)

FP(False Positive) - 아닌 것을 올바르지 않게 맞다고 예측한 것 (오답)

FN(False Negative) - 맞는 것을 올바르지 않게 틀리다고 예측한 것 (오답)

True Positives : 1 인 레이블을 1 이라 하는 경우를 True Positives라고 한다.

-> 관심 범주를 정확하게 분류한 값.

False Negatives : 1 인 레이블을 0 이라 하는 경우를 False Negatives라고 한다.

-> 관심 범주가 아닌것으로 잘못 분류함.

False Positives : 0 인 레이블을 1 이라 하는 경우를 False Positives라고 한다.

-> 관심 범주라고 잘못 분류함.

True Negatives : 0 인 레이블을 0 이라 하는 경우를 True Negatives라고 한다.

-> 관심 범주가 아닌것을 정확하게 분류.

Precision(정밀도), Recall(재현율) and Accuracy(정확도)

정밀도란 모델이 True라고 분류한 것 중에서 실제 True인 것의 비율입니다. 즉, 아래와 같은 식으로 표현할 수 있습니다.

Positive 정답률, PPV(Positive Predictive Value)라고도 불립니다. 날씨 예측 모델이 맑다로 예측했는데, 실제 날씨가 맑았는지를 살펴보는 지표라고 할 수 있겠습니다.

재현율이란 실제 True인 것 중에서 모델이 True라고 예측한 것의 비율입니다.

통계학에서는 sensitivity으로, 그리고 다른 분야에서는 hit rate라는 용어로도 사용합니다. 실제 날씨가 맑은 날 중에서 모델이 맑다고 예측한 비율을 나타낸 지표인데, 정밀도(Precision)와 True Positive의 경우를 다르게 바라보는 것입니다. 즉, Precision이나 Recall은 모두 실제 True인 정답을 모델이 True라고 예측한 경우에 관심이 있으나, 바라보고자 하는 관점만 다릅니다. Precision은 모델의 입장에서, 그리고 Recall은 실제 정답(data)의 입장에서 정답을 정답이라고 맞춘 경우를 바라보고 있습니다.

정확도(Accuracy)는 True를 True라고 옳게 예측한 경우와 False를 False라고 예측한 경우도 옳은 경우이며, 이때 해당 경우를 고려하는 지표. 식으로는 다음과 같이 나타냅니다.

정확도는 가장 직관적으로 모델의 성능을 나타낼 수 있는 평가 지표입니다.

F1 score는 Precision과 Recall의 조화평균입니다.

F1 score는 데이터 label이 불균형 구조일 때, 모델의 성능을 정확하게 평가할 수 있으며, 성능을 하나의 숫자로 표현할 수 있다.

Fall-ou tFPR(False Positive Rate)으로도 불리며, 실제 False인 data 중에서 모델이 True라고 예측한 비율입니 다. 즉, 모델이 실제 false data인데 True라고 잘못 예측(분류)한 것으로 다음과 같이 표현할 수 있 습니 다.

ROC(Receiver Operating Characteristic) curve, 수신자 조작 특성 곡선

여러 임계값들을 기준으로 Recall-Fallout의 변화를 시각화한 것입니다. Fallout은 실제 False인 data 중에서 모델이 True로 분류한, 그리고 Recall은 실제 True인 data 중에서 모델이 True로 분류한 비율을 나타낸 지표로써, 이 두 지표를 각각 x, y의 축으로 놓고 그려지는 그래프를 해석합니다. 아래 예시를 보죠.

AUC(Area Under Curve)

ROC curve는 그래프이기 때문에 명확한 수치로써 비교하기가 어렵 습니 다. 따라서 그래프 아래의 면적값을 이용합니다. 이것이 바로 AUC(Area Under Curve)평균트루범위 지표 입니다. 최대값은 1이며 좋은 모델(즉, Fall-out에 비해 Recall 값이 클수록) 1에 가까운 값이 나옵니다.

ROC 곡선(수신자 조작 특성 곡선) 평균트루범위 지표 은 모든 분류 임계값에서 분류 모델의 성능을 보여주는 그래프입니다. 이 곡선은 다음 두 매개변수를 표시합니다.

참 양성 비율 ( TPR )은 재현율의 동의어이며 이에 따라 다음과 같이 정의됩니다.

허위 양성 비율 ( FPR )은 다음과 같이 정의됩니다.

ROC 곡선은 다양한 분류 임계값의 TPR 및 FPR을 나타냅니다. 분류 임계값을 낮추면 더 많은 항목이 양성으로 분류되므로 거짓양성과 참양성이 모두 증가합니다. 다음 그림에서는 일반 ROC 곡선을 보여줍니다.

다양한 분류 임계값의 참 양성(TP) 및 허위 양성(FP) 비율

ROC 곡선의 점을 계산하기 위해 분류 임계값이 다른 로지스틱 회귀 모형을 여러 번 평가할 수 있지만 이 방법은 효율적이지 않습니다. 다행히 이 정보를 제공할 수 있는 효율적인 정렬 기반 알고리즘이 있는데, 이를 AUC라고 합니다.

AUC: ROC 곡선 아래 영역

AUC 는 'ROC 곡선 아래 영역'을 의미합니다. 즉, AUC는 (0,0)에서 (1,1)까지 전체 ROC 곡선 아래에 있는 전체 2차원 영역을 측정합니다.(적분을 생각해 보세요).

AUC(ROC 곡선 아래 영역)

AUC는 가능한 모든 분류 임계값에서 성능의 집계 측정값을 제공합니다. AUC를 해석하는 한 가지 방법은 모델이 임의 양성 예제를 임의 음성 예제보다 더 높게 평가할 확률입니다. 예를 들어 다음 예에서는 로지스틱 회귀 예측의 오름차순으로 왼쪽에서 오른쪽으로 정렬되어 있습니다.

로지스틱 회귀 점수를 오름차순으로 평가한 예측

AUC는 임의의 양성(초록색) 예제가 임의의 음성(빨간색) 예제의 오른쪽에 배치되는 확률을 나타냅니다.

AUC 값의 범위는 0~1입니다. 예측이 100% 잘못된 모델의 AUC는 0.0이고 예측이 100% 정확한 모델의 AUC는 1.0입니다.

AUC는 다음 두 가지 이유로 이상적입니다.

● AUC는 척도 불변 입니다. AUC는 절대값이 아니라 예측이 얼마나 잘 평가되는지 측정합니다.

● AUC는 분류 임계값 불변 입니다. AUC는 어떤 분류 임계값이 선택되었는지와 상관없이 모델의 예측 품질을 측정합니다.

하지만 이러한 두 이유는 특정 사용 사례에서 AUC의 유용성을 제한할 수 있다는 단점이 있습니다.

척도 불변이 항상 이상적인 것은 아닙니다. 예를 들어 잘 보정된 확률 결과가 필요한 경우가 있는데 AUC로는 이 정보를 알 수 없습니다.

분류 임계값 불변이 항상 이상적인 것은 아닙니다. 허위 음성(FN) 비용과 허위 평균트루범위 지표 양성(FP) 비용에 큰 차이가 있는 경우 한 가지 유형의 분류 오류를 최소화하는 것은 위험할 수 있습니다. 예를 들어 이메일 스팸 감지를 실행할 때 허위 양성(FP)의 최소화로 인해 허위 음성(FN)이 크게 증가한다고 해도 허위 양성(FP) 최소화를 우선시하고 싶을 수 있습니다. AUC는 이런 유형의 평균트루범위 지표 최적화에 유용한 측정항목이 아닙니다.

출처 : 구글 머신러닝 단기집중과정

분류: ROC 및 AUC | 머신러닝 단기집중과정 | Google Developers

예상 시간: 8분 ROC 곡선 ROC 곡선(수신자 조작 특성 곡선)은 모든 분류 임계값에서 분류 모델의 성능을 보여주는 그래프입니다. 이 곡선은 다음 두 매개변수를 표시합니다. 참 양성 비율(TPR) 허위

평균트루범위 평균트루범위 지표 지표

이번에 살펴볼 지수는 DMI 입니다. 시장의 방향성과 추세의 강도를 계량화 한 지표로, 전일 대비 현재 주식 가격을 비교한 선이라고 할 수 있습니다. 구하는 원리나 공식이 복잡하므로 천천히 알아보도록 하겠습니다.

삼성전자 차트(영웅문)

DMI 지수에서 확인할 부분은 위에 표현된 DI Plus, DI Minus 입니다. ADX는 DMI를 확인할 때 보통 같이 확인하는 지표인데 뒤에서 설명 드리겠습니다. DI 두개를 구하기 위해서는 DM, TR 이라는 것을 계산해야 합니다.

- DM (Directional Movement)

상승 추세 일때는 금일의 고가가 반드시 전일의 고가 보다 높아야 하고, 하락 추세 일때는 금일의 저가가 반드시 전일의 저가 보다 낮아야 한다고 가정하고 계산합니다.

- 전일의 고가 보다 금일의 고가가 높을시 : +DM

- 전일의 저가 보다 금일의 저가가 낮을시 : -DM

- 위 상황이 둘다 발생했을 때,

- 고가 상승 범위가 더 크다면 : +DM

- 저가 하락 범위가 더 크다면 : -DM

- 변동 자체가 전날의 변동보다 작다면 : DM = 0

아래의 세가지 경우 중 절대값이 가장 큰 값을 TR로 지정합니다.

1. 금일의 고가 - 금일의 저가

2. 금일의 고가 - 전일의 종가

3. 금일의 저가 - 전일의 종가

위의 두가지를 각각 계산한 뒤에 DI를 계산합니다.

- DI는 DM의 값에 따라 부호가 바뀌게 됩니다.

- DM과 TR 하루치를 통해 DI를 계산하는게 아니라, 보통 M일 동안의 이동평균으로 계산합니다.

- +DI = +DM의 M일 이동평균 / TR의 M일 이동평균

- -DI = -DM의 M일 이동평균 / TR의 M일 이동평균

- 이렇게 계산된 DI는 M일 동안 상승 추세, 또는 하락 추세에서 금일 주가의 비율 이라고 볼 수 있습니다.

즉 DI Plus가 위에 있다면 상승 추세에 있다고 볼 수 있고, DI Minus가 더 위에 있다면 하락 추세에 있다고 볼 수 있죠. 그래서 DMI 지수를 이용한 매매 기법은 간단합니다.

- PDI가 MDI를 상향 돌파하는 골든 크로스에 매수 포지션

- PDI가 MDI를 하향 돌파하는 데드 크로스에 매도 포지션

오르고 있는 분위기에 사고, 떨어지는 분위기에 판다고 할 수 있습니다. 그러나 단순히 DMI 지수만을 사용해서 매매를 하는 방법은 좋지 않다고 합니다. DMI 지수는 가짜 신호가 꽤 많고, 신호 자체도 자주 일어납니다. 그래서 DMI에서 도출한 지표인 ADX를 같이 사용하는 경우가 많습니다.

- ADX = | (PDI - MDI) | / (PDI + MDI) * 100

ADX는 현재 추세의 강한 정도를 나타냅니다. 그 추세가 상승 추세인지, 하락 추세인지는 모릅니다. 그래서 다른 지표랑 사용을 하게 되는데 보통 DMI, ADX 조합으로 사용을 합니다.

두개의 조합을 사용하는 방법은 이렇습니다.

PDI가 DMI를 상향 돌파하는 골든 크로스 상황에서, ADX의 크기도 커지고 있다면 상승 추세가 높아진다고 예상 할 수 있습니다. 그럴 경우에 강한 매수 신호로 볼 수 있습니다. DMI의 의미 없는 신호를 거를 수 있게 됩니다.

Python으로 구현하기 위해 데이터를 불러줍니다.

DMI와 ADX를 구합니다. 이전에 계산했던 지표들에 비하면 코드가 조금 더럽. 습니다

Index를 20부터 한 이유는, 위의 DMI 계산 코드상 가장 이른 시간대의 값들의 계산이 정확하지 않기 때문입니다.

보시다시피 PDI와 MDI만 보면 서로 크로스 되는 경우가 꽤 있습니다. ADX의 움직임 까지 같이 확인해보면 신호의 빈도가 적어집니다. ADX의 경우 0.25 이상이면 추세가 약한 추세 0.5 이상이면 꽤 강한 추세라고 볼 수 있습니다.


0 개 댓글

답장을 남겨주세요