Closed-set

- 일반적으로 생각하는 classification problem 이다 = input 을 넣으면 정해진 N class 의 output으로 mapping 해준다.

- 학습한 후에는 학습하기전 정해놓은 class에 포함되지 않은 새로운 사람을 추가하거나 있는 사람을 없앨 수 없다.

-> 사람은 굉장히 많고 수시로 관찰하는 clalss가 추가/제외되므로 실제 Face Verification/Identification에 사용하기 어렵다.

-model은 학습하면서 주어진 class를 space안에서 구별할 수 있는 hyper plane을 찾게된다.

 

Open-set

-아예 처음보는 클래스에 대한 데이터도 처리해야 하므로 model은 모든 데이터에 대해 generalize해야한다.

-model은 학습하면서 metric-learning problem을 풀게된다.

      *metric-learning problem = 일종의 similarity metric을 배우는것으로, 서로 구별되는 discriminative features를 뽑기위해 학습한다. 

-hyperplane으로 image를 separate하기 보다는 input space를 재정렬 하게되는데. 비슷한 이미지는 가까이 붙이고 다른 이미지는 멀리 떨어뜨리는, 일종의 clustering problem을 풀게된다.

-그러므로 학습된 model은 data간의 distance matrix를 만드는데 사용 할 수 있고, metric learning이라고 불리는 이유가 된다. (distance metric 자체를 learning을 통해 학습하므로) 

 

Contrastive Loss 

-2005, Yann Le cunn이 처음 소개

-처음목적은 Dimensionality Reduction = inforamtion을 최대한 보존하면서 dimension을 줄이는 mapping 찾기.

-> unseen data에도 generalize 해야하고, 주변간의 관계도 유지하면서 dimension을 줄여야한다.

-> 같은사람이면 사진속 이미지에서 비슷할것이다+ 다른사람이면 이미지간 다를것이다.

->사진마다 찍히는 환경(포즈,조명,크기등)이 모두 다르므로 generalize 하기 위해선 point wise 비교하는것보다는 좀더 높은차원(=추상화가 더많이 된)의 feature 차원에서 비교하는것이 좋을것이다 (코가높다, 눈이크다 등등)

-> feature embedding 한 후에 둘간의 유사도를 비교(Siameses Network 내용 참조)해서 가까우면 같은 사람, 먼사람이면 다른사람이라 구분하자.

물론 같다 다르다의 기준은 threshold를 놓고 비교해서 결정하는데, 이것또한 학습한다.

 

->그럼 어떻게 학습하지?

Contrastive Loss의 Generalized 된 식

위식은 class 가 같은경우 Y=0 이어야 Ls를 줄이는 방향으로, 다를경우, Y=1이어야 Ld를 줄이는 방식으로 작동되게 되어 있습니다. 일반적으로  같은경우 Y=1, 틀린경우 Y=0을 택할것 같은데 다르게 되어있네요...  

1-Y, Y가 반대로 된것같은데.. 아시는분 있으면 댓글 달아주세요!

 

(1-Y,Y) 던 ,(Y,1-Y)던 컨셉은 달라지지 않으니 계속 설명하겠습니다.

where, G=embedding mapping function.

 처음에 나올때는 위 두번째 D 식처럼 Euclidean distance를 사용했지만, 다른종류의 similarity metric (Manhattan distance, Cosine similarity,etc.)도 사용가능하고 실제로 요즘은 hyper sphere 위에 mapping 한다는 개념으로 cosine simlarity를 사용하여 Theta+margin 개념을 사용하고 있다.

 

첫번째 L식으로 보게되면 Cross-Entropy(이하 CE)와 굉장히 유사하게 생겼는데 CE는 Classification task를 수행하면서 network에서 결과로 나오는 probabilty값을 사용한다면 , Contrastive loss의 Ls(similar class)와 Ld(dissimilar class)는 metric learning loss로써 network에서 결과로 나오는 포인트의 위치관계를 담고있다.

-> 이것이 cross-entropy를 metric learning 으로 사용하지 않는 이유인데, 즉 , CE는 이미지에서 뽑은 feature가 비교하고자 하는 이미지에서 가까운지,먼지 상관없이 뽑는법을 배우게된다.

 

실제 Le Cunn의 식 

Ls,Ld의 해당하는 부분의 식을 그래프로 그려보면 바로 학습을 진행할경우 같은 class는 0에 가깝게, 다른 class는 m(margin)보다 크게 보내는 Loss function임을 알 수 있다. 다만 Le cunn이 Ld에 1/D같은식을 안쓴이유를

Equalibrium이라는 intuition을 얘기 하는데, 이는 GAN에서 얘기하는것과 비슷하다.

Loss를 무작정 극단으로 치우치게 해서 학습(class가 다른 것들을 무한이 멀리보냄)하게 되면, 이미지상 비슷하지만  다른class 또한 무한히 멀리 보내게되고 그 반대도 학습한다. 결국 학습을 끝냈을때(Equilibrium에 도달하기 힘들어 학습하는데 오래걸리기도 함) generalization 능력을 잃게된다.

 

아래는 블로그 원작자의 원문 설명은 다음과 같다.  

  • If we were to use the same “margin” concept for similar points, we won’t force the similar points to be as close to each other as possible — thus a lot of them would be located near the margin and could be easily pushed out of it, which would make the training unstable and difficult to converge.
  • If we were to use the {1 / Dw} term for the dissimilar points, then we would continue pushing away white dots for eternity (in theory) or for just a very long time, even when the results are already separable and usable for a nearest-neighbour classification. This would also make it difficult to reach the Equilibrium point, is simply unnecessary and may push dissimilar points TOO far away, which may worsen the generalization performance of the model.

 

모델의 개략적인 모습은 다음 사진과 같다.

아래는 MNIST의 Contrastive Loss를 적용시켰을때 feature map의 모습

 

출처 : medium.com/@maksym.bekuzarov/losses-explained-contrastive-loss-f8f57fe32246

사진, 식 출처 : arxiv.org/abs/1704.08063

 

Losses explained: Contrastive Loss

This is a series of posts explaining different loss functions used for the task of Face Recognition/Face Verification.

medium.com

+나의 생각

1. 개요

Jane Street Market이라는 주가예측 회사에서 연 competition

실제 시장 결과를 토대로 얻어진 여러 feature들로 represent 되어있는 data를 보고 1(accept)/0(reject)할건지를 결정해서 maximum return을 하는 own quantitative trading model을 만들어라.

단, 사용하는 data들은 익명화 되어있음.

 


2.DATA

총 네개의 file

1. train.csv

:학습에 사용하게될 데이터.

-shape= (2390491, 138)

-2390491 = 총 500일의 trading data, but 날마다 여러번의 trading 기회 -> 총 2390491번의 거래

-138 = date(날짜) + feature_{0....129}(익명화된 feature. ex.PER) + ts_id(index 1,2,3....) + weight(얼마나 넣을지) + resp_{1,2,3,4,0}(time horizen 짧게 투자할건지, 길게투자할건지 길게하면 risky하게 가능)

 

2. example_test.csv

: 가상 test set , time-series API가 알아서 test/prediction 할때 사용

 

3. example_sample_submission.csv

: sample submission, format 참조용

 

4. features.csv

-feature들의 metadata가 정리되어있음

  (*metadata = data를 활용하기위한 data의 data)

-(30,130)

-30개의 tag들로 feature 130가지를 boolean으로 평가하는것 같은데 각tag마다 무슨 의미인지는 잘 모르겠음.

 

(*csv=comma separated value)


3.EDA Notebook으로 data 최대한 파악해보기

노트북 출처 : www.kaggle.com/carlmcbrideellis/jane-street-eda-of-day-0-and-feature-importance

train.csv

파일은 5.77G로 큼 불러들어 읽는데 시간이 좀 걸림


resp

: 뭐의 줄임말 인지는 잘 모르겠음. 다만 resp * weight=return 이라는것을 보면 가격 변동률로 예상됨.         

       500일동안 resp를 cumulative 한 그래프 x축 : 총 거래량인  2390491이 limit

                                                   

resp 1,2,3,4를 사용하면서 Time horizon에 따른 cumulative resp

maximum llikelihood estimation으로 time horizon T1,T2,T3,T4에 관계를 도출한  "Jane Street: time horizons and volatilities" written by pcarta 에 따르면.  Time horizon 간의 관계는 다음과 같다.

if time horizon(Tj)for resp_1 is 1
resp value는 gaussian dstribution을 보임.

max(resp)= 0.44846

min(resp)=-0.54938

skew(3rd standardized moment) : 0.10

kurtosis(4th) : 17.36 

standardize moment 설명. 출처 : https://en.wikipedia.org/wiki/Standardized_moment


Weight

: 얼마나 투자할지에 대한 수치로 추정 -> -값은 존재하지 않고 0값은 return에는 영향을 주진 않지만 dataset의 completeness를 위해 첨가했다고 대회측에서 작성. 

min=0.00,

