머신러닝과 딥러닝 14

MySQL Workbench Shortcuts(MySQL 단축키)

MySQL은 보편적으로 많이 사용되는 SQL 프로그램입니다. 원활한 사용을 위해 단축키 몇 개만 정리하겠습니다! - 한 줄 실행 (세미콜론으로 구분되는 쿼리 하나실행) Ctrl + Enter - 전체 실행 (현재 스크립트 전체 실행) Ctrl + Shift + Enter - 새로운 에디터 열기 Ctrl + T - 저장된 스크립트 파일 열기 Ctrl + Shift + O - 쿼리 정렬 Ctrl + B - Reverse Engineer Database Ctrl + R

평가 지표 #2 - Classification metric

도입 첫 번째 평가 지표 게시물인 Regression Metric에 이어 Classification metric 즉, 분류 평가 지표에 대해서 정리해보겠습니다. Confusion Matrix (혼동 행렬) 위 이미지에 분류 평가 지표의 대부분이 들어 있다고 보시면 됩니다. 주의 해야할것은 혼동행렬의 "행"에 해당하는것이 실제값, "열"에 해당하는것이 예측값입니다. 구글에 confusion matrix를 검색하면 행열이 바뀐 경우도 많이 있어 혼동을 피하기 위해서 본인의 Rule대로 Confusion matrix를 생각하는것을 추천드립니다. 각 칸의 의미 True Positive(TP) : 실제 True -> 예측 True (정답) "Positive(양성을 예측해서) True(맞췄다)" False Posi..

평가 지표 #1-Regression metric

도입 평가지표에 대해서 2개의 포스팅을 할 생각입니다! 학습은 학습대로 중요하지만 학습이 얼마나 잘 되었는지 테스트 데이터에 대해서 평가를 함으로써 모델의 실효성을 판단할 수 있습니다. 첫번째 포스팅에서는 Regression metric을, 두번째 포스팅에서는 Classification metric을 다루어보겠습니다! MSE (Mean Squared Error) 일반적으로 가장 많이 쓰이는 회귀에서 평가지표입니다. 실제값과 예측값의 차이 제곱의 평균입니다. MAE (Mean Absolute Error) 실제값과 예측값의 차이를 절댓값으로 변환해서 평균한것입니다. MSE와 MAE는 어떤 부분이 다를까요? 쉬운 예로, 0과 1사이의 값을 제곱한다고 해봅시다. 0.1을 제곱하면 0.01이 됩니다. 값이 점점 ..

XGBoost, LightGBM, CatBoost 정리 및 비교

도입 Kaggle을 비롯한 데이터 경진대회 플랫폼에서 항상 상위권을 차지하는 알고리즘 XGBoost, LightGBM, CatBoost에 대해 정리하고 차이점을 비교해보고자 합니다. 세 알고리즘은 모두 Gradient Boosting기반의 Machine Learning 기법으로, XGBoost(2014년), LightGBM(2016년), CatBoost(2017년)에 Inital release되었습니다. 물론 initial release시기가 이럴 뿐 실제로 사람들이 많이 사용하기 시작한 시기는 알고리즘 모두 Initial release 기준으로 살짝 뒤로 밀려있다고 보여집니다. 알고리즘을 하나씩 정리하면서 차이점을 비교분석 해보겠습니다! XGBoost XGBoost는 기본적으로 GBM과 같이 decis..

부스팅(Boosting)

도입 이번에는 앙상블 기법 중 하나인 부스팅에 대해서 정리해보려고 합니다. 캐글과 같은 대회에서 쉽게 접할 수 있는 많은 알고리즘이 부스팅 기반 알고리즘입니다. 그만큼 가장 핫하고 중요한 분야라고 할 수 있습니다. 수식은 최소화하고 글로만 정리하겠습니다 부스팅(Boosting) 부스팅은 한마디로 이전 모델에서 좋은 결과를 내지 못했으니 가중치를 주어서 성능을 높이는 방식입니다. 학창시절 수능 공부를 할 때 수학과 과학에는 강했지만 국어와 영어와 같은 언어과목에는 약했습니다. 이때, 국어와 영어에 더 가중치를 두어서 학습해서 전체 성적을 올리는 방법이 부스팅이라고 하면 비슷한 비유가 될 것 같습니다 ㅎㅎ 부스팅은 복원 샘플링을 통해 다수의 샘플 N개를 만들어서 순차적으로 학습합니다. 샘플 1에서 잘 분류하..

