데이터로 Deep Dive

데이터 분석과 개발 경험을 공유합니다.

MLOps 38

차원 축소 - 차원의 저주

차원의 저주데이터에서 '차원'이란 변수의 개수를 의미한다. 즉, 변수가 1개인 데이터는 1차원 데이터, 2개인 데이터는 2차원 데이터, n개인 데이터는 n차원 데이터라고 부른다. 이때, 아래와 같은 데이터는 변수가 6개이기 때문에 6차원 데이터이다. 만약 recency와 age라는 2개의 변수만 가지고 있는 2차원 데이터라면 children, spent_all까지 4차원으로 구성된 데이터보다 정보가 적다. 마찬가지로 purchase_num_all 과 family_size 를 모두 포함한 6차원 데이터라면 2, 4차원보다 더 많은 정보를 가지게 된다. 따라서 차원이 높은 데이터를 분석에 활용하면 더 많은 정보를 반영한 결과를 얻을 수 있다.  그러나오히려 데이터의 차원이 너무 많아지면 분석의 정확도가 떨어..

클러스터 분석 - k-means

동작 방식k-means의 기본 원리는 '유사한 데이터는 Centroid(중심점)로부터 가까이에 모여있다' 이다. 동작 과정1단계: Centroid 배치먼저 클러스터의 개수를 의미하는 k를 정해주어야 한다. (*아래 예시에서는 우선 '2'로 설정함) 그리고 k의 값만큼 Centroid를 생성하여 임의로 배치한다. 2단계: 클러스터 형성생성한 Centroid와 각 데이터 사이의 거리를 계산하여 가까이에 있는 데이터들을 하나의 클러스터로 묶어준다.3단계: Centroid 위치 갱신클러스터에 속해있는 데이터들의 중심으로 Centroid의 윛치를 이동한다. 이때, 데이터들 사이의 중심을 찾기 위하여 평균값(means)을 사용한다.4단계: 클러스터 재형성새롭게 위치한 Centroid를 기준으로 각 데이터와의 거리..

클러스터 분석 - 개념 알아보기

클러스터링유사한 데이터들을 같은 클러스터(집단)으로 묶어 주는 작업을 의미하며, 우리말로는 '군집화' 라고도 한다.클러스터링은 머신러닝 기법 중, 비지도 학습에 해당한다. 머신러닝은 컴퓨터가 데이터들을 통해 스스로 규칙을 학습하도록 하는 인공지능의 한 방법인데, 이 중 비지도 학습 정답(레이블)을 주지 않은 상태에서 데이터의 특성만 가지고 스스로 규칙을 찾아내는 방식이다. 더보기클러스터링과 분류(Classification)클러스터링과 비슷하게 데이터들의 특성을 바탕으로 특정 범주로 구분해 주는 분류(Classification) 문제도 있다. 예를 들어서, 100명의 학생이 공부한 시간과 시험에 통과했는지 여부를 체크한 데이터가 있을 때 이 데이터를 바탕으로, 새로운 학생이 몇 시간 공부했는지에 따라 시..

회귀 알고리즘

회귀란?데이터 값이 평균과 같은 일정한 값으로 돌아가려는 경향회귀 분석은 데이터 값이 평균과 같은 일정한 값으로 돌아가려는 경향을 이용한 통계학 기법 여러 개의 독립변수(X)와 한 개의 종속변수(y) 간의 상관관계를 모델링하는 기법(*모델링은 표본)가중치 -> 회귀 계수(Regressino Coefficients)회귀 유형회귀 계수회귀 계수가 직선이면 -> 선형회귀회귀 계수가 직선이 아니면 -> 비선형로지스틱 회귀독립변수 개수회귀 계수의 결합1개단일 회귀선형선형 회귀 N개 다중 회귀비선형비선형 회귀로지스틱 회귀 회귀 모델의 목적: 전체 데이터의 잔차(오류 값) 합이 최소가 되는 모델을 만드는 것 -> 오류 값의 합이 최소가 될 수 있는 최적의 회귀 계수 w을 찾는 것!일반 선형 회귀(LinearRegre..

.gitignore - 조금 더 깔끔한 버전 관리가 필요하다면?

.gitignore 파일이란?: Git으로 프로젝트의 버전 관리를 시작할 때, .gitignore 파일에는 'working directory 안에 존재하기는 하지만 Git으로 버전을 관리하고 싶지 않은 것들'의 이름을 적어 활용할 수 있다. Add .gitignore: None 은 .gitignore파일을 생성하지 않겠다는 의미이다.  .gitignore 파일은그 플랫폼에서 실행될 프로그램을 만들거나,해당 프로그래밍 언어로 코드를 작성할 때(보통 자동으로) 생성되는 파일들중에서 굳이 Git에 의해 버전 관리될 필요가 없는, 불필요한 파일들의 이름이 정리된 .gitignore 파일을 자동으로 생성해준다.단어의미*.py[cod] .pyc 또는 .pyo 또는 pyd로 끝나는 파일명*$py.class $py...

git stash - 작업 내용 임시 저장하기

git stash*stash: 안전한 곳에 보관하다, 넣어두다git stach 실행 시, 최근 커밋 이후로 작업했던 내용은 모두 stack(어떤 데이터를 저장하는 구조) 에 옮겨지고, working directory 내부는 다시 최근 커밋의 상태로 초기화된다. git stash # 현재 directory 작업 내용을 stack에 저장(=작업 내용 저장)git stash list # stack에 저장된 내용을 확인(=작업 내용 조회)git stash apply [작업 내용의 아이디] # stack에 있는 내용을 다시 working directory로 가져와서 적용(=작업 내용 적용)git stash drop [작업 내용의 아이디] # 해당 stash를 삭제(=작업 내용 제거), [작업 내용의 아이디]를 생..

앙상블(보팅, 배깅, 부스팅)

보팅(Voting)Hard Votiing: 다수의 Classifeir간 다수결로 최종 class 결정Soft Voting: 다수의 Classifier들의 class 확률을 평균하여 결졍(*일반적으로 많이 사용) -> predict prob가 있어야 가능SVC 모델은 predict proba가 없으므로 Soft Votingd 참여 불가 배깅(Bagging): Bootstrap Sampling의 줄임말, 기존 학습 데이터 세트로부터 랜덤하게 복원추출하여 동일한 사이즈의 데이터 세트를 여러 개 만드는 것과대적합되며 훈련이 진행됨대표 모델: 랜덤포레스트부스팅(Boosting): 과소적합된 모델을 사용하여 순차적으로 반복학습을 진행함, 예측한 데이터 혹은 학습 트리에 가중치 부여를 통해 오류를 개선해 나가면서 학..

미분

예측 모형의 성능손실함수(loss function) = 비용함수(cost function) 또는 오차함수(error function)목적:  목적함수의 값을 가장 크게 혹은 적게 할 수 있는 입력값, 즉 모수를 구하는 것을 최적화(optmization)라고 한다.  eg.   미분을 이용해 최소 지점으로 갈 수 있는 방법을 구해보자. 기울기: (= 변화량) 가장 적은 횟수로 여러가지 𝑥값을 시도하여 최적의 값을 찾는 방법수치미분미분(differentiation): 어떤 함수로부터 그 함수 기울기를 출력하는 새로운 함수를 만들어내는 작업이다. 미분으로 만들어진 함수를 원래 함수의 도함수(derivative)라고 한다.미분 가능: 함수에 따라서는 어떤 점에서는 기울기 값을 정의하기 어려울 수가 있다. 예를..