서두르세요! "데이스쿨 40% 할인" 12월 2일까지!
분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
HAICon2021 산업제어시스템 보안위협 탐지 AI 경진대회
Min-Max 정규화에 의문이 들어 바꿔보았습니다.
분석할 대상이 하드웨어 장치이기 때문에, 입출력 신호를 굳이 프로그래밍 도구를 이용하지 않고 Excel 정도로만 봐도 어느 정도는 뚜렷한 규칙성이 보이길 기대했는데 일단 그렇진 않더군요.
TRAIN 데이터를 유심히 보던 중 Min-Max 정규화에 의문이 생겨서 바꿔보았습니다.
#WINDOW_GIVEN = 29 # 러닝용 WINDOW_GIVEN #WINDOW_SIZE = 30 # 러닝용 WINDOW_SIZE ROLLING_WINDOW_SIZE = 90 # 롤링(정규화)용 WINDOW_SIZE def equalCounter(x): num = 0 value = x.values[-1] a = abs(max(x) - min(x)) b = a * 0.1 # ROLLING_WINDOW_SIZE 내 최대-최소 차이의 10%로 추적 c = [value + b, value - b] for i in x: if i >= min(c) and i <= max(c): num += 1 return num def normalize(df, filename): ndf = df.copy() ndf = ndf.rolling(window=ROLLING_WINDOW_SIZE, min_periods=1).apply(equalCounter) # ROLLING_WINDOW_SIZE 내 현재 값 추적 ndf.to_csv("./data/cache/" + filename, index=False) return ndf def boundary_check(df): x = np.array(df, dtype=np.float32) #return np.any(x > 1.0), np.any(x < 0), np.any(np.isnan(x)) return np.any(x > ROLLING_WINDOW_SIZE), np.any(x < 1), np.any(np.isnan(x)) # 검증: ROLLING_WINDOW_SIZE 초과, 0, NaN
ROLLING_WINDOW_SIZE 내의 현재 값에서 90초 이내에 최소 한번 이상은 같은 값이 나온다는 것을 가정으로 진행해보았습니다.
이후 정규화된 자료의 범위를 무작위로 선정하여 그래프를 확인해보았습니다.
엑셀(Excel) 정도의 프로그램 만으로도 확인이 가능한 규칙성이 생겼습니다.
LSTM 돌려보고 있는데 결과는 기다리고 있습니다.
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved