본문 바로가기

전체 글

(39)
악성코드 1만개에 대한 api count를 해보았다 순위는 위와 같으며 엑셀 파일은 본문에 첨부하도록 하겠습니다. 누군가에게는 의미있는 데이터가 되길 바라며
[프로젝트] 머신러닝 악성코드 feature 요소 머신러닝 Random Forest를 활용하여 딥러닝, 엘라스틱 서치 결과 상호보완 XGBoost LightGBM 딥러닝 CNN 기반 딥러닝 Image 학습 모델링 Text CNN 기반 strings Feature 학습 모델링 엘라스틱서치 특징 정보 추출하여 유사도 점수 확보 M2Lab에서 했던거 적극 활용 정적 정보 PE Header 다수 파일에 대한 통계적 분석으로 피처 선별 Section Information 출현 빈도가 높은 대상 선정 section Name Resource 출현 빈도가 높은 대상 선정 Resouce Type Assmbly Instruction 출현 빈도가 높은 대상 선정 opcode Name Byte-1-Gram PE 바이너리 내 출현하는 0~255 범위의 바이트 값의 빈도 수 및..
[Numpy] numpy 기초 numpy란 무엇인가?¶ Numpy는 C언어로 구현된 파이썬 라이브러리로써, 고성능의 수치계산을 위해 제작되었습니다. Numerical Python의 줄임말이기도 한 Numpy는 벡터 및 행렬 연산에 있어서 매우 편리한 기능을 제공합니다. 또한 이는 데이터분석을 할 때 사용되는 라이브러리인 pandas와 matplotlib의 기반으로 사용되기도 합니다. numpy에서는 기본적으로 array라는 단위로 데이터를 관리하며 이에 대해 연산을 수행합니다. array는 말그대로 행렬이라는 개념으로 생각하시면 됩니다. 먼저 numpy를 사용하기 위해서는 아래와 같은 코드로 numpy를 import해야 합니다. import Library¶ In [4]: import numpy as np array 정의 및 사용¶ I..
[머신러닝] 앙상블 모델 구현 머신러닝 앙상블 모델 구현 1. 데이터 수집 각각의 요소에 대한 피처 값을 구한 뒤 csv 파일로 저장 이때, 마지막 열은 label 값이 지정된다. 2. 데이터 전처리 (Pre-processing) import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import GradientBoostingClassifier from sklearn.ensemble import AdaBoostClassifier from sklear..
[모두를위한딥러닝] 딥러닝 예측 값 높이기 1. Weight Initialization Xavier만 사용을 해도 최적의 Weight를 찾아내어 초기 Cost를 확실하게 잡아줄 수 있다. 파이썬 예시 코드 W = tf.get_variable("W", shape=[784, 256], initializer=tf.contrib.layers.xavier_initializer()) 2. Overfiting 학습 할 데이터를 전부 학습시켜서 새로운 샘플에 대해서 제대로 측정을 못하는 경우 이를 방지하기 위해 dropout을 사용하여 네트워크를 오버피팅 하지 않도록 한다. 1번과 2번에 대해 MNIST 예제로 적용 한 파이썬 코드 - 5계의 계층 - Xavier 적용 - dropout 적용 # input place holders X = tf.placehold..
[모두를위한딥러닝] Dropout과 앙상블 Dropout 학습을 할때 모든 노드를 전부 활용하지 않고 몇개의 노드는 끊어서 활용한다. 랜덤하게 어떤 뉴런을 삭제한다는 의미이다. 이런 방식이 왜 좋은가? 학습을 시킬 때 모든 요소들을 전부 학습 시키기 보다는 그 중 몇개 요소만 학습 시키고 나머지는 테스트에 활용한다. 그리고, 나서 다시 모든 요소를 다 활용하면은 최적의 결과가 있을 수 있다는 것이다. 파이썬 예제 코드는 다음과 같다. 학습을 시킬 땐, keep_prob를 0.7로 두어 일부 요소만 학습하도록 두고 실제 측정하고자 할 경우엔 keep_prob를 1로 둔다. # Lab 10 MNIST and Dropout import tensorflow as tf import random # import matplotlib.pyplot as plt ..
[모두를위한딥러닝] Weight 초기화를 잘해보자 weights에 대한 초기값은 매우 중요하다. 딥러닝에서 각 Layer간에 weights 값이 어떠한지도 매우 중요하다. Weight에 대한 값을 인풋으로 주었을 때 반대로 Weight가 원하는 방향으로 잘 적용되었는지 판단하기 위해 반대로 Layer 2-> Layer 1로 역계산하여 원래의 Layer 1에서 사용된 Weight 값을 추출한다. 즉, Layer 1 -> Layer 2에서 활용된 Weight에 대한 정확성을 보기 위해 Layer 2 -> Layer 1로 역계산하여 Layer 1의 Weight를 추출하는 것이다. 이러한 방식이라면 초기 Weight 값에 대한 선언을 Labels 만을 주어서 알아서 선언 할 수 있게 해줄 수도 있다. 그것이 바로 Find Tunning이라 부른다. Labels..
[모두를위한딥러닝] ReLU? ReLU에 대한 설명 이전에 ReLU의 등장 배경은 바로 Backpropagation 룰 때문이다. Layer의 수가 많으면 많을 수록 학습된 결과에 대해서 정확도가 높아야하는데 오히려 정확도가 떨어진다는 것이다. 이유는 경사에 대한 기울기가 사라진다는 것인데, 시그모이드 함수를 사용할 경우 결괏값에 대해서 Layer가 많을 수록 0에 수렴해진다는 것이다. 시그모이드의 값이 항상 0보단 크고 1보단 작은 값으로 Layer에 대한 결괏값을 또 다시 시그모이드에 대한 인풋으로 넣으면 값이 너무 작아진다는 것이다. 즉, 시그모이드의 1보다 작은 결괏값을 또 다음 계층의 시그모이드에 인풋으로 넣고 그 결괏값을 또 다음 계층의 시그모이드 인풋을 넣고 하는 행위를 많이 하다보면 값이 제대로 성립되지 않는다는 것이다..