RandomForest-랜덤포레스트

도입 제가 아는 한에서 RandomForest는 가장 가성비 좋은(?) ML 알고리즘입니다. 그렇게 복잡하지 않으면서 준수한 성능을낼 수 있고 이해하는데에도 큰 어려움이 없으면서 다른 복잡한 모델에 비해 Explainable합니다. RandomForest에 대해서 간단하게 알아보도록 하겠습니다. 앙상블 앙상블은 다른 모델들을 조합해 예측력을 향상시키는 것을 말합니다. 그리고 랜덤포레스트는 배깅 앙상블 기법입니다. 배깅 학교에서 데이터 마이닝을 수강하면서 Boostrap과 bagging을 접해 이해에 큰 어려움이 없었습니다. Bagging은 Boostrap Aggregating의 준말로 쉽게 말해 복원추출 기반의 Sampling 기법이라고 생각하면 됩니다. 위 이미지를 기반으로 설명해보자면, 1. D라는 ..

Decision Tree와 CART

도입 많은 Tree기반 분석 방법론의 기본 토대가 되는 의사결정나무(Decision Tree)와 대표적인 의사결정나무의 일종인 CART(Classification And Regression Tree)에 대해 정리해보고자 합니다. 이미지를 보면 간단하게 이해할 수 있습니다. 위 이미지의 데이터는 대표적인 분류 문제인 Titanic입니다. Decision Tree는 말그대로 변수들을 거치면서 단순하게 분류를 해나가는 것으로 볼 수 있습니다. - Is passenger Male? 은 루트노드 - Age

CNN 모델의 발전 과정 #1

도입 ratsgo`s blog(ratsgo.github.io/deep%20learning/2017/10/09/CNNs/)와 dataplay.tistory.com/24, adeshpande3.github.io/adeshpande3.github.io/The-9-Deep-Learning-Papers-You-Need-To-Know-About.html 를 많이 참고하여 제가 아는 내용을 첨가해 정리하였습니다. 4. CNN 발전 (1) - Alexnet, GoogLeNet 1. CNN의 발전 CNN은 1990년대 Yann LeCun 교수가 발표한 이후, 발전을 많이 했습니다. 특히 2010년 초중반에 많은 발전이 있었습니다. Conv layer 자체에서 Convolution을 어떤식으로 진행할지를 고민하는 차 da..

CNN 기본 용어 및 개념 정리

작성동기 오늘은 CNN의 기본 용어와 개념을 정리해볼까합니다. 전에 인공지능과 관련된 인턴을 하면서, 이미지데이터를 많이 다루었음에도 불구하고 개념적으로 이해하지 못했었습니다. 특히, S사 면접에서 질문이 들어왔을때 동문서답을 면치못했던 트라우마가 강하게 남네요. 물론 저는 통계학 전공이라 학교에서 인공지능 관련된것을 제대로 배운적이 없지만, 그래도 인턴과 공모전 등에서 CNN을 포함한 딥러닝 모델 개발의 경험이 있었기때문에 뼈아팠습니다. 아무튼 겸사겸사 CNN내용을 정리해볼까 합니다. 도입 기본적인 DNN모델은 "지역성"을 가져올수가 없습니다. 아래 MNIST데이터를 한번 예시로 들어보죠! MNIST는 대표적인 이미지 분류 문제이며, 0~9까지의 손글씨 이미지를 분류하는것이 목적입니다. 일반적인 DNN..

Image Cropping(이미지 자르기) by Python, Numpy

Python의 Numpy를 활용하여 Image를 Cropping해보겠습니다. 프로젝트 보안상 예시 이미지만을 활용하는 점 이해해주세요 목적은 흑/백으로만 이루어진 데이터에서 Object주위에 Margin을 어느정도 주고, 잘라내는 것 입니다. 예를 들어 이미지에서 코 부분만 따로 떼어내는 작업(Cropping)이라고 할 수 있습니다. 분류모델을 만들기 전의 전처리 작업이라고 보시면 될 것 같네요. Package import import os import numpy as np import cv2 from matplotlib import pyplot as plt Image Read path = 'ch/001/001_Test/' img = cv2.imread(root + 'a_372874_m_R_1.jpg')..