조회수 높은 글
-
Machine Learning
[ML] XGBoost 이해하고 사용하자
순서 개념 기본 구조 파라미터 GridSearchCV 1. 개념 'XGBoost (Extreme Gradient Boosting)' 는 앙상블의 부스팅 기법의 한 종류입니다. 이전 모델의 오류를 순차적으로 보완해나가는 방식으로 모델을 형성하는데, 더 자세히 알아보자면, 이전 모델에서의 실제값과 예측값의 오차(loss)를 훈련데이터 투입하고 gradient를 이용하여 오류를 보완하는 방식을 사용합니다. 수식으로 설명하자면, 1번 모델 : Y = w1 * H(x) + error1 1번 모델 오차(loss)의 보완 : error1 = w2 * G(x) + error2 2번 모델 : Y = w1 * H(x) + w2 * G(x) + error2 2번 모델 오차의 보완 : error2 = w3 * M(x) + e..
-
Data Preprocessing
언더 샘플링(Undersampling)과 오버 샘플링(Oversampling)
* 해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민, 2019) 교재를 참고하여 공부하며 작성한 글입니다. 순서 언더 샘플링과 오버 샘플링의 개념 SMOTE 개념 SMOTE 코드 1. 언더 샘플링과 오버 샘플링의 개념 데이터가 불균형한 분포를 가지는 경우, 모델의 학습이 제대로 이루어지지 않을 확률이 높습니다. 이 문제를 해결하기 위해 나온 개념이 언더 섬플링(Undersampling)과 오버 샘플링(Oversampling)입니다. 언더 샘플링은 불균형한 데이터 셋에서 높은 비율을 차지하던 클래스의 데이터 수를 줄임으로써 데이터 불균형을 해소하는 아이디어 입니다. 하지만 이 방법은 학습에 사용되는 전체 데이터 수를 급격하게 감소시켜 오히려 성능이 떨어질 수 있습니다. 오버 샘플링은 낮은 비율 클래스의 ..
-
Machine Learning
[ML] 스태킹(Stacking) 완벽 정리
이 포스팅만 읽으면 스태킹을 쉽게 이해할 수 있도록 정리해봤습니다 :) 천천히 읽어볼까요? 순서 스태킹의 핵심 개념 스태킹의 원리 목표 기본모델 최종모델 코드 1. 스태킹의 핵심 개념 스태킹은 여러 가지 모델들의 예측값을 최종 모델의 학습 데이터로 사용하는 예측하는 방법 입니다. 아직 잘 와닿지가 않나요? 간단한 예시를 아래 그림과 함께 들어보겠습니다. 저는 knn, logistic regression, randomforest, xgboost 모델을 이용해서 4종류의 예측값을 구했습니다. 그리고 이 예측값을 하나의 데이터 프레임으로 만들어 최종모델인 lightgbm의 학습데이터로 사용했습니다. 지금은 기본 모델로부터 예측된 값들이 최종모델의 학습데이터로 사용된다는 것만 이해하면 됩니다. 자세한 내용은 다..
-
Data Preprocessing
IQR 방식을 이용한 이상치 데이터(Outlier) 제거
* 해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민, 2019) 교재를 참고하여 공부하며 작성한 글입니다. 이상치 데이터(Outlier)는 모델의 성능을 떨어뜨리는 불필요한 요소이기 때문에 꼭 제거해주어야 합니다. 그렇다면 어떻게 이상치 데이터를 찾을 수 있을까요? 1차적으로 EDA 과정에서 그래프를 통해 발견할 수 있습니다. 하지만 이 방법은 소수의 데이터가 평균으로부터 눈에 띄게 떨어진 경우에만 가능하다는 한계가 있습니다. 따라서 "어디까지가 이상치 데이터다" 라고 판단하는 기준이 필요하게 되는데요, 여러가지 방법들 중 오늘은 IQR(Inter Quantile Range) 방식에 대해서 정리해보겠습니다. IQR 방식은 사분위(Quantile) 개념으로부터 출발합니다. 전체 데이터들을 오름차순으로 정..
-
Data Visualizing
matplotlib 완벽 정리
데이터 분야 공부를 시작할때 가장 먼저 만나는 세 가지 라이브러리를 꼽자면 numpy, pandas, matplotlib 입니다. 오늘은 그 중 matplotlib 에 대해서 정리해볼텐데요, 개인적으로 처음 이 라이브러리를 접했을때 정말 헷갈렸습니다. 어떤 커널에서는 plt.plot으로 표현하고, 또 다른 커널에서는 ax.plot 혹은 axes[0,0].plot으로 표현되어있기 때문입니다. 그리고 가령 히스토그램을 그린다면 누구는 plt.hist로 구현했는데, 또 다른 누구는 plt.plot(kind='hist)로 구현했기 때문에 일목요연하게 정리되지 않았습니다. 그래서 오늘 포스팅을 기획하게 되었는데요, 해당 포스팅의 목적은 두 가지 입니다. 첫 번째, 왜 이렇게 표현방식이 다양하고, 어떻게 정리할 수..
-
한이음 ICT 멘토링 (KT 연계)
한이음 공모전 입선, 한국정보처리학회 추계학술대회 은상 수상 후기
2020년 7월부터 12월까지 약 6개월간의 장기 프로젝트를 마쳤습니다~~ 해당 프로젝트는 타 대학교 4명의 학생들과 KT 직원 한 분까지 총 6명으로 구성하여 진행되었고, 주제는 '머신러닝/ 딥러닝을 이용한 통신서비스 이용고객 분석 및 이탈예측' 이었습니다. 프로젝트의 타임라인은 아래와 같이 크게 4부분으로 나뉠 수 있는데요, 한 번 살펴봅시다. 1. 캐글의 통신사 고객 데이터를 이용하여 이탈 예측 모델링 연습 2. 실제 KT 고객 데이터를 이용하여 데이터 전처리 및 모델링 3. 태블로(Tableau)를 이용한 대쉬보드 시각화 4. 장고(Django)를 이용한 웹 구현 그리고 대망의 결과는.. 한이음 공모전 입선!!! 한국정보처리학회 추계학술대회 은상!!! 그럼 그 수상작을 가볍게 보여드리겠습니다 ㅎㅎ..
-
Machine Learning
[ML] 결정트리(Decision Tree) 한 번에 정리하기
* 해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민, 2019) 교재를 참고하여 공부하며 작성한 글입니다. 순서 결정트리 알고리즘의 개념 개념 구조 하이퍼파라미터 튜닝 특성중요도 1. 결정트리 알고리즘의 개념 1-1. 개념 결정트리 알고리즘을 한 마디로 설명하면 스무고개 입니다. 그런데 기가막히게 예리한 질문지들을 척척 만들어내는 녀석입니다. 예를 들어 강아지, 고양이, 새 사진이 각각 100장씩 섞여있는 그룹에서 이 세 가지를 정확하게 분류하려면 어떤 질문들이 필요할까요? 일단 날개가 있는지로 새를 정확하게 분류할 수 있을 것 같습니다. 그리고 날개가 없는 강아지와 고양이는 눈동자의 모양이 날카로운지에 따라 분류할 수 있을 것입니다. 하지만 이 기준으로 강아지와 고양이를 100% 분류할 수 없기 때문..
-
Dacon
[Dacon] 전력수요 및 SMP 예측 AI 경진대회 - 결과분석
3. 결과 분석 5월 25일부터 현재(5월 31일)까지의 점수로는 17등을 기록하고 있습니다. 시간이 지날수록 실제 데이터 값이 공개되면서 등수가 변경되는데, supply를 예측할때 22일 이후를 기점으로 모델에 변화(학습데이터 60개 -> 90개)를 주었기 때문에 6월 9일을 기점으로 등수가 떨어지거나 오르거나 할 것 같습니다. - 아쉬운 점 Part 1에서도 언급했듯 유가 데이터가 SMP 예측에 가장 큰 영향을 주는 요인입니다. 하지만 유가데이터의 예측 모델을 보면 정확하게 예측하고 있지 못하고 있음을 확인할 수 있는데 이는 모델이 최근 코로나 사태나 사우디와 러시아 사이 관계를 고려할수 없기 때문입니다. 그래서 생각한 방법이 딥러닝인데 (특히 LSTM), 딥러닝 지식이 전무할 뿐만아니라 텐서플로우 ..
-
Career
2021년 제일기획 데이터기획직 대학생 인턴 후기
소중했던 6주 간의 제일기획 인턴 생활을 마치고 이제 후기를 써보려고 합니다! 이 글이 먼 훗날 저 스스로에게도, 그리고 취업 준비를 하는 사람들에게도 도움이 되었으면 좋겠네요 :) 글은 인턴 생활 중에 인상 깊었던 에피소드 형식으로 작성해보려 합니다. 그럼 바로 시작해볼게요! - Ep1. 전국에서 한 명 뽑았다. 그게 바로 나? - Ep2. 내 인생 첫 사회생활, 풀정장으로 시선 집중 - Ep3. 유튜브에서 뵙던 분이 눈 앞에! - Ep4. 서프라이즈 생일파티 - Ep5. 면접을 그렇게 잘봤다고 하던데~ - Ep6. 직접 느껴본 제일기획 장점 - Ep7. 과제 준비 과정과 최종 발표, 그리고 느낀 점 Ep1. 전국에서 한 명 뽑았다. 그게 바로 나? 인턴 선발 최종 발표가 나고 며칠 후, 제일기획 인턴..
-
SQL
SQLD 자격증 취득 후기
제 39회 SQLD 시험에서 합격을 했습니다. 작년 이맘때까지만 해도 SQL이 무엇이고, 왜 필요한지조차 몰랐는데, 어느덧 자격증까지 취득한 제 자신이 자랑스럽네요! 제가 했던 공부방법은 다음과 같습니다. 1. 기본서 2회독 (1주일 소요) - 'SQL 전문가 가이드' 책은 교내 도서관에서 빌려보는 것을 추천드려요! 1회독은 챕터별 흐름과 학습목표에 집중! 2회독은 정독! 2. 노랭이 문제 2번 풀기 (1주일 소요) - 'SQL 자격검정 실전문제' 처음 풀 때 꼼꼼히 풀기 (핵심 개념 문제 옆에 필기) 두 번째는 틀린문제 위주로 풀고, 필기된 핵심 개념 읽기 Tip. 해설집을 봐도 이해가 안가는 문제는 아래 카페에 검색해보세요! 다 나옵니다! 3. 복원 기출문제 풀기 (시험 하루 전) - '네이버 SQL..
-
Machine Learning
[ML] LightGBM 이해하고 사용하자
순서 개념 기본 구조 파라미터 1. 개념 * 이 글을 읽기 전에 앙상블 포스팅과 XGBoost 포스팅을 읽고 오시는 것을 추천드립니다. XGBoost와 LightGBM은 결정트리(Decision Tree) 알고리즘 기반의 대표적 부스팅 앙상블 기법입니다. 간단하게 설명드리자면 트리의 오차(loss)를 점점 수정해나가는 방법으로 성능을 향상시키는 아이디어 인데요, 최근 캐글과 데이콘의 상위권 커널들에서 주로 사용되어 유명세를 타고 있습니다!! 그렇다면 지난번에 공부한 XGBoost와 LightGBM은 어떤 차이가 있을까요? 우선 LightGBM은 XGBoost의 시간적 한계를 보완한 알고리즘이라고 기억하시면 될 것 같습니다. 어떻게 시간적 한계를 보완했을까요? 바로 노드의 분할 방법에 차이를 두었습니다. ..
-
Machine Learning
[ML] Linear Regression
Linear regression : 데이터를 가장 잘 대변하는 직선을 구하는 것 Q : '데이터를 잘 대변한다' 는게 뭔데? A : 예측값과 실제값의 차이가 크지 않은 것!! Q : 그런 직선을 어떻게 구하는데? A : 일단 지금 말한 것들을 식으로 만들어보자!! 파란 점선 : Hypothesis (H(x)) = w*x + b 빨간 직선 : Cost (loss, error) = H(x) - y = 예측값 - 실제값 Q : 데이터를 잘 대변하는 직선을 만들기 위해서는 cost가 가장 작아야 하는구나!! 그럼 cost가 가장 작은 직선을 어떻게 찾아? A : 고등학교때 2차함수의 최솟값을 구할때 f(x)를 미분하고 어쩌구 했던거 기억나? 마찬가지로 f(x)를 정의하고 그걸 미분한걸로 cost가 가장 작은 직..
-
Python
[Python] 예외 처리 - 아이디 만들기 구현
안녕하세요. 오늘은 간단하게 예외처리(try, except) 문법을 이용해서 간단한 예제를 만들어보았습니다. 개념공부만 하는 것보다는 직접 해봐야 머리 속에 잘 들어오더라구요! 그래서 이런 예외 처리를 실무에서는 어떻게 사용할지 한번 생각해보고 간단하게 구현해봤습니다. (물론 실무에서는 이렇게 사용하지 않겠죠..?) 제가 생각해본 예제의 목표는 다음과 같습니다. 아이디를 만들기 위해 input 값을 사용자로부터 받을 것 대문자가 포함된 아이디는 에러를 발생시킬 것 특수문자가 포함된 아이디는 에러를 발생시킬 것 사용 가능한 아이디를 입력할때까지 자동 반복될 것 그럼 시작해볼까요!! 먼저 사용자 정의 에러 클래스를 만들었습니다. 처음부터 모든 코드를 작성하는 방법보다, 기존 클래스를 상속받아 함수를 수정하는..
-
Python
[Python] 모듈 사용법, pip의 원리
지난 포스팅에서 비슷한 코드의 작성을 피하기 위해 클래스가 필요하다고 했습니다. 오늘은 이 클래스를 파일로 저장하고, 필요할 때마다 호출해서 사용하는 방법을 공부해보겠습니다. 클래스와 함수들을 모아둔 파일(.py)을 모듈이라고 합니다. 코딩을 시작하기 전 import numpy as np 혹은 import pandas as pd 를 작성해본 적 있으시죠? 이게 쉽게 말하면 내 컴퓨터에 저장되어 있는 numpy.py 라는 파일과 pandas.py 라는 파일을 호출하는 것입니다. 나는 컴퓨터에 그런 파일을 저장한 적이 없으시다구요? numpy와 pandas의 경우에는 아주 기본적인 모듈이기 때문에 파이썬을 설치하면 자동으로 컴퓨터 저장됩니다. 그래서 따로 저장할 필요가 없었던거죠. 새로운 모듈의 경우에는 별..
-
Summary
딥러닝 입문자를 위한 모델 구조 (Computer Vision)
머신러닝을 처음 공부할때 어려웠던 점 중 하나는 지금 어떤 부분을 공부하고 있는지 몰랐던 겁니다. 예를 들어, tree 기반 알고리즘을 공부할때 '불순도' 라는 개념을 공부했을 것입니다. 그 당시에는 불순도가 이런거고, gini계수랑 엔트로피가 이런거구나!! 했지만, 전체적인 머신러닝 모델 관점에서 봤을때는 이 개념이 왜 필요한지, 어디 부분인지를 몰랐습니다. 하지만 머신러닝에 대한 지식이 어느 정도 쌓인 지금은 대답할 수 있습니다. 전처리, 모델링, 학습 및 평가 중 모델링에 속하고, 모델링의 알고리즘에는 로지스틱, 랜덤포레스트, XGBoost 등 다양한 알고리즘이 존재하지만, 그 중 tree 기반의 알고리즘에서 노드가 분할하기 위한 기준으로 불순도가 사용된다는것을요! 만약 불순도를 처음 공부할 때 이..