English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

게스트
1 / ?
수업 목록으로

데이터 과학이란 무엇인가? [BLOCK_TYPE SECTION/STEP]

데이터 과학은 단순히 머신러닝이 아닙니다. 단순히 통계학이 아닙니다. 단순히 프로그래밍이 아닙니다. [BLOCK_TYPE SECTION/STEP]

데이터 과학은 데이터로부터 유용한 지식을 추출하는 학문입니다. 그 작업의 대부분은 화려하지 않습니다: 지저분한 스프레드시트를 정리하는 작업, 적절한 질문을 하는 작업, 그리고 코드에 관심이 없는 사람들에게 결과를 전달하는 작업입니다. [BLOCK_TYPE SECTION/STEP]

데이터 과학 파이프라인 [BLOCK_TYPE SECTION/STEP]

일반적인 데이터 과학 파이프라인은 다음과 같습니다:

1. 수집: 데이터베이스, API, CSV 또는 웹 스크래핑으로부터 원시 데이터를 수집합니다 [BLOCK_TYPE SECTION/STEP]

2. 정제: 결측값 처리, 데이터 타입 수정, 중복 제거 [BLOCK_TYPE SECTION/STEP]

3. 탐색: 분포 시각화, 패턴 발견, 질문 제기 [BLOCK_TYPE SECTION/STEP]

4. 엔지니어링: 모델이 학습할 수 있도록 새로운 특성을 생성합니다 [BLOCK_TYPE SECTION/STEP]

5. 모델링: 알고리즘을 학습시키고, 성능을 평가하며, 반복합니다 [BLOCK_TYPE SECTION/STEP]

6. 커뮤니케이션: 의사결정을 하는 스테이크홀더에게 결과를 발표합니다 [BLOCK_TYPE SECTION/STEP]

Excel 피벗 테이블, 조건부 서식, VLOOKUP을 사용해 본 적이 있다면 이미 1-3단계를 수행한 것입니다. 이 레슨은 그 경험을 산업에서 사용되는 Python 기반 워크플로우로 연결합니다. [BLOCK_TYPE SECTION/STEP]

Warm-Up

데이터 경험

모든 사람은 어떤 형태로든 데이터를 다뤄본 적이 있습니다: 예산 스프레드시트, 성적 추적기, 피트니스 앱, 심지어 재생 횟수가 기록된 플레이리스트까지.

스프레드시트나 앱에서 데이터를 다뤄본 경험을 묘사해 주세요. 무엇을 알아내려고 했고, 데이터가 그 답을 주었나요?

쓰레기 입력, 쓰레기 출력

데이터 정리가 중요한 이유
[BLOCK_TYPE SECTION/STEP]

데이터 과학자들은 데이터 정리에 60~80%의 시간을 소비합니다. 이는 과장이 아닙니다. 산업 설문조사에서 일관되게 나타나는 결과입니다. [BLOCK_TYPE SECTION/STEP]

그 이유는 간단합니다: garbage in, garbage out. 데이터에 오류, 결측값 또는 일관되지 않은 형식이 있다면, 그 위에 구축된 모든 분석이 잘못될 것입니다. 더러운 데이터로 학습된 완벽한 모델은 자신 있게 틀린 답을 내놓을 것입니다. [BLOCK_TYPE SECTION/STEP]

[BLOCK_TYPE SECTION/STEP]

일반적인 데이터 문제
[BLOCK_TYPE SECTION/STEP]

- 결측값: 셀이 비어 있습니다. 데이터가 수집되지 않았거나, 값이 실제로 0일 수 있습니다. 이는 서로 다른 상황이며, 각각 다른 처리 방식이 потріб합니다. [BLOCK_TYPE SECTION/STEP]

- 잘못된 데이터 타입: 숫자 열이 텍스트로 저장되어 있거나, 날짜 형식이 일관되지 않은 경우 (01/02/2024: 1월 2일인지 2월 1일인지?) [BLOCK_TYPE SECTION/STEP]