max=167.29, on dat 446

17% of dataset, weight=0

0.17와 0.34 두곳에서 peak 가 있는것으로 보아 two distribution의 중첩이 아닐까란 추론

two distribution=? (selling, buying)?

mean = -1.32 for small , 0.4 for large -> don't forget it is value of logarithm

 

 


 

Cumulative return

: cumulative of return(weight * resp)

cumulative resp 은 우상향( 시간지나면 변동률 합산했을때 +) 였으나, weight을 곱하고 나니 하향을 띔(1아래로 떨어짐)

->이게좀 의문, 왜 모델 수익률이 -인지 ...

특히 resp 1,2,3 같은경우 time horizon이 짧고, 변동폭이 작음(conservative한 strategy 사용), lowest return

 

 

 

weight=0값 제외하고 plot 


Time

85th day 부터  시장에 변화가 생겼거나, model의 변화가 생긴것으로 의견이 모아진다.

 

 

하루 6.5시간이 trading hour이므로 23400 sec을 각 하루 거래량으로나누어주면 위의 표가 나온다.

 

 

하루거래량(volatility)을 x축으로 놓고 해당하는 날짜의 수의 비율을 y축으로 표기 

거래량이 많은날 = 일명 'volatile days'라 한다.

 

volatile days를 출력해보았을때 500일중 대부분 85일 이전에 위치한다


The Features

feature 0

: 1과 -1로만 이루어져있다.

1 : 1207005 번

-1 : 1183486 번

-true tag가 없다.

feature0 ,-1로 데이터 분류후에  resp와 return cumlative

다른 feature와 달리 1이냐 -1이냐 에 따라 매우 다른 dynamic을 가진다. bid/ask, long/short, call/put, 혹은 가격변동에 따른 buy/sell order(=면 1, -면 -1)

 

나머지 feature들은 4가지로 분류(Linear, Noisy, Hybryd, Negative)

 

feqture 41,42, 43(Tag14)

- 층이 discrete하게 나옴 -> security레벨같은 레벨개념의 feature일 가능성

- ts_id(n)과 ts_id(n+1)이 비슷한 값을 가지는 경향이있음.

 

feature 60,61,62,63,65,66,67,68

 비슷한 경향이 있음

특이하게 feature_64는 0.7~1.38사이 big gap이 있음.

날별로 plot하면 위와 같고 날마다 반복되는 값의 maximum, minimum이 일정한걸로 보아 시간과 관련된 feature로 보임(장시간에 따른 tick 횟수라던가,,, 장 시작시간, 마감시간에 거래량이 늘어나므로) -> 가운데 빈곳은 break time이라는 해석이 있음. 

 

feature_51 = log of the average daily volume of the stock

 

'Negative' features 

: Features 73, 75,76,77(noisy), 79, 81(noisy), 82.  Tag 23 section에 다포함

 

'Hybrid' features(Tag 21)

:noisy로 시작하지만 특정시점부터 linear 55,56,57,58,49 . Tag 21에 포함.

resp, resp_1,2,3,4와 대응 되는것처럼 보임 -> 

  • feature_55 is related to resp_1
  • feature_56 is related to resp_4
  • feature_57 is related to resp_2
  • feature_58 is related to resp_3
  • feature_59 is related to resp

If that is the case then

  • Tag 0 represents resp_4 features
  • Tag 1 represents resp features
  • Tag 2 represents resp_3 features
  • Tag 3 represents resp_2 features
  • Tag 4 represents resp_1 features

i.e.

  • resp_1 related features: 7, 8, 17, 18, 27, 28, 55, 72, 78, 84, 90, 96, 102, 108, 114, 120, and 121 (Note: 79.6% of all of the missing data is found within this set of features).
  • resp_2 related features: 11, 12, 21, 22, 31, 32, 57, 74, 80, 86, 92, 98, 104, 110, 116, 124, and 125 (Note: 15.2% of all of the missing data is found within this set of features).
  • resp_3 related features: 13, 14, 23, 24, 33, 34, 58, 75, 81, 87, 93, 99, 105, 111, 117, 126, and 127
  • resp_4 related features: 9, 10, 19, 20, 29, 30, 56, 73, 79, 85, 91, 97, 103, 109, 115, 122, and 123
  • resp related features: 15, 16, 25, 26, 35, 36, 59, 76, 82, 88, 94, 100, 106, 112, 118, 128, and 129

17개의 feature들을 각 resp(추측)에 맞게 plot하면 17*5=85 feature는 다음과 같이 떨어진다.

feature와 Tag관계

x축 : 130 Features(좌->우), y축: 29 Tags(상->하)
반복되는 패턴

위와 같이 반복되는 패턴은 resp , resp1,resp2,resp3,resp4 의 관계로 보임. 순서는 Tag0부터 (4,0,3,2,1)

 

feature 별로 해당되는 tag의 수

tag 는 적어도 1개에서 4개까지 가지고 있다. 예외로 feature_0는 0개의 tag

'Region'featuresTagsmissing values?observations

Region features Tags mnissing values? observations
0 feature_0 none none -1 or +1
1 1...6 Tag 6    
2 7-36 Tag 6    
2a 7..16 + 11 7, 8 and 11, 12  
2b 17...26 + 12 17, 18 and 21, 22  
2c 27...36 + 13 27, 28 and 31, 32  
3 37...72 various    
3a 55...59 Tag 21 All hybrid  
3b 60...68 Tag 22 Clock + time features?  
4 72-119 Tag 23    
4a 72...77 + 15 & 27 72 and 74  
4b 78...83 + 17 & 27 78 and 80  
4c 84...89 + 15 & 25 84 and 86  
4d 90...95 + 17 & 25 90 and 92  
4e 96...101 + 15 & 24 96 and 98  
4f 102...107 + 17 & 24 102 and 104  
4g 108...113 + 15 & 26 108 and 110  
4h 114...119 + 17 & 26 114 and 116  
5 120...129 Tag 28    
5a 120 + 4 missing data  
5b 121 + 4 & 16 missing data  
5c 122 + 0    
5d 123 + 0 & 16    
5e 124 + 3    
5f 125 + 3 & 16    
5g 126 + 2    
5h 127 + 2 & 16    
5i 128 + 1    
5j 129 + 1 & 16    

 

Action

:trade/pass(1/0)

가장 간단하게 가격변동률(resp)가 음수일때 pass, 양수일때 trade 하도록 짜보면

day 294를 제외하고 고르게 나쁘지 않게 거래함.

 

missing values(=NAN)

day 0 의 모습. x축: feature, y축: ts_id,  

빠진값의 pattern이 보인다. y축과 나란하게 빠진거 보면 일정 시간에 값을  missing 되었다 생각 할 수있다.

 

day 2 와 day294 는 missing value 가 없는데 이는 ts_id 자체가 매우 적고 feature가 빠지는 시간대에 안걸쳐 있었다 생각할 수 있다. -> outlier로 생각하고 빼도 될거같음

'인공지능 > 캐글' 카테고리의 다른 글

[Jane Street] Overfitting 막기위한 기법들  (0) 2021.02.14

두 용어 모두 개념이 비슷함. 다만 서로 다른 연구 분야에서 기인했음.

여기에 한국어 용어까지 더해지면서 헷갈림의 대환장 파티가 벌어짐.

사실상 기억해야 하는건

1. (진단/실제참거짓) 두가지 요인에 의한 4가지 조합(TP/FP/FN/TN) +연구분야에따른 용어 차이.

2. 각자 조합에 해당하는 한국어 용어(ex. 민감도,위양성율,특이도)

3. 조합간의 상관관계(ex. FPR/TPR은 비례한다) -> 아래 그림, 예시로 이해하면 편함.

4. 사용하는 metric들의 정의

 

1.FAR/FRR

FAR/FRR은 생체인식 부분에서 쓰임

FAR = False Acceptance Rate : 잘못함(우선 답하고 다름) + Acceptance(허용함) -> 허용했는데 잘못함 -> 원래 거절해야하는데 허용함.

FRR = False Rejection Rate : 잘못함(우선 답하고 다름) + Rejection(거절함) -> 거절했는데 잘못함 -> 원래 허용해야하는데 거절

행동/정답 Acceptance Rejection
Acceptance 잘함 True Acceptance  못함 False Acceptance
Rejection 못한 False Rejection 잘함 True Rejection

함.

 

2.False Positive/ False Negative

: IDS(Intrusion Detection System, 침입방지 시스템)에서 기인함.

위 내용과 비슷. 자세히는

False Positive( 알람이 울렸으나 잘못함 -> 공격이 발생하지 않았으나 알람 울림)

False Negative( 알람이 안울렸으나 잘못함 -> 공격이 발생하였으나 알람 안울림)

행동/정답 True False
Positive 잘함 True Positive= 민감도,양성율 못함 False Positive=위양성율
Negative 못함 False Negative 잘함 True Negative = 특이도

3. TPR/FPR(민감도,특이도=TAR/FAR)

