본문 바로가기
728x90
반응형
SMALL

data science34

[Data Science] 불균형한 데이터 균형 조정 불균형한 데이터 균형 조정 필요한 양보다 많으면 본질적으로 좋은 것은 없다. 더 많은 양의 CO2가 지구를 따뜻하게 할 것이고, 더 많은 양의 비가 도시에 범람할 것이고, 더 많은 생각은 당신의 실행을 망칠 것이다. 이러한 것은 데이터에도 동일하게 적용된다. 한 클래스의 인스턴스 수가 많을수록 가짜 예측이 발생한다. 간단한 예를 통해 이를 이해할 수 있다. 빨간 공과 파란 공이 가득한 가방이 있다고 상상하고 어떤 색 공을 그릴지 묻는다. 환자의 암 발병 여부를 예측하는 기계 학습 모델이라고 상상했을 때, 분명히 논리적인 선택은 대부분의 환자가 암이 아니기 때문에 환자에게 암이 없다고 결론을 내리는 것이다. 실제로 모델로서 모든 사람에게 암이 없다고 표시하는 것만으로도 높은 정확도를 얻을 수 있다. 데이터.. 2023. 12. 8.
[Data Science] 주성분 분석 (Principal Component Analysis, PCA) 주성분 분석 (Principal Component Analysis, PCA) 주성분 분석 (Principal Component Analysis, PCA)은 가장 널리 사용되는 차원 축소 기법 중 하나로, 원 데이터의 분포를 최대한 보존하면서 고차원 공간의 데이터들을 저차원 공간으로 변환한다. 데이터 집합을 새로운 좌표축으로 변환시키는 방법이다. 수 많은 정보의 홍수에서 이를 활용하기 위해 정보 손실을 최소화하면서 차수를 낮출 때 사용하는 방법이다. 정보를 각각 서로 간에 독립인 좌표축 들로 재구성하여, 최소한의 차원으로 최대한의 설명력을 높인다. n_components from sklearn.decomposition import PCA # PCA 모델을 생성 pca = PCA() # PCA 모델을 데이터.. 2023. 10. 30.
[Data Science] 데이터 불균형 데이터 불균형 편향된 클래스 비율이 포함된 분류 데이터 세트를 불균형이라고 한다. 데이터 세트의 상당 부분을 차지하는 클래스를 메이저 클래스라고 한다. 더 작은 비율을 구성하는 항목은 다수 클래스이다. 불균형도 소수 집단 비율 약간 전체 데이터셋의 20~40% 보통 전체 데이터셋의 1~20% 높음 전체 데이터셋의 1%미만 대부분의 머신러닝 모델은 클래스 간의 데이터 비율이 비슷한 것이 바람직하다. 데이터 불균형이 크면 메이저 클래스로 치우치게 predict하는 문제가 발생한다. 데이터 불균형을 해결하는 방법으로는 크게 다음과 같다. 리샘플링 (Resampling) Weighting in Loss Function 리샘플링 (Resampling) 리샘플링 기법은 클래스별 불균형한 데이터의 수를 맞춰주기 위해.. 2023. 9. 6.
[Data Science] 탐색적 데이터 분석 (Exploratory Data Analysis) 탐색적 데이터 분석 (Exploratory Data Analysis) EDA는 데이터 세트의 다양한 특성, 특징 및 데이터 세트 간의 잠재적 관계를 이해할 수 있는 수치 및 시각화 기술의 조합이다. 이 단계의 목표, 즉 데이터셋을 이해해야 하는 것이다. 요약 통계량, 예쁜 시각화 또는 복잡한 다변량 분석을 생성하는 것이 목표가 아니다. 이러한 활동은 데이터 이해의 궁극적인 목표를 달성하는 간단한 활동이다. 또한, 계산과 이해를 혼동하지 말아야 한다. 누구나 숫자 형상의 표준 편차를 계산할 수 있다. 실제로 EDA는 꽤 지저분하다는 것이다. 여러분은 자신을 혼란스럽게 하고, 잘못된 아이디어를 얻고, 모순된 정보를 찾고, 스스로를 수정하고, 흥미롭거나 놀라운 사실을 찾고, 더 많은 데이터를 얻거나 일부 기능.. 2023. 7. 17.
[Data Science] 모델 평가 일반화 평가 모델이 학습 데이터가 아닌 새로운 데이터에 대해서도 좋은 성능을 내는지 일반화 에러를 통해 평가한다. 일반화 에러를 구하는 방법은 다양하지만 일반적으로 학습-평가 데이터 나누기, 교차검증을 통해 구할 수 있다. 학습-평가 데이터 나누기 (Train-Test data Split) 데이터를 학습용과 평가용으로 나눠 평가하는 방법이다. 일반적으로 8:2 비율이 가장 흔하게 사용된다. 무작위로 비율만큼의 데이터를 선택해 학습용 데이터를 만들고 나머지를 평가용 데이터로 사용해 모델이 학습용 데이터에만 최적화 되어있는지 검증한다. 교차 검증 학습-평가 데이터 나누기를 한 번만 하는 것이 아니라 여러 번 반복해서 일반화 에러를 평가하는 방법이다. K-Fold 교차 검증 (K-Fold Cross Valid.. 2022. 11. 29.
[Data Science] 손실 함수 (Loss Function) 손실 함수 (Loss Function) 선형 회귀는 잔차의 제곱합 (SSE, Error sum of Squares)를 최소화하는 방법으로 회귀 계수를 추정한다. 즉, SSE가 작으면 작을 수록 좋은 모델이라고 볼 수 있다. 흔히, 사용하는 MSE (Mean Squared Error)는 SSE를 표준화한 개념이다. MSE (Mean Squared Error) f(x)가 제대로 추정되었는지 평가하기 위해, 예측한 값이 실제 값과 유사한지 평가하는 척도가 필요하다. MSE는 실제 종속 변수와 예측한 종속 변수 간의 차이이다. MSE가 작을 수록 좋지만, MSE를 과도하게 줄이면 과적합의 오류를 범할 가능성이 있다. 따라서, 학습 집합이 아닌 검증 집합의 MSE를 줄이는 방향으로 f(x)를 추정한다. MAPE .. 2022. 11. 8.
[Data Science] 데이터 전처리 데이터 전처리 모든 데이터 분석 프로젝트에서 데이터 전처리는 반드시 거쳐야 하는 과정이다. 대부분의 데이터 분석가가 좋아하지 않는 과정이지만, 분석 결과/인사이트와 모델 성능에 직접적인 영향을 미치는 과정이기 때문에 중요하게 다루어지는 과정이다. 한 설문조사에 의하면, 분석가의 80% 시간을 데이터 수집 및 전처리에 사용한다고 하니, 얼마나 중요한 과정인지 짐작할 수 있다. 물론 지루하고 반복 작업의 연속이기 때문에 시간이 많이 들어가는 측면도 있을 것이다. 실무에 사용되는 데이터셋은 바로 분석이 불가능할 정도로 지저분 (messy)하다. 분석이 가능한 상태로 만들기 위해 전처리 방식이 자주 사용된다. 모든 강의에 걸쳐서 전처리 단계는 중요하게 그리고 반복적으로 다뤄진다. 데이터 불러오기 및 인덱스 지정.. 2022. 11. 1.
[Data Science] folium을 활용한 지도 그리기 folium을 활용한 지도 그리기 # 설치 pip install folium import folium import requests # 웹 요청 import json # 기본 지도 그리기 m = folium.Map(location=[37,126]) # 좌표 37,126을 중심으로 그림 그리기 m # 본인의 IP query = 'naver.com' url = f'http://ip-api.com/json/{query}' # 웹 요청 res = requests.get(url) location_data = json.loads(res.text) location_data['lat'], location_data['lon'] m = folium.Map(location=[location_data['lat'], locati.. 2022. 10. 26.
[Data Science] Bokeh를 활용한 대화형 웹 시각화 Bokeh를 활용한 대화형 웹 시각화 # bokeh 설치 conda install bokeh import numpy as np from bokeh.io import output_notebook, show from bokeh.plotting import figure output_notebook() p = figure(plot_width=400, plot_height=400) x = [1,2,3,4,5] y = [6,7,2,4,5] p.circle(x, y, size=15, line_color='navy', fill_color='orange', fill_alpha=0.5) show(p) HTML 파일로 추출 import bokeh # 샘플 데이터 다운로드 bokeh.sampledata.download() i.. 2022. 10. 26.
[Data Science] 문서의 행렬 표현 (DTM and TF-IDF) CountVectorizer를 이용한 토큰화 import sklearn print(sklearn.__version__) from sklearn.feature_extraction.text import CountVectorizer vector = CountVectorizer() text = ['Text mining, also referred to as text data mining, similar to text analytics, is the process of deriving high-quality information from text.'] vector.fit_transform(text).toarray() array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 4,.. 2022. 9. 29.
728x90
반응형
LIST