- 이상치: 급여 컬럼에 $1,000,000,000의 항목이 있. 이는 실제 값일 수도, 오타일 수도 있습니다. 어느 쪽이든 평균을 왜곡시킬 것입니다.

- 중복: 동일한 레코드가 두 번 나타남. 두 시스템이 불완전하게 병합되었기 때문

- 범주형 인코딩: 열에 'Yes', 'yes', 'Y', 'TRUE', '1'이 포함되어 있음. 이들은 모두 같은 의미지만, 컴퓨터는 이를 알지 못함


pandas(파이썬의 표준 데이터 라이브러리)에서는 dropna(), fillna(), astype(), drop_duplicates()와 같은 메서드를 사용해 처리합니다. 하지만 어려운 부분은 코드가 아니라, 각 문제에 대해 무엇을 할지 결정하는 것입니다.

Common Data Problems

Cleaning Decisions

Deciding What To Do

다음은 실제 시나리오입니다. 10,000개의 고객 레코드를 가진 데이터셋이 있습니다. 'age' 열에 500개의 결측값이 있습니다.

당신의 선택지:

- 행 삭제: 500개의 모든 레코드를 제거합니다. 간단하지만 데이터의 5%를 잃게 됩니다. 만약 그 500명의 고객이 공통된 특성을 가지고 있다면 (예: 개인정보 보호를 이유로 나이 항목을 건너뛰었을 수 있음), 행을 삭제하면 편향이 발생할 수 있습니다.

- 평균값으로 채우기: 빈 값을 평균 나이로 대체합니다. 빠르지만, 나이 컬럼의 분산을 인위적으로 줄일 수 있습니다.

- 중앙값으로 채우기: 나이 분산이 편향되어 있다면 (극도로 나이가 많은 또는 적은 고객이 평균을 끌어올리는 경우) 평균보다 더 좋습니다.

- 플래그 사용: 'age_missing'이라는 새로운 컬럼을 생성하고 (1 또는 0), 원래 컬럼을 중앙값으로 채웁니다. 이제 모델은 결측치 자체가 정보가 될 수 있는지 학습할 수 있습니다.

결측치 처리에 대한 보편적인 정답은 없습니다. 선택은 데이터가 왜 결측되었는지 & 어떻게 사용할 계획인지에 따라 зависит합니다.

당신은 직원 급여 데이터셋을 가지고 있습니다. 5,000개의 레코드 중 200개에 급여 결측값이 присутствует합니다. 대부분의 결측값이 임원 직급에서 발생한 것으로 관찰되었습니다. 당신은 이 행en을 삭제할 것인지, 평균으로 채울 것인지, 아니면 다른 방법을 사용할 것인지? 당신의 사유를 설명하세요.

올바른 질문하기

탐색적 데이터 분석 (EDA)

모델을 구축하기 전에 먼저 데이터를 이해해야 합니다. EDA는 데이터셋을 요약하고, 시각화하며, 질문하여 패턴, 이상치, 관계를 발견하는 과정입니다.


주요 도구

- 히스토그램: 단일 변수의 분포를 보여줍니다. 종 모양인가요? 치우쳐 있나요? 이중 모드(두 개의 봉우리)인가요? 소득 히스토그램은 항상 오른쪽으로 치우쳐 있습니다. 소수의 사람들이 대다수보다 훨씬 더 많은 소득을 벌기 때문입니다.

- 산점도: 두 변수 간의 관계를 보여줍니다. 키가 큰 사람일수록 무거운 무게를 가질 가능성? 더 많은 공부 시간과 더 높은 성적의 관계? 패턴(또는 패턴의 부재)은 관계가 존재하는지 여부를 알려줍니다.

- 상관관계: 선형 연관성을 측정하는 -1에서 +1 사이의 수. +1은 완벽한 양의 관계를, -1은 완벽한 음의 관계를, 0은 선형 관계가 없음을 의미합니다. 하지만 상관관계는 인과관계를 의미하지 않습니다: 아이스크림 판매와 익사 사망은 여름에 둘 다 증가하기 때문에 상관관계가 있습니다.