:위의 네가지 용어(두 분야라 총 8가지)중 TPR/FPR은 대부분의 classification에서 사용하는 metric인 ROC curve를 그리는데 사용한다. TPR/FPR은 서로 비례하는 관계가 있으므로 curve를 그려 성능을 확인한다. 자세한건 6.단락 확인

-TPR : True Positive Rate(민감도)

-FPR : False Positive Rate(1-특이도)

4.Acc/Precision/Recall/F1

~classfier에는 한 metric으로 무조건 좋다 나쁘다를 판단하기 힘들다. 실제 태스크를 보고 중요한 metric을 골라야 한다.

 보통 쓰는 metric에는 Precision/Recall/F1/Acc이 있다. 

 -Acc = (TP+TN)/(TP+TN+FN+FP)  : 전체중에 옳게 판단한 비율  

 -precision =TP/(TP+FP) : 참이라고 판단한것중 실제로도 참인 비율

 -Recall = TP/(TP+FN) : 실제참인것들중 참이라고 판단한비율  

 -F1 = 2*(Precision*Recall)/(Precision + Recall)

       : Precision과 Recall의 balnce를 찾고싶을때 사용 병의 진단같은경우처럼 다수의 True negative의 수가 많고 중요         한 정보가 아니고 FN과 FP에 좀더 중요성을 싣고 싶을때 사용.(uneven class distribution일때)

 -AUC=ROC curve의 밑면적(Area Under a ROC Curve), [0,1]의 범위, 1에 가까울수록 좋음. 아래 그림 참조.

출처 : https://newsight.tistory.com/53

 

5. 중요한 이슈

생체인식같은경우 -> FAR (다른사람 침입했는데 accept 해줌) ->인증보안 실패

IDS 같은경우 -> False Negative (공격했는데 알람 안울림) -> 공격감지 실패

 

6. 경향성

1,2번 모두 Threshold 에 대한 문제.

출처 : https://en.wikipedia.org/wiki/Sensitivity_and_specificity

-IDS : 알람에 대한 기준을 높이면 False Positive는 줄어들지만 True Positive도 같이줄어듦 or False Negative도 같이 올라감.  -> 민감도를 낮추면 오경보 횟수도 줄어들지만 실제 적이 침입했을때 경보를 안울릴 확률도 올라감.

 

-생체인식 : 보안 기준을 높이면 False acceptance는 줄어들지만 True acceptance도 같이 줆어듦 or False rejection도 같이 올라감

             -> 기준을 높이면 다른사람 침입을 잘 막지만 내가 들어가고싶을때도 막을 확률이 올라감.

 

 

FAR줄임-> TAR줄어듬 의 경향성이 있으므로 성능을 측정하거나 비교할때는 보통 아래와 같은 두가지 방법 사용.

 

1) ROC curve를 그림

출처 : https://en.wikipedia.org/wiki/Receiver_operating_characteristic

2) TAR@FAR=1% 같은 조건을 걸고 성능 측정

출처 : https://www.slideshare.net/ifkakao/ss-115328045

7. 보충

-완벽한 classifier는 TAR1@ FAR 0 -> ROC curve에서 왼쪽 위 = IDS 사진에서 두 분포가 완전히 분리 되어 두분포 사이에 경계 기준을 세울때. 아래 그림 참조

 

-ROC AUC=AUROC

-PR_AUC = Precision과 Recall 의 curve에 대한 면적 , ROC AUC와 개념은 비슷하나 상대적으로 ROC_AUC가 robust한 성능평가가 가능한것으로 알려져있다. 하지만 data imbalnce가 심한경우, PR_AUC를 쓰는것이 좋다.    

 

-micro F1 score= 전체 class에서 한번에 precision, recall을 구해서 f1을 구함 -> Accuracy와 동치.

-macro F1score= class별로 f1구한후 산술평균

 

 

보충부분 출처 : newsight.tistory.com/53

 

ROC curve, ROC_AUC, PR_AUC, 민감도, 특이도

ROC curve (Receiver Operating Characteristic curve) : FPR과 TPR을 각각 x,y축으로 놓은 그래프. ROC curve는 X,Y가 둘다 [0,1]의 범위이고, (0,0) 에서 (1,1)을 잇는 곡선이다. - ROC 커브는 그 면적이 1에..

newsight.tistory.com

틀리거나 궁금한점 있으시면 댓글 남겨주세요!

'인공지능 > 기타' 카테고리의 다른 글

뇌출혈(Intracranial hemorrhage) 정리  (0) 2021.02.01

+ Recent posts