오늘은 PyTorch를 이용하여 ANN을 구현해보려고 한다.인공신경망은 뭔지 알고 있는 상황이고 기초적인 코드를 정리해보며 개념과 의미에 대해 생각해보려고 한다. # importimport torchimport torch.nn as nnimport torch.optim as optimfrom torch.utils.data import DataLoader, TensorDatasetfrom sklearn.datasets import load_breast_cancerfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScaler # 데이터 로드 및 전처리 본 포스팅에서는 유방암 데이터를 가져와 ..
부스팅 모델 중에서 가장 흔히 쓰이는 세 가지가 XGBoost, CatBoost, 그리고 LightGBM일 것이다.(최근에는 다른 여러 부스팅 모델이 나온 것으로 알고 있다.) XGBoost와 CatBoost에 대해선 이미 포스팅 했고, 이번엔 LigthGBM에 대해서 리뷰해보려고 한다. 간단하게 설명해보면, 이름 그대로 light 가볍다라는 뜻이다. 이름만큼 규모가 큰 데이터에서 빠른 학습 속도로 유리함을 가지고 있다. Microsoft에서 개발한 그레디언트 부스팅 프레임워크로 쉽게 사용할 수 있다. 단, 규모가 비교적 작은 데이터에서는 과적합이 생길 수 있으므로 유의해서 사용하자. 📌 1. Introduction 기존에 GBDT(Gradient Boosting Decision Trees)는 모든 ..
CatBoost 2. 트리 구축은 저번 [1. 알고리즘 설명에 이어집니다.] 📌 1. 트리 구축하기 CatBoost의 특징적인 부분인데, 트리를 구축할 때 기본 예측기는 oblivious 결정 트리라고 하는 결정 테이블을 사용한다.[Python만 확인해보았는데 oblivious 말고도 파라미터 지정을 통해 일반적인 트리를 사용할 수 있다.] Oblivious??쉽게 설명하면 트리의 같은 깊이에 해당하는 노드들은 동일한 분할 기준이 사용되는 결정트리이다. 예를 들어, 일반적인 트리는 아래와 같이 만들어질 수 있다. [ Color == 'Red' ]| |[ Age >= 20 ] [..
📌 CatBoost? CatBoost는 부스팅 모델의 하나로, 이름의 Cat은 Categorical의 줄임말이다. 이름에서 볼 수 있듯이 범주형 변수를 대상으로 자주 사용되며 예측 성능도 우수한 편이다. 그럼 CatBoost를 소개하는 본 논문 CatBoost : unbiased boosting with categorical features를 리류해보자. 📌 1. Introduction 일반적인 GBM(Gradient Boosting Model)은 실제 많이 사용되었었다(본 논문이 published된 2019년 기준). 부스팅 모델의 특성처럼 약한 모델들을 가법적으로 결합하여 함수 공간에서 그레디언트 하강법을 수행하는 모델이다. 본 논문에서는 기존 GBM 구현이 아래와 같은 통계적 문제에 직면한다고 ..
텐서플로우를 통한 선형회귀 예제입니다. 사실 처음 해볼때 이럴꺼면 사이킷런을 쓰는게..? 라는 생각을 했는데, 좀더 복잡하고 큰 데이터를 다루거나 복잡한 모형을 다룰 때 굉장히 효율적일거라는 생각이 들더군요. 좋은 경험이었습니다. 먼저 데이터를 생성해주고 단순선형회귀 식의 Weight와 bias를 설정해줍니다.# datax_train = [1,2,3]y_train = [1,2,3]# random_normal은 우리가 아직 W, b를 모르기 때문에 rank가 1인 값을 랜덤하게 넣어주는 것.W = tf.Variable(tf.random.normal([1]), name = 'weight')b = tf.Variable(tf.random.normal([1]), name = 'bias') 여기서 Variable는..
Tensorflow 텐서플로우는 Google Brain 팀에서 개발한 오픈 소스 프레임워크입니다. 복잡한 데이터 흐름 그래프(Data Flow Graph)를 기반으로 딥러닝 모델을 구축하고 훈련할 수 있도록 하는 프레임워크로 다양한 기계 학습 작업을 지원하고 여러 분야에서 사용되고 있습니다. 아마 딥러닝을 하지 않더라도 머신러닝에 관심이 있는 분이라면 한번쯤 들어보셨을 것 같습니다. 저도 계속해서 듣기만했지 처음으로 써보려고 합니다. TensorFlow 설치pip install --upgrade tensorflow# 버전 확인import tensorflow as tftf.__version__ 개념 1. 텐서(Tensor) : 텐서플로우에서 데이터를 나타내는 기본 단위라고 볼 수 있습니다. 다차원 배열로..
이전 포스팅에서 t-test를 다루었습니다.(링크)t-test의 경우 최대 비교하려는 집단의 수가 2였습니다. 그렇다면 비교 집단이 두 개 이상이라면 어떨까요?? 이때의 집단 간 평균 차이 검정을 어떻게 진행할까요? 아래와 같은 예를 봅시다. 위와 같이 두 개 이상의 집단 간 평균의 차이에 대한 t-test 통계적 추론은 아래와 같습니다. 이렇게 세 개 이상의 집단을 두 집단씩 짝지어 총 3번을 진행할 경우 1. 유의 수준이 매우 엄격해지고, 이에 따라 제 1종 오류의 팽창이 일어납니다. 또한, 2. 반복되는 데이터 사용으로 인해 독립성 가정에 위배될 수 있습니다. 저번 포스팅에서 설명한 것과 같이 제 1종 오류 즉, 실제로 처치의 효과가 없는 데 있다고 결과를 잘못 도출할 가능성이 높아집니다. 아래 식..
오늘은 저번 z 점수에 이어서 가설 검정을 확인하려고 합니다. 가설 검정은 연구에 있어서 필수적인 부분이라고 할 수 있습니다.(최근에는 가설 검정보다 탐색적 연구가 더 많은 것 같기도 합니다.) 추가로 t 검정에 대해서도 간단하게 확인할 예정입니다. 📌 가설 검정 가설 검정이란 표본 자료를 사용하여 모집단에 대한 가설을 확인하는 통계적 방법입니다. 앞서 확인했던 z-score, 확률, 표본 평균의 분포등을 결합하여 사용되는 통계적 절차로 크게 4가지 논리로 진행됩니다. 1. 모집단에 대한 가설을 세움(모수에 대한 가설)ex. 매년 설 연휴에 한국 성인들은 3kg의 몸무게가 증가한다. 2. 가설을 사용하여 표본이 어떤 특성을 나타낼지 예측ex. 모집단에서 평균적인 몸무게 증가가 3kg라고 예상했으니 ..
오늘은 저번 확률에 이어서 표본 평균의 분포를 알아보려고 합니다. 표본도 알고 평균도 알고 표본의 평균도 아는데 통계에 있어서 왜 표본 평균의 분포가 중요한 것일까요?? 우리는 표본을 통해 모집단을 일반화 합니다. 하지만 의문점은 과연 표본이 모집단을 대표할만한 대표성을 가지고 있느냐가 문제겠지요. 이에 따라서 우리는 어떠한 가정이 필요합니다. 이러한 가정들을 알기 위해서 표본 평균의 분포를 알아보는 것입니다. 살펴볼 가정들이 존재하기 때문에 우리가 모은 표본을 통해 연구가 가능한 것입니다. 이러한 가정이 없다면 '표본이 결국은 모집단이랑 다른거 아니에요?'라는 질문에 답변할 수 없게 됩니다. 실제로 많은 연구들에서 재현성의 문제가 있다고 연구 결과도 있는 만큼 표본의 중요성은 여러번 강조됩니다. ?..
저번 중심경향값과 변산성에 이어 z-score를 살펴보려고 합니다. 📌 z 점수 z 점수는 원점수(: 직접적으로 측정된 원래 점수)를 더 의미있고 더 많은 정보를 포함한 새로운 점수로 변환한 값입니다.중요 포인트는 더 많은 정보를 포함했다는 점입니다. 그렇다면 어떠한 정보를 포함하고 있는가?? z 점수는 원점수에서 평균과 표준편차를 이용하여 표준화화기 때문에, 분포내에 원점수의 위치를 확인할 수 있게 됩니다. 즉, 1. z 점수는 원점수와 다르게 분포내에서 해당 점수가 어디에 위치하는지를 내포하고 있는 것입니다. 또한, 2. 표준화 방법으로 다른 분포들을 서로 직접적으로 비교할 수 있도록 해주기도 합니다. - 공식z=X−μσ - z 점수를 원점수로 변환하는 ..