2025.04.07 (월)
오늘은 일주일간 [데이터 분석]수업이 끝이나고,
이어지는 [머신러닝]을 배우는 날이었습니다.
머신러닝을 배우기 전에 데이터 분석을 배운 이유는,
머신러닝에 들어가기 전 데이터 수집과 데이터 탐색 및 전처리가 필요하기 때문 !
그래서 수집한 데이터를 원하는 형식으로 바꾸는 것은 물론,
수집한 데이터 안에 어떤 데이터가 있는지 탐색하는 EDA과정과
이후 머신러닝 과정으로 넘어가기 전에 이뤄지는 전처리 과정을 학습했습니다.
이제 본격적으로 이어지는 [머신러닝] 과정에 대해 이야기 해보겠습니다.

<목차>
1. 인공지능과 머신러닝
2. 머신러닝 원리와 학습 프로세스
1. 인공지능과 머신러닝
○ 인공지능
: 인간의 학습, 추론, 문제 해결 능력을 모방하는 기술
○ 머신러닝
: 인공지능의 한 분야로, 데이터를 이용해 스스로 학습하는 알고리즘을 개발하는 기술
○ 딥러닝
: 머신러닝의 하위 개념으로, 인간의 신경망을 모방한 인공 신경망을 이용해 더 정교한 학습을 수행하는 기술
여기서 약간 헷갈리는 개념이 있으실거 같습니다.
왜냐면, 저도 그랬거든요.

위에 정의대로,
인공지능 ⊃ 머신러닝 ⊃ 딥러닝
이 되는 것입니다.
○ 머신러닝 사용의 장점
1. 자동화
2. 정확한 예측
3. 업무 효율성 향상
4. 맞춤형 서비스 제공
5. 빠른 의사 결정 지원
→ 결과적으로 위 장점들을 통해 '데이터 기반의 의사결정'을 가능하게 한다.
2. 머신러닝 원리와 학습 프로세스
○ 머신러닝의 정의
: 데이터로부터 패턴을 학습하여 새로운 데이터를 예측하거나 분석하는 기술
○ 머신러닝의 3요소
: 데이터 / 학습 / 모델
1) 데이터 (머신러닝의 출발점)
: 숫자, 텍스트, 이미지, 소리 등 모든 형태의 정보
2) 학습 (데이터에서 패턴을 찾는 과정)
: 모델의 데이터를 통해 패턴을 찾고, 새로운 데이터를 예측할 수 있도록 하는 과정
3) 모델 (데이터와 학습을 연결하는 요소)
: 학습된 패턴을 기반으로 데이터를 예측하는 역할
여기서 중요한 점 !
"얼마나 좋은 데이터를 사용하느냐가 '머신러닝의 성능'을 결정"
또한,
상황에 맞는 올바른 학습 방법과 적절한 학습 모델을 결정하는 것도 중요합니다 !
○ 데이터 분할 (Train/Test Split)
: 머신러닝 모델을 훈련하고 평가하기 위해 전체 데이터를 용도별로 나누는 과정
→ 크게 (Train Data / Valid Data / Test Data)로 나눈다.
→ 이후 각각의 데이터셋들을 추가로 문제로 주어지는 '힌트 데이터'와 정답을 알려주는 '정답 데이터'로 나눈다.

☆여기서 중요한 코드☆
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=1111, stratify=y
)
print(f" X_train shape: {X_train.shape}")
print(f" X_test shape: {X_test.shape}")
print(f" y_train label 분포:\n{y_train.value_counts()}")
print(f" y_test label 분포:\n{y_test.value_counts()}")
# 코드 실행 결과
X_train shape: (70, 2)
X_test shape: (30, 2)
y_train label 분포:
1 39
0 31
Name: count, dtype: int64
y_test label 분포:
1 16
0 14
Name: count, dtype: int64
→ 데이터 분할에는 [sklearn.model_selection.train_test_split] 메소드를 사용한다.
메소드는 ( 데이터프레임의 행, 열, *, test_size, random_state etc)으로 이루어진다.
→ [요소] 1번, 2번 요소는 데이터프레임의 array이고, 뒤에 test_size는 test data의 비율을 의미하고,
random_state는 일정한 과정에서 비교하는 경우에 동일한 숫자를 적어서 사용한다.
추가로 Train 데이터와 Test 데이터의 X와 y 비율이 크게 차이나는 경우에 stratify 요소로 비율을 맞춘다.
→ 이때 정의되는 X는 독립변수인 '문제'가 되고, y는 종속변수인 '답'이 된다.
그래서 이후 학습 과정에서는 X와 y 모두를 이용해 패턴을 파악하고,
이후 검증단계에서는 X data로 답을 추측해보고, y data를 가지고 성능을 검증하게 된다.
○ 모델 선택 및 학습 (Model Training)
# 0. 모델 라이브러리
from sklearn.tree import DecisionTreeClassifier
# 1. 모델 객체화
model = DecisionTreeClassifier(random_state=11) # 모델 객체화
# 2. 학습 수행
model.fit(X_train, y_train)
→ 데이터 형태와 목적에 맞는 모델을 골라 학습에 사용한다.
이번 과정에서는 의사결정나무(Decision Tree)모델을 사용하였기에 해당 메소드를 불러왔다.
→ 이외에도 다양한 모델과 메소드가 있으며, 이와 관련된 자세한 내용은 앞으로 남은 과목에서 다룰 예정이다.
※ 모델 객체화에서도 성능 평가를 위해 동일한 과정을 반복하는 경우가 있기 때문에
random_state를 사용하여 동일한 과정을 반복할 수 있다.
○ 예측 및 평가 (Prediction & Evaluation)
: 학습된 모델로 테스트 데이터를 예측하고, 정확도 등의 지표로 성능을 평가
from sklearn.metrics import accuracy_score
pred = model.predict(X_test)
score = accuracy_score(pred, y_test)
print(score)
→ 해당 코드는 정확도를 지표로 성능을 평가는 코드이다.
predict() 메소드를 이용해 모델이 추측한 결과를 얻고,
그걸 정답 데이터인 y_test 데이터와 비교하여 정확도를 계산한다.
→ 모델의 종류와 마찬가지로 단원의 남은 과정에서 더 다양한 성능평가 지표를 배울 예정이다.
오늘은 머신러닝의 첫 시간으로
[데이터 분할, 모델 선택 및 학습, 예측 및 평가]의 정의를 배우고,
전반적인 과정을 함께 작성하고 실행해봤습니다 !
강사님께서 말씀해주신 내용의 절반도 제가 적지 못한거 같지만...
복습차원이니 만큼 중요한 내용 위주로 돌아보며 작성해봤습니다.
해당 내용이 KT에이블스쿨을 궁금해하시거나 고민하시는 분들에게 도움이 되었길 바라며 !
또 내일의 내가 조금이나마 더 기억하길 바라며 !
오늘의 포스팅도 마치겠습니다 !!

'KT에이블스쿨 > 수업 복습 정리' 카테고리의 다른 글
생성형AI (2일차) [KT 에이블스쿨] 2025.04.21(월) (1) | 2025.04.21 |
---|---|
생성형AI (1일차) [KT 에이블스쿨] 2025.04.18(금) (0) | 2025.04.18 |
1차 미니프로젝트 (2일차[1]) [KT 에이블스쿨 7기] 2025.04.15(화) (0) | 2025.04.15 |
머신러닝 (3일차) [KT 에이블스쿨] 2025.04.09(수) (0) | 2025.04.12 |
머신러닝 (2일차) [KT 에이블스쿨] 2025.04.08(화) (0) | 2025.04.11 |