Machine Learning 9

url dataset 분석 작업

url 및 category가 있는 데이터셋을 구하게 되어 데이터 분석을 먼저 진행하게 되었다. 대략 25000건의 csv파일을 구하게됨 url의 형태이기에 먼저 domain을 추출하는 작업 진행 import pandas as pd from urllib.parse import urlparse def urltodomain(url): o = urlparse(url) domain = f'{o.scheme}://{o.netloc}' return domain data = pd.read_csv('./url_db.csv',encoding = 'cp949') pd_urls = data['url'].tolist() domain_list = list(map(urltodomain,pd_urls)) domain 추출하고 cat..

Machine Learning 2020.11.01

카테고리 분류를 위한 Model 생성 도전

Machine learning하면서 중요하게 느껴진 것은 데이터의 라벨링이다. 현재 도전하고 싶은 주제가 생겼는대 도메인들을 크롤링하여 해당 html내 정보들을 이용하여 카테고리를 자동으로 분류 할 수 있을지 호기심이 생겨 시작해보려고 한다. 현재 가지고 있는 기본 데이터셋을 구성해보진 않았지만 url과 해당 url의 카테고리 정보들을 db화 후 테스트를 해보고자 한다. 앞으로의 계획표 1. url -> 도메인 추출 후 중복 제거 작업 2. domain : catagory로 데이터셋 정리 3. 크롤링 모듈 제작 4. domain : catagory : data로 도메인 내 데이터 추출 작업 5. 데이터 분석 (html내 어떠한 정보를 학습시킬지 선정 ex)keyword, image etc.. 생각나는게 ..

Machine Learning 2020.10.28

.text section을 image resizing 후 CNN 모델생성(2)

글은 올리지 않았지만 64*64를 진행 후 성능이 생각보다 좋지않아 128*128로 리사이징을 재진행 후에 CNN 학습을 시켜보았다. 하지만 안타깝게도 64*64나 128*128 리사이징이나 똑같이 overfitting 현상이 일어난다. epoch이 지날때마다 traing loss는 눈에 뛰게 줄어들고 있는대 validation_data의 loss는 뒤죽박죽이다. Dropout으로 일차적으로 overfitting을 줄여보고 정규화도 진행하였지만 상황이 나아지지 않았고 여러 방법으로 리사이징하여 CNN을 돌려보았다. 사용한 코드 import numpy as np import os import tensorflow as tf from tensorflow.keras.models import Sequential ..

Machine Learning 2020.08.05

.text section을 image resizing 후 CNN 모델생성(1)

기존에 했던 단순 0으로 채워넣거나 배열의 자르는 방식으로 resizing 했던 방식과는 다르게 tensorflow.image.resize 모듈을 사용해보기로 하였다. 여러가지 method가 있는대 어떠한 method가 가장 좋은지 모르겠으니 전부다 테스트 해보기로 결정 .text section data를 추출한 res_df의 data column에서 각 파일의 데이터 길이로 sqrt하여 reshape작업 ex) file - > .text section의 총길이가 ->100 이면 10x10으로 reshape해주는 작업 image = res_df['data'].values tmp = [] for x in tqdm(image): s = int(x.shape[0]*0.3) e = int(x.shape[0]*0..

Machine Learning 2020.08.03

pefile 악성코드 판단하는 CNN 모델 - 모델생성(2)

기존의 dataset으로의 trainset 과 testset으로 나눈 후의 모델성능이 0.90, 현재 이모델을 만들 때 사용 한 데이터는 대략 11만개의 악성코드와 2만개의 정상 파일로 만든 dataset 해당 모델로 최신 악성코드들로 천개 가량을 모아서 testset을 생성하여 model 성능 평가 저장해놓은 모델을 실수로 날려서 새로운 모델을 간단하게 epoch 5회로 생성 후 testset으로 평가 시작 validation set은 0.9267이 나왔지만 testset의 평가는 0.6548로 엄청나게 성능이 나오지 않았다. 그림상으로 나오진 않았지만 50회 진행 후 작업시 0.73이 최대치였으며 최소한 0.85이상은 만드는 것이 목표이다. 생각한 문제점들은 overfitting이 심하게 되었고, g..

Machine Learning 2020.07.31

Tensorflow cuDNN failed to initialize error 해결

Tensorflow CNN 모델을 생성하면서 아래의 에러메시지가 지속적을 발생 처음에는 같은 서버를 사용하는 사람이 몇명 있어서 메모리가 꽉차서 그러한가 했지만 확인결과 cuDNN 버전 에러를 확인 Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. 이 에러가 계속 뜨기에 현재 정부기관중 한 곳에서 지원받은 고성능 서버에서 작업을 진행 중인대, 초기 ubuntu 14.04설치 버젼에 여러 conda env list들이 있었다. 저번에 실행을 했던 곳은 tensorflow 1.15 ..

Machine Learning 2020.07.31

pefile 악성코드 판단하는 CNN 모델 - 모델생성

데이터 전처리가 끝난 후 64*64 = 4096 size의 data를 학습하는 CNN 모델을 생성 앞에 데이터 전처리 과정 코드가 frombuffer를 data = np.frombuffer(raw_data, dtype = np.uint8) 로 수정하여 데이터 재 추출 작업을 하였다. np.uint8로 추출 하게 되면 binary array -> img -> numpy array resize 결과 값과 동일하게 리사이징 되는 것을 확인 가능(gray scale로 추출할때) 아직까지 픽셀 하나 하나의 값이 0~255의 값이 저장이 되는대 img의 크기가 사이즈를 변경 할때 확대가 되었다 축소가 되었을 때 값이 정확히 어떻게 바뀌는지 어떠한 알고리즘이 사용되는지 확인을 하지 못하였다. 일단 간단하게 https..

Machine Learning 2020.07.30

pefile 악성코드 판단하는 CNN 모델 - 데이터 전처리

PE file의 구조 중 .text부분을 캡스톤을 이용한 opcode시퀀스 추출 후 CountVectorizer로 벡터화 후 모델 테스트시 생각보다 성능이 굉장히 좋지 않았다 다른방법을 생각 중 .text의 binary를 추출하여 image화 한 후 CNN 모델로 테스트 해보기로 하였다 **pe file의 정적 피처들의 단점은 조작을 가하거나 패킹이 되있을 시 정상적으로 데이터가 추출이 되지 않는 단점이 있다. 1. 첫번째로 pefile을 다룰 python 라이브러리인 pefile을 설치 pip install pefile 2. pefile을 dir 내장함수로 어떠한 method들이 있는지 간단하게 확인 pe = pefile.PE(file_path) pe dir(pe) ['DIRECTORY_ENTRY_IM..

Machine Learning 2020.07.27

LightGBM, XGBoost gpu 가속 설정

회사내에서 머신러닝 작업을 하며 쓰는 모듈로 점차 데이터량이 늘어나게 되며 cpu의 한계를 느끼게 됨 그래서 사용하는 모듈들의 GPU사용 방법을 찾아보게되며 검색한 결과 차후에 또 설정을 할 일이 있을 것 같기에 간단하게 정리해본다. LightGBM gpu install 관련 Document - https://lightgbm.readthedocs.io/en/latest/GPU-Tutorial.html XGBoost gpu install 관련 Document - https://xgboost.readthedocs.io/en/release_0.81/build.html 위의 해당 두개 문서를 참고하며 설치를 진행 Linux - Ubuntu 16.04 LST 버전에서 진행하였으며 Virtualenv로 설치한 Ju..

Machine Learning 2020.07.22