본문 바로가기

Tech

(580)
[SQL] MySQL - ORDER BY 와 IN 함께 사용하기 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 SQL Zoo임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 SQL Zoo 사이트를 방문해보세요! 이번 포스팅에서는 ORDER BY 절에 IN 문법을 사용하는 방법으로 SQL 문제를 해결하는 방법에 대해 알아보려고 한다. 해당 문제는 여기의 14번 문제이다. 우선 문제를 풀기 위해 사용되는 테이블과 문제를 살펴보자. Show the 1984 winners and subject ordered by subject and winner name; but list Chemistry and Physics last. (1984년에 수상한 수상자들을 출력하는데 우선 subject 기준으로 오름차순(알파벳 순서)로 정렬한 후 winner 기준으로 오름차순으로 정렬해..
[SQL] MySQL - ALL 사용법 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 SQL Zoo임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 SQL Zoo 사이트를 방문해보세요! 이번 포스팅에서는 MySQL에서 사용되는 문법 중 하나인 'ALL'을 사용하여 SQL 문제를 푸는 방법에 대해 알아보려고 한다. 3가지 문제를 풀어볼 텐데, 첫 번째 문제에서 ALL에 대한 방법을 익히면 2, 3번째 문제는 감을 잡고 손쉽게 풀 수 있다. 우선 해당 문제와 문제 풀 때 이용할 데이터 테이블에 대해 살펴보자. 첫 번째 문제는 다음과 같으며 문제가 요구하는 정답의 테이블 형태도 함께 살펴보자. List each continent and the name of the country that comes first alphabetically. (각..
[ML] Regression metric 과 Elastic net regression 이번 포스팅에서는 회귀(Regression) 모델의 성능을 평가하기 위한 메트릭에 대한 종류들을 비교해보면서 어떠한 용도로 쓰이는지 파악을 하는 내용에 대해 알아보자. 또한 회귀 모델 중 정규화(Regularization) 항을 추가한 2가지 모델 Lasso 회귀(L1 norm 적용)와 Ridge 회귀(L2 norm 적용)의 결합 버전인 Elastic net 회귀 모델에 대해서도 알아보자. 앞으로 소개할 목차는 다음과 같다. 1. MAE vs RMSE 2. MAPE 3. MASE 4. Elastic net regression 1. MAE vs RMSE MAE(Mean Absolute Error)와 RMSE(Root Mean Squared Error)는 아마 회귀 모델 성능을 평가하는 척도로 가장 자주 사..
[ML] Out Of Fold(OOF) 방법으로 모델 평가하기 🔊 해당 포스팅은 인프런 강의의 캐글 Advanced 머신러닝 실전 박치기 강의 내용을 토대로 재구성하였음을 알려드립니다. 해당 강의에 대해 더 궁금하시다면 여기를 클릭해주세요. 이번 포스팅에서는 머신러닝 모델의 성능을 평가하는 방법으로서 OOF 방법이라고 알려져 있는 Out Of Fold 방식에 대해 알아보려고 한다. OOF 방식은 실무보다는 Kaggle, Dacon과 같은 예측 알고리즘 대회에서 자주 사용되는 방식이라고 한다. 그럼 OOF 방식은 어떻게 동작하는 걸까? 우선 OOF 방식은 Fold를 이용한다. Fold라.. 어디에선가 많이 들어봤지 않은가!? 데이터수가 적을 때 모델의 오버피팅 가능성을 예방하기 위해 자주 사용되는 교차검증 방법인 K-fold cross validation에서도 Fol..
[ML] Bayesian Optimization으로 파라미터 튜닝하기 이번 포스팅에서는 머신러닝 모델의 하이퍼파라미터를 튜닝하는 방법 중 하나인 Bayesian Optimization에 대해 알아보려 한다. 그리고 간단한 예시를 통해 Bayesian Optimization 라이브러리가 얼마나 최적의 해와 근사하게 구하는지도 살펴보자. 참고로 Bayesian Optimization의 디테일한 수학적 수식보단 직관적인 이해와 어떤 과정으로 Bayesian Optimization이 수행되는지에 초점을 맞추었다. 자세한 수학적 수식은 하단의 레퍼런스를 참조하자. 하이퍼파라미터 튜닝은 머신러닝 모델의 성능을 향상시키는 데 상당한 기여를 한다. 경우에 따라 모델이 너무 복잡해 발생하는 Overfitting 문제도 예방할 수 있으며 반대로 모델이 너무 단순하여 발생하는 Underfit..
[회고] 2020년을 보내며 2021년 새해가 밝았다. 2020년은 유독 수많은 놀라운 사건들 뿐만 아니라 수많은 복잡하고 미스테리한 사건들이 발생한 한 해였던 것 같다. 역대급의 인공지능인 GPT-3 시리즈가 등장하며 사람들을 놀라게 하기도 했고 중국에서 발발하여 지금까지도 전세계를 고통받게 하고 있는 COVID-19 전염병으로 인해 사람들은 여전히 고통을 받고 있다. 모든 사람들에게 마치 잃어버린 1년처럼 느껴졌을 것이다. 그래도 시간을 흘러 2021년이 되었다. 2020년에 무슨일이 일어났다 해도 1년이라는 시간을 분명하게 흘렀고 그 1년동안 내가 무엇을 해왔는지, 또 어떤 점이 부족했고 이에 기반해 앞으로 어떤 것들을 계획하고 다짐해야 할지 생각해보기 위해 2020년 회고글을 작성해보려 한다. DSC Solution Chal..
[Python 중급] 일급함수(First-class)와 클로저, 데코레이터 🔊 해당 포스팅은 인프런의 파이썬 중급 강의를 공부하면서 복습차원으로 정리한 포스팅입니다. 해당 내용은 주로 본인의 복습용이라서 자세한 설명은 없는 점 양해 부탁드리겠습니다. 원본 코드는 여기에 있습니다. 이번 포스팅에서는 파이썬의 일급함수(일급객체)의 특징에 대해 간단히 알아보고, 데코레이터를 만들기 위해 필요한 클로저에 대해 실습해보고 클로저 함수를 이용해 데코레이터까지 만들어보는 실습을 해보자. 1. 일급함수(First-class)의 특징 파이썬 일급함수의 특징으로는 다음의 4가지 특징이 존재 런타임 초기화 : 실행 시점에 초기화가 됨을 의미 함수를 변수에 할당이 가능 함수를 또 다른 함수 인자로 전달 가능 함수 결과를 다른 함수 결과값에 할당에 반환 가능 먼저 함수를 변수에 할당이 가능한 예시를 ..
[Python 중급] Python 시퀀스 🔊 해당 포스팅은 인프런의 파이썬 중급 강의를 공부하면서 복습차원으로 정리한 포스팅입니다. 해당 내용은 주로 본인의 복습용이라서 자세한 설명은 없는 점 양해 부탁드리겠습니다. 원본 코드는 여기에 있습니다. 이번 포스팅은 파이썬의 시퀀스 자료구조에 대해서 알아보고 이에 대해 실습도 해보자. 우선 파이썬 데이터 타엡에 대해 세부적으로 분류해보자. 1번째 기준 : 자료 구성 형태 컨테이너 - 서로 다른 자료형 구성 가능 : 리스트, 튜플, collections의 deque 플랫형(Flat) - 한 개의 자료형으로 구성 : 문자열(str), bytes, bytes array, array, memoryview 2번째 기준 : 자료 구조의 변경 가능 여부 가변형 자료구조 : 리스트, bytes array, arra..
[서평] 팩트풀니스 회고록 최근 팩트풀니스라는 책을 이제야 읽게 되었다. 대학교 마지막 학기까지 끝까지 치여 살면서 독서를 한 적이 약 2,3 개월 전인 것 같았다. 스트레스를 푸는 겸 가볍게 책을 읽어보자고 고민하다가 여러가지 책들 중 이 책을 골랐다. 제목을 보고 주제에 대한 느낌은 나름 편안하게 다가왔던 것 같다. 그동안 읽었던 책들이 보통 '4차 산업혁명', '앞으로의 미래에 대한 대비' 이러한 주제들로 이루어진 것들이었는데, 이런 부류의 책들만 읽다보니 독서를 하게 되면서 어느 순간 '스트레스'로 다가오게 되었다. 그래서 독서를 할 때 만큼만은 사람에 대한 책, 인문학을 주제로 하는 책을 읽고 싶었다. 필자는 책을 하루 날 잡고 쭉~ 다 읽어버리는 스타일이 절.대. 아니라서 그리고 그렇게 할만큼 집중력이 좋은 편도 아니라..
[Python 중급] Magic method와 named tuple 🔊 해당 포스팅은 인프런의 파이썬 중급 강의를 공부하면서 복습차원으로 정리한 포스팅입니다. 해당 내용은 주로 본인의 복습용이라서 자세한 설명은 없는 점 양해 부탁드리겠습니다. 원본 코드는 여기에 있습니다. 이번 포스팅은 지난 포스팅에서 잠깐 살펴보았던 Magic method(매직 메소드)에 대해 알아보고 실습 예제로 구현해보자. 또한 Tuple 성질을 지니지만 마치 파이썬 자료구조 중 하나인 Dictionary 처럼 Key, Value를 갖는 Named Tuple에 대해 알아보고 간단한 실습으로 구현해보자. 우선 Special method 라고도 불리우는 매직 메소드는 이미 내장되어(built-in) 만들어진 메소드를 의미한다. 즉, 다음 코드와 같이 int 형도 하나의 클래스이며 다음과 같은 여러가지 ..
[Python 중급] Class와 Method 심화 🔊 해당 포스팅은 인프런의 파이썬 중급 강의를 공부하면서 복습차원으로 정리한 포스팅입니다. 해당 내용은 주로 본인의 복습용이라서 자세한 설명은 없는 점 양해 부탁드리겠습니다. 원본 코드는 여기에 있습니다. 객체 지향 프로그래밍(OOP)는 코드의 재사용과 코드 중복을 방지하기 위한 프로그래밍 방법이다. 이번 포스팅에서 Python 클래스와 메서드에 대한 사용법에 대해 예시 코드로 알아보자. class Car(object): def __init__(self, company, detail): self._company = company self._detail = detail # Python에 내장되어 있는 메소드를 활용해서 인스턴스에 있는 정보 출력 가능 # __str__은 사용자 입장에서 사용하는 출력 메서드..
[ML] PCA, 주성분의 개수는 어떤 기준으로 설정할까? 이번 포스팅에서는 기존 여러 개의 변수의 차원의 축소를 수행해주면서 추출되는 새로운 변수를 만드는 즉, Feature extraction 중 한 가지 방법으로서 PCA(주성분 분석)에 대한 내용이다. PCA가 구체적으로 무엇이고 정의는 어떻게 되는지에 대해서는 기존 포스팅을 참고하자. 그래서 이번에 다룰 내용은 PCA를 수행할 때 '몇 개'의 변수로 차원을 축소할지 결정하는 기준에 대한 내용이다. 이 기준에 대해서 알아보기 위해 예시 데이터를 활용해서 적절한 주성분 개수를 설정해보자. 참고로 이번에 사용될 데이터는 종속변수가 없는 독립변수들 끼리만 활용해볼 것이다. 왜냐하면 이번 포스팅의 목적은 PCA를 통해 종속변수 예측력에 영향을 준다는 내용보다는 독립변수들에 PCA 수행을 해주었을 때 몇 개의 주성..
[추천시스템] 추천 시스템의 성능은 어떻게 평가할까? 이번 포스팅에서는 추천 시스템(Recommend System)의 성능을 평가하는 여러가지 메트릭들에 대해 소개하려고 한다. 이 포스팅을 보다 깊게 이해하기 위해서 개인적으로 추천 시스템에 대한 종류와 개념을 우선적으로 숙지하는 것을 제안한다. 이전에 추천 시스템의 종류와 간단하게 Python으로 구현하는 방법에 대한 포스팅들을 게시한 적이 있다. 참고하려면 여기를 클릭하자. 추천 시스템을 평가하기 위한 메트릭들에 대해 소개하기에 앞서 간단하게 추천 시스템에 대한 개념을 짚고 넘어가자. 추천 시스템이란, 특정 제품들에 대한 사용자의 평가 또는 리뷰 등과 같은 데이터를 기반으로 이 사용자에게 비슷한 다른 제품을 추천해주는 것을 말한다. 기존의 추천 시스템들은 머신러닝 모델처럼 하나의 label를 결과값으로 ..
[ML] ResNet & Inception Network란? 앞으로 전개할 내용은 Coursera 딥러닝 강의의 내용을 기반으로 필자가 직접 정리하는 내용이며 해당 컨텐츠 이외의 다른 강의에 관심이 있다면 여기를 참고해 수강해보자. 이번 포스팅에서는 CNN 모델을 좀 더 발전시킨 ResNet(Residual Network)와 Inception Network에 대해 알아보려고 한다. 참고로 두 모델들에 대한 자세한 수학적인 수식들은 배제하고 두 모델의 구조가 어떤 구조이고 어떤 프로세스를 따라서 동작하는 지에 좀 더 초점을 맞추어 설명하려고 한다. 1. ResNet(Residual Network) 우선 RestNet에 대해 이해하기 전에 Residual block에 대한 이해가 필요하다. Residual의 사전적 의미는 '잔여', 수학적으로는 '잔차'라는 의미로 사..
[ML] 당신은 데이터를 올바르게 분할하고 있는가? 앞으로 전개할 내용은 Coursera 딥러닝 강의의 내용을 기반으로 필자가 직접 정리하는 내용이며 해당 컨텐츠 이외의 다른 강의에 관심이 있다면 여기를 참고해 수강해보자. 이번 포스팅에서 다룰 주제는 분류 문제에서의 '데이터 분할'에 대한 내용이다. 머신러닝 모델을 학습시키고 검증하고 테스트 하기 위해서는 내가 갖고 있는 데이터를 적당하게 나누어 주어야 한다. 보통 갖고 있는 데이터 셋이 학습용, 검증용(개발용), 테스트용 총 3가지로 나누는데, 이에 대해 자주 적용되는 데이터 분할 비율, 각각은 어떤 역할을 하는지에 대해서는 이전 포스팅에서 소개했으므로 이에 대한 내용은 생략하고 다른 측면에서 다루어 보려고 한다. 이번 포스팅에서 중점적으로 다루려는 부분은 데이터를 분할하면서 고려해야 할 점과 각 데이..
[ML] 데이터를 복구하는 Auto Encoder? 🔉해당 자료 내용은 순천향대학교 빅데이터공학과 김정현 교수님의 수업자료에 기반하였으며 수업자료의 저작권 문제로 인해 수업자료를 직접 이용하지 않고 수업자료의 내용을 참고하여 본인이 직접 작성하였으므로 저작권 문제가 발생하지 않음을 필히 알려드립니다. 이번 포스팅에서는 입력 데이터를 압축시키고 다시 확장해 결과 데이터를 입력 데이터와 최대한 동일하게 만들기 위해 파라미터를 학습시키는 Auto Encoder에 대해서 알아보려고 한다. 목차는 다음과 같다. 1. Auto Encoder란? 2. PCA vs Encoder 3. Stacked Auto Encoder 4. Denoising Auto Encoder(DAE) 5. Variational Auto Encoder(VAE) 6. Examples of Auto..
나에 대한 이해와 글또 5기 2020년 11월부터 글또 5기 멤버로 참여하게 되었다. 글또의 존재는 아마 글또 4기 정도에 알게 되었던 기억이 난다. 그리고 글또 4기에 지인인 나단이가 참여했었다. 나단이를 통해 글또 5기 활동의 시작 시기를 묻게 되었고 시기 적절하게 글또 5기에 신청하여 운좋게 선정이 되었다. 2020년 3월부터 본격적으로 블로그를 운영해왔고 주로 통계, 머신러닝, 데이터 분석 관련 포스팅으로 지속적인 활동을 해왔다. 약 8개월 동안 블로그를 운영해오면서 여러가지 느낀점이 있었다. 항상 글을 쓰면서 이러한 생각을 했던 것 같다. "과연 내가 작성하고 있는 이 문장이 독자들은 이해할 수 있을까?" "내가 작성한 한 편의 포스팅은 다른 사람들이 읽고 어떻게 느낄까?" 위와 같은 2가지 의문에 항상 사로잡혀 글을 써왔..
[ML] Hyperparameter tuning & Optimization in DNN 앞으로 전개할 내용은 Coursera 강의의 내용을 기반으로 필자가 직접 정리하는 내용이며 해당 컨텐츠 이외의 다른 강의에 관심이 있다면 여기를 참고해 수강해보자. 저번 포스팅에서는 주로 딥러닝이 학습 데이터와 닮아 있지 않은 낯선 데이터를 마주하더라도 제대로 예측하도록 하는 일반화(Regularization) 방법들에 대해 알아보았다. 이번 포스팅에서는 딥러닝의 성능을 개선하는 또 다른 방법으로 Optimization(학습 최적화)과 하이퍼파라미터를 튜닝하는 방법에 대해 알아보려고 한다. 목차는 다음과 같다. 1. Optimization 1-1. Mini-batch Gradient Descent 1-2. Momentum 1-3. RMSProp 1-4. Adam Optimizer 1-5. Batch No..
[ML] How to improve Deep Neural Network? 앞으로 전개할 내용은 Coursera 강의의 내용을 기반으로 필자가 직접 정리하는 내용이며 해당 컨텐츠 이외의 다른 강의에 관심이 있다면 여기를 참고해 수강해보자. 이번 포스팅에서는 딥러닝(Deep Neural Network)의 성능을 개선시키거나 마주하는 문제들을 해결하기 위한 다양한 방법들에 대해 소개한다. 전개되는 내용들 중 일부는 이전 포스팅에서 게시했던 내용들과 중복될 수 있다. 그러한 내용들은 간단히 개념에 대해 소개하고 자세한 내용은 관련 포스팅 링크를 첨부하겠다. 딥러닝이 직면하는 문제들은 다양하다. 하지만 본질적으로 딥러닝이 도달해야 하는 이상점은 바로 만들어진 딥러닝 모델이 어떠한 낯선 데이터를 만나더라도 올바른 예측을 하는 것이다. 즉, 딥러닝의 모델을 일반화(Regularizatio..
[ML] Recurrent Neural Network(RNN) 🔉해당 자료 내용은 순천향대학교 빅데이터공학과 김정현 교수님의 수업자료에 기반하였으며 수업자료의 저작권 문제로 인해 수업자료를 직접 이용하지 않고 수업자료의 내용을 참고하여 본인이 직접 작성하였으므로 저작권 문제가 발생하지 않음을 필히 알려드립니다. 저번 포스팅에서 이미지 분류 문제를 풀어나가는 데 가장 큰 공헌을 한 CNN(Convolutional Neutral Network)에 대해 알아보았다. 이번 포스팅에서는 '순서'가 중요한 의미를 갖는 문제를 해결해나가는 데 많은 도움을 준 RNN(Recurrent Neural Network)에 대해 알아본다. 우선 'Recurrent' 의 사전적 의미는 '재발하는', '되풀이', '재귀적인' 이다. 말 뜻 대로 무언가 계속 되풀이한다는 의미를 내포하고 있다...