비즈니스의 이해 -> 데이터 탐색 ->데이터 전처리 -> 모델링 -> 평가 -> 배포
알고리즘 선택 -> 하이퍼파라미터 튜닝 -> 모델 완성
HTML 코드와 악성 사이트 여부로 구성된 엑셀 파일
데이터 탐색 및 전처리의 연습용 데이터로, 실제 분석에 사용되지는 않았다.
전처리된 데이터와 악성 사이트 여부로 구성된 csv 파일
feature selection과 결측치 처리등의 전처리가 필요하다.
df = pd.read_excel('파일명', engine='openpyxl')
re
는 정규식을 이용한 연산을 지원하는 라이브러리이다.re.compile()
함수에 정규식이나 간단히 문자열을 매개 변수로 전달하면 정규식을 통해 문자열을 서칭할 수 있는 정규식 객체가 반환된다.matches = html.find_all(string=re.compile(' '))
각각의 feature에 대해 boxplot으로 분포를 확인하고, 이상치가 어떠한 값을 갖고 있는지 탐색하였다.
대부분의 feature가 오른쪽으로 긴 꼬리(및 이상치 후보)를 갖고 있음을 확인할 수 있었다.
왜도와 첨도를 수치화하면 더 좋았겠지만 아쉽게 시간 관계상 진행하지 못하였다.
단변량 분석을 통해 파악한 중복 변수 및 의미 없는 변수를 제거하였다.
모델링을 위해 object 자료형을 갖는 범주형 데이터를 숫자형으로 변환하였다.
불균형 데이터로 인한 학습 치우침을 막기 위해 stratify를 적용하여 학습 데이터와 검증 데이터를 분류하였다.
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, stratify=y)
가능한 많은 알고리즘을 테스트하기 위하여 함수 및 for문을 사용했다.
return을 시각화가 가능한 형태로 받았으면 시각화를 통해 정리가 가능하겠지만, 미처 거기까진 생각하지 못하여서 accuracy 및 F1-score를 비교하는 정도를 진행하였다.
테스트 결과는 XGBoost ≒ LightGBM ≒ GradientBoosting > RandomForest >> 기타모델로 앙상블 알고리즘에서 매우 높은 성능을 보였다.
약간이지만 더 높은 성능 점수를 기록한 XGBoost 알고리즘에 대해 GridSearch를 진행하였다.
먼저 learning rate를 서치하여 고정한 뒤, max_depth를 서치하였다.
XGBoost는 튜닝할 수 있는 요인이 많기 때문에 관련해서 더 학습한다면 조금 더 개선된 모델을 만들 수 있을 것이다.
정말 중요한 변수이고 조작이 필요하다면 직접 데이터 탐색을 수행해야겠지만
데이터를 훑어보고 특징을 파악하는 정도라면 정말 유용하게 쓰일 것 같은 라이브러리이다.
1일차에 데이터 탐색이 부족했던 것이 아쉬웠는데, 이번에는 많은 시간을 소요하고 인사이트 역시 도출할 수 있었다.
Robust Scaling이라는 새로운 방법을 시도해보았다.
거의 처음으로 모든 모델링 과정을 온전히 수행하였다.
하이퍼파라미터에 대한 지식이 부족해 완전히 최적화된 파라미터값은 찾지 못한 것 같다. (성능 점수의 큰 차이 없음)
강의의 1/3 정도는 강사님의 설명이 있었는데 실습을 진행하기 바빠 설명을 거의 듣지 못했다.
늦어도 이번 주말에는 중요 부분이라도 강의를 시청하면서 놓쳤던 부분을 들어야 할 것이다.