- 요약 통계: 평균, 중앙값, 표준편차, 최소값, 최대값. pandas에서: df.describe()는 이 모든 Werte in einer Zeile.


실제 기술

도구는 배우기 쉽습니다. 어려운 부분은 올바른 질문을 하는 것입니다. 나쁜 질문: '데이터가 무엇을 말하는가?' 좋은 질문: '첫 주 내에 지원팀에 연락한 고객이 더 높은 유지율을 보이는가?'

EDA Tools

상관관계 함정

상관관계 vs. 인과관계

데이터 리터러시에서 가장 중요한 개념입니다. 두 변수는 서로 강하게 상관관계가 있더라도 한 변수가 다른 변수를 일으키는 것은 아닙니다.

전형적인 예시:

- 소방관이 더 많은 도시에서 화재가 더 많이 발생한다. (더 큰 도시에서 둘 다 발생한다.)

- 아침을 먹는 학생들이 더 좋은 성적을 받는다. (부유한 가정일수록 아침 식사와 학업 지원을 모두 제공할 가능성이 높다.)

- 초콜릿을 더 많이 소비하는 국가일수록 노벨상을 더 많이 수상한다. (둘 다 국가의 부와 상관관계가 있다.)

숨겨진 요인을 교란 변수(confounding variable)라고 합니다: 두 변수 사이에 영향을 미치는 제3의 변수입니다.

Correlation vs. Causation

한 회사에서 사내 헬스장을 이용하는 직원들이 병가일수가 30% 적다는 사실을 발견했습니다. CEO는 모든 직원이 헬스장을 이용하도록 의무화하려고 합니다. 이 추론의 문제점은 무엇일까요? 이 상관관계를 설명할 수 있는 교란 변수는 무엇일까요?

유용한 변수 생성하기

피처 엔지니어링이란?

피처(feature)는 모델이 예측을 위해 사용하는 입력 변수입니다. 피처 엔지니어링은 원시 데이터에서 새로운 피처를 생성하여 모델이 그렇지 않으면 발견할 수 없는 패턴을 학습할 수 있도록 돕는 기술입니다.

원시 데이터는 모델이 필요로 하는 형태로 제공되는 경우, 드물게 나타납니다. '생년월일' 컬럼이 있는 데이터셋을 생각해 보세요. 모델은 원시 날짜로는 많은 작업을 수행할 수 없습니다. 하지만 이를 통해 '나이' 피처를 생성하면, 모델은 나이 기반 패턴을 학습할 수 있게 됩니다.


일반적인 기법

- 정규화(Normalization): 숫자를 공통 범위로 스케일링하는 것 (0에서 1 사이, 또는 평균=0과 표준편차=1). 이를 하지 않으면 수천 단위로 측정된 특성(예: 연봉)이 한자릿수로 측정된 특성(예: 경력 연수)에 비해 압도적으로 큰 영향을 미칠 수 있습니다.

- 원-핫 인코딩(One-hot encoding): 범주형 변수를 이진 열로 변환하는 것. 'color' 컬럼에 [red, blue, green] 값이 있다면 'color_red', 'color_blue', 'color_green'의 세 개의 열로 변환되ут, 각 열은 0 또는 1 값을 가집니다.

- 비닝(Binning): 연속형 변수를 범주로 변환하는 것. 나이 0-17은 'minor', 18-64는 'adult', 65+는 'senior'로 변환. 이 방법은 관계가 선형이 아닐 때 유용ен.

- 상호작용 특성(Interaction features): 두 특성을 곱하여 새로운 특성을 생성하는 것. '주택 면적 × 욕실 수'가 주택 가격 예측에 더 유용на 수 있습니다.

- 도메인 지식(Domain knowledge): 가장 강력한 기법. 의사가 의료 모델을 위해 특성을 생성할 때 어떤 실험실 수치가 중요ны지 아는 것처럼, 마케터는 '마지막 구매로부터 경과한 일수'가 '구매 날짜'보다 더 유용на 것을 아는 것. 어떤 알고리즘도 이 지식을 대체ить 수 없습니다.

