라떼는말이야
핵심 머신러닝 기술 - 데이터 수집 단계, 특징 공학 본문
머신러닝 프로세스
1) 데이터 수집 단계
모든 데이터는 ‘컴퓨터가 이해할 수 있는’ 형식을 갖추어야 한다.
데이터 수집은 다양한 채널을 통해 이루어질 수 있다. 하드웨어로 수집 한다거나 웹 서버의 정보를 크롤링하거나, 이미 운영 중인 솔루션 또는 운영체제 자체에서 자동으로 기록하는 로그 정보도 좋은 데이터가 될 수 있다.
데이터가 어느 정도로 필요한 지 미리 규정짓는 것은 의미가 없다. 가능한 많은 데이터 확보가 우선 시 된다.
2) 특징 공학(Feature Engineering)
특징 공학 : 모델의 성능을 좌우하는 핵심 요소로, 머신 러닝 프로세스에서 가장 중요한 역할을 담당한다.
특징 공학은 데이터의 의미를 이해하고, 조작하고, 특징을 추출하고, 변환하는 모든 과정을 포함한다.
(1) 관찰과 전처리:
특징 공학은 데이터 관찰에서 시작한다.
데이터 관찰:
문제 해결에 도움을 주는 정보를 찾기 위함이 아니라 데이터 자체를 이해하기 위함이다.
데이터가 어떠한 형식으로 저장되어 있는지, 누락된 값은 없는지, 데이터 분포는 어떠한지 등을 종합적으로 살펴본다.
전처리:
누락된 데이터나 오류 값이 있으면 수정 또는 제거해주고, 단순 텍스트 형식의 로그 파일일 경우 가독성이 높은 테이블 형태로 파싱한 후 데이터베이스 또는 파일로 저장해주는 과정.
데이터 관찰과 전처리 과정은 시각화와 함께 진행해야 한다.
그러나 시각화로 본 내용이 그대로 결과에 반영될 것이라고 가정하면 안된다. 그저 보조 도구일 뿐이다.
(2) 특징 추출:
데이터 전처리 완료 후에는 모델링에 사용될 특징을 추출해야 한다. 특징 추출에는 크게 3가지 방법이 존재한다.
특징 추출의 3가지 방법:
통계 수치 : 통계학에서 데이터의 분포화 경향을 표현할 때 사용하는 수치 값들을 특징에 활용하는 방법이다. 주로 시계열 데이터에 적용하는 특징이다.
위 3가지 방법 중 하나를 택하는 것이 아니다.
특징 추출 단계에서 해당 특징이 모델링 정확도에 주는 영향도를 고려할 필요 없이 가능한 모든 특징을 뽑아 두는 것이 좋다.
하나의 특징 = 하나의 정보 = 1차원
n개의 특징을 가진다는 것은 n차원으로 표현한다고 말할 수 있다.
즉, 특징이 많아질수록 복잡도는 굉장히 높아진다. 그러나 컴퓨터는 100차원을 이해할 수 있다. 그렇다고 해도 특징이 너무 많으면 모델 성능에 독이 될 수 있다. (‘차원의 저주’ 문제라고 한다.)
(3) 특징 선택:
특징 선택 방법1: 최적의 조합을 찾을 때까지 특징 개수를 하나씩 늘리거나 줄이는 방법.
→ 간단하지만 특징이 많은 경우 선택에 엄청나게 많은 시간이 소요될 수 있다.
특징 선택을 위한 모델링은 해결하고자 하는 문제에 적용 가능한 모델을 3~5가지 정한 다음 여기에 선택한 특징 조합을 대입해보는 방식을 말한다.
특징 추출 단계에서 뽑아낸 10개의 특징으로 악성코드와 정상 프로그램을 ‘분류’하는 것이 목표일 때 대표적인 알고리즘인 SVM, 랜덤 포레스트, 나이브 베이스 분류기, 딥 뉴럴 네트워크를 테스트 모델로 선정한다.
다음으로 특징 조합을 하나 선택한 후 네 개의 모델에 각각 넣고 정확도를 계산한다. 가능한 모든 조합에 대한 정확도를 계산한 후에 네 개 모델 정확도 평균값이 가장 높게 나온 특징 조합을 선택하면 된다.
특징 선택 방법2: 도메인 지식을 바탕으로 휴리스틱(경험에 기반한 문제 해결)에 의존해 특징을 선택하는 방법
분석가의 입장에서 볼 때 의미가 없고 아무런 정보도 제공하지 않는 특징이라고 해도 머신 러닝 모델에는 정확도에 크게 기여하는 좋은 특징이 될 수 있기 때문에 무작정 골라내는 것보다 후보군을 선정한 후 전진선택 또는 후진제거 방식을 적용하는 편이 좋다.
(4) 변환 단계
변환 단계:
특징 값을 모델링에 적합한 형태로 변환하는 과정이다. 정규화, 스케일링, 범주형 데이터 처리 등이 여기에 속한다.
정규화 : 모든 특징의 값 범위를 동일한 범위로 맞춰주는 과정이다.
스케일링 : 특정 데이터를 정규 분포 형태로 변환해주는 과정이다. 가장 일반적인 방식은 데이터를 로그 변환하는(자연 로그) 것으로, 큰 수를 같은 비율의 작은 수로 바꿔주며(정규화), 복잡한 계산을 쉽게 만들고, 왜도(skewness)와 첨도(kurtosis)를 줄여 데이터 분석 시 의미 있는 결과를 도출할 수 있도록 해준다
특징 값이 수치형이 아닌 범주형 데이터일 경우 수치형 특징으로 변환해야 한다.
가장 대표적인 것은 One-Hot 인코딩이다. One-Hot 인코딩은 개별 특징 내에 포함된 유일한 문자의 개수만큼 특징을 추가한 뒤 각 특징을 0 또는 1로 표현하는 방식이다. 범주형 특징이 모델 판단에 중요한 정보를 포함하고 있을 경우 유용하게 쓰일 수 있으나, 특징의 개수가 범주의 개수만큼 증가한다는 단점이 있다.
다음 글에선 모델링 과정에 대해서 다룬다.
출처: 서준석, 『인공지능, 보안을 배우다』, 비제이퍼블릭(BJ퍼블릭)(2019년 04월 17일), p.38~48.
'프로젝트 > 인공지능 보안을 배우다' 카테고리의 다른 글
[Ubuntu] 아나콘다 설치 후 가상환경에서 jupyter notebook 실행 안되는 경우 해결방법 (0) | 2020.07.20 |
---|---|
정보 보안 분야의 인공지능 (0) | 2020.07.07 |
인공지능과 머신러닝(지도학습, 비지도학습, 강화학습), 딥러닝 (0) | 2020.07.07 |
[Ubuntu] 우분투에서 아나콘다 설치하기 (0) | 2020.06.16 |
[VMware] 우분투 환경에서 Bridged 네트워크 IPv4 주소 못받는 문제 (0) | 2020.06.16 |