KT에이블스쿨/수업 복습 정리

머신러닝 (1일차) [KT 에이블스쿨] 2025.04.07(월)

PaperDrop 2025. 4. 11. 00:30

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에이블스쿨을 궁금해하시거나 고민하시는 분들에게 도움이 되었길 바라며 !

또 내일의 내가 조금이나마 더 기억하길 바라며 !

 

오늘의 포스팅도 마치겠습니다 !!