Feature Engineering Techniques

Feature Practice

Applying Feature Engineering

스트리밍 구독을 다음 달에 취소할 고객을 예측하는 모델을 구축한다고 상상해 보세요. 원본 데이터에는 다음이 포함됩니다:

- 계정 생성일

- 마지막 로그인 날짜

- 지난 달 시청한 프로그램 수

- 월간 결제 금액

- 고객 지원 티켓 수

- 국가

위에 나열된 원본 데이터로부터 최소 세 가지 새로운 피처를 엔지니어링할 것을 제안하세요. 각 피처에 대해, 그것 captured & 취소 예측에 왜 도움이 될 수 있는지 설명하세요.

훈련/테스트 분할

데이터를 분할하는 이유

모델링에서 가장 중요한 규칙: 훈련에 사용한 데이터로 모델을 평가하지 마세요.

그렇게 하면 모델이 단순히 정답을 암기할 수 있습니다. 훈련 데이터에서는 완벽한 점수를 받지만, 새로운 미지의 데이터에서는 실패할 것입니다. 이를 과적합(overfitting)이라고 합니다: 모델이 실제 패턴 대신 특정 데이터셋의 잡음을 학습한 것입니다.

표준적인 방법은 데이터를 분할하는 것입니다:

- 훈련 세트 (일반적으로 70-80%): 모델이 이 데이터로 학습합니다

- 테스트 세트 (일반적으로 20-30%): 따로 보관하며, 최종 모델을 평가하는데만 사용합니다

scikit-learn에서는: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)


일반적인 알고리즘

- 선형 회귀: 데이터에 가장 잘 맞는 직선을 그립니다. 간단하고 해석하기 쉬우며, 관계가 대략 선형일 때 잘 작동합니다. 숫자(가격, 온도, 점수)를 예측합니다.

- 결정 트리: 예/아니오 질문을 흐름도로 표현합니다. 이해하기 쉽고 설명하기도 간단합니다. 깊이를 제한하거나 가지치기를 하지 않으면 과적합되기 쉽습니다.

- 랜덤 포레스트: 여러 개의 결정 트리가 투표하는 방식으로 работает. 단일 트리보다 정확도가 높고 과적합에 강합니다, 하지만 설명하기는 어렵нее합니다.


과적합 vs. 과소적합

- 과적합: 모델이 너무 복잡합니다. 학습 데이터의 noise까지 포함하여 암기합니다. 학습 데이터에서는 높은 정확도를 보이나, 테스트 데이터에서는 낮은 정확도를 보입니다.

- 과소적합: 모델이 너무 단순합니다. 실제 패턴을 포착하지 못합니다. 학습 데이터와 테스트 데이터 모두에서 낮은 정확도를 보입니다.

목표는 그 두 가지 사이의 적절한 균형점입니다.

Train/Test Split and Bias-Variance Tradeoff

평가 지표

모델이 좋은지 어떻게 알 수 있을까?

정확도만으로는 오해를 불러일으킬 수 있습니다. 이메일의 95%가 스팸이 아닌 경우, 항상 '스팸이 아니다'라고 예측하는 모델은 95%의 정확도를 보이지만 전혀 쓸모가 없습니다.

주요 지표:

- Accuracy: 올바른 예측의 비율. 클래스가 균형을 이룰 때 유용합니다.

- Precision: 모델이 양성으로 분류한 것들 중 실제로 양성인 비율. 높은 정밀도는 거짓 양성이 적음을 의미합니다.

- Recall: 실제 양성 중 모델이 올바르게 예측한 비율. 높은 재현율은 놓친 사례가 적음을 의미합니다.

- F1 score: 정밀도와 재현율의 조화 평균. 두 지표를 균형 있게 고려해야 할 때 유용합니다.

- RMSE (Root Mean Squared Error): 회귀 문제(숫자 예측)에 사용. 예측값이 실제값과 평균적으로 얼마나 차이가 나는지 나타냅니다.

어떤 지표가 가장 중요할지는 문제에 따라 다릅니다. 암 진단의 경우 재현율이 더 중요합니다: 실제 환자를 놓치고 싶지 않기 때문입니다. 스팸 필터링의 경우 정밀도가 더 중요합니다: 정상 이메일을 삭제하고 싶지 않기 때문입니다.

Evaluation Metrics and Confusion Matrix

신용카드 사기 거래를 탐지하는 모델을 구축 중입니다. 실제 사기 거래는 전체의 0.1%에 불과합니다. 만약 모델이 모든 거래를 정상으로 예측한다면, 그 모델의 정확도는 얼마입니까? 왜 정확도는 이 경우 나쁜 지표이며, 대신 어떤 지표를 사용해야 할까요?

데이터 분석가 vs. 데이터 과학자 vs. ML 엔지니어

세 가지 역할

데이터 분야에는 세 가지 주요 커리어 트랙이 있으며, 각각 다른 기술이 필요합니다.


데이터 분석가

- Focus: 기존 데이터로 비즈니스 질문에 답하기

- Tools: SQL, Excel, Tableau, 기본 Python 또는 R

- Day-to-day: 대시보드, 보고서, A/B 테스트 분석, 이해관계자 프레젠테이션

- Entry path: 종종 가장 접근하기 쉬운 경로. 많은 분석가가 CS 학위 없이 시작함.


데이터 과학자

- Focus: 예측 모델 구축 및 복잡한 데이터에서 패턴 찾기

- Tools: Python (pandas, scikit-learn, matplotlib), 통계, SQL, Jupyter notebooks

- Day-to-day: EDA, feature engineering, model building, experimentation

- Entry path: typically requires statistics or quantitative background. Bootcamps & self-study are viable.


Machine Learning Engineer

- Focus: deploying & scaling models in production systems

- Tools: Python, TensorFlow/PyTorch, Docker, cloud platforms (AWS/GCP), APIs

- Day-to-day: model optimization, pipeline infrastructure, monitoring production models

- Entry path: usually requires strong software engineering skills plus ML knowledge.


포트폴리오 만들기

채용 담당자들은 당신이 무엇을 공부했는지보다는 무엇을 할 수 있는지를 더 중요하게 생각합니다. GitHub에 3~5개의 탄탄한 프로젝트를 올려놓은 포트폴리오는 자격증보다 훨씬 중요합니다. 좋은 프로젝트는 실제(장난감이 아닌) 데이터셋을 사용하고, 명확한 문서를 포함하며, 지저분한 데이터에서 실행 가능한 인사이트까지 전체 파이프라인을 보여줍니다.

Data Career Paths

다음 단계

여기서 어디로 가야 할까

이 분야의 도구들은 무료이며 누구나 접근할 수 있습니다:

- pandas: 데이터 조작을 위한 표준 Python 라이브러리

- matplotlib / seaborn: 시각화 라이브러리

- scikit-learn: 전통적인 머신러닝을 위한 핵심 라이브러리

- Jupyter notebooks: 코드, 출력, 메모를 함께 작성할 수 있는 대화형 코딩 환경

- Kaggle: 무료 데이터셋, 대회, 그리고 실무자 커뮤니티

관심 있는 실제 데이터셋 하나를 선택하세요. 다운로드하고, 정제하고, 탐색한 뒤 질문에 답해보세요. 그 단 하나의 프로젝트가 어떤 강의보다 더 많은 것을 가르쳐줄 것입니다.

이 수업에서 배운 내용을 바탕으로, 세 가지 역할(데이터 분석가, 데이터 과학자, ML 엔지니어) 중 가장 관심 있는 역할은 무엇인가요? 해당 역할을 위한 스킬을 쌓기 위해 이번 주에 할 수 있는 구체적인 한 가지 단계는 무엇인가요?