Machine Learning (머신 러닝)

5단 분석법

순서
분석
단어
내용
1
일반 명사
Machine
동력을 사용해 작업을 수행하는 도구를 통틀어 이르는 말
Learning
직간접적인 경험이나 훈련에 의해 지속적으로 자각하고, 인지하며, 변화시키는 행동 변화
Machine Learning
동력을 사용해 작업을 수행하는 도구를 직간접적인 경험이나 훈련에 의해 지속적으로 자각하고, 인지하며, 변화시키는 것
2
고유 명사
Machine Learning
경험을 통해 자동으로 개선하는 컴퓨터 알고리즘의 연구 분야
3
사용 이유
Machine Learning
데이터로부터 자동으로 학습하고 예측을 개선하여 복잡한 문제를 해결하기 위해서
4
사용 방법
Machine Learning
데이터 수집 및 전처리, 모델 선택 및 학습, 평가 및 검증, 그리고 예측 및 최적화의 과정을 거쳐 사용
5
다른 기술과의 비교
Machine Learning
-

정의

일반 명사

Machine
동력을 사용해 작업을 수행하는 도구를 통틀어 이르는 말
Learning
직간접적인 경험이나 훈련에 의해 지속적으로 자각하고, 인지하며, 변화시키는 행동 변화
Machine Learning
동력을 사용해 작업을 수행하는 도구를 직간접적인 경험이나 훈련에 의해 지속적으로 자각하고, 인지하며, 변화시키는 것.
Machine(기계)은 동력을 사용해 작업을 수행하는 도구를 통틀어 이르는 말입니다.
Learning(학습)은 직간접적인 경험이나 훈련에 의해 지속적으로 자각하고, 인지하며, 변화시키는 행동 변화를 뜻합니다.
두 단어의 뜻을 미루어 보았을 때,
Machine Learning은 동력을 사용해 작업을 수행하는 도구가 직간접적인 경험이나 훈련에 의해 지속적으로 자각하고, 인지하며, 변화시키는 것이라고 생각해 볼 수 있습니다.

고유 명사

Machine Learning
경험을 통해 자동으로 개선하는 컴퓨터 알고리즘의 연구 분야 즉, 컴퓨터가 스스로 하는 학습
Machine Learning은 경험을 통해 자동으로 개선하는 컴퓨터 알고리즘의 연구 분야입니다.
즉, ‘컴퓨터가 스스로 하는 학습’을 머신러닝이라고 합니다.
Machine Learning은 AI의 하위 분야 중 하나로서, 컴퓨터가 명시적인 프로그래밍 없이도 데이터를 통해 학습하고 예측을 개선하는 자동화 기술을 개발하는 것을 목표로 합니다.
Machine Learning의 알고리즘은 통계학, 수학, 데이터 과학 등의 이론을 기반으로 하며, 다양한 실제 응용 분야에 적용되고 있습니다.
예를 들어, 이미지 인식, 음성 인식, 추천 시스템, 자연어 처리 등이 Machine Learning의 대표적인 응용 사례입니다.
graph LR
    %% 스타일 정의
    classDef optional fill:#e6e6e6,stroke:#333,stroke-width:2px;
    classDef essential fill:#b3d9ff,stroke:#333,stroke-width:2px;

    1[데이터 수집] --> 2[데이터 전처리]
    2 --> 3[데이터 분할]
    3 --> 4[모델 선택 및 훈련]
    4 --> 5[모델 평가]
    5 --> 6{성능 만족?}
    6 -->|Yes| 7[모델 배포]
    6 -->|No| 8[모델 조정 및 재훈련]
    8 --> 4
    7 --> 9[테스트 데이터로 예측]
    9 --> 10[모델 예측 결과]
    10 --> 11{성능 유지?}
    11 -->|Yes| 12[최종 모델 확정]
    11 -->|No| 8

    %% 클래스 적용
    class 1,2,4,5,6,7,8,9,10,11,12 essential;
    class 3 optional;
Mermaid
복사
단계
이름
설명
1
데이터 수집
머신러닝 모델을 훈련시키기 위한 데이터를 수집하는 단계입니다.
2
데이터 전처리
수집된 데이터를 정제하고, 누락된 값을 처리하며, 필요에 따라 변환하는 단계입니다.
3
데이터 분할
데이터를 훈련 데이터와 테스트 데이터로 나누는 단계입니다.
4
모델 선택 및 훈련
적절한 머신러닝 모델을 선택하고 훈련시키는 단계입니다.
5
모델 평가
훈련된 모델의 성능을 평가하는 단계입니다.
6
성능 만족?
모델의 성능이 만족스러운지 여부를 판단하는 결정 단계입니다.
7
모델 배포
만족스러운 성능의 모델을 실제 환경에 배포하는 단계입니다.
8
모델 조정 및 재훈련
모델의 성능이 만족스럽지 않은 경우, 모델을 조정하고 재훈련하는 단계입니다.
9
테스트 데이터로 예측
배포된 모델을 사용하여 테스트 데이터로 예측을 수행하는 단계입니다.
10
모델 예측 결과
모델의 예측 결과를 확인하는 단계입니다.
11
성능 유지?
모델이 예측 과정에서도 성능을 유지하는지 여부를 판단하는 결정 단계입니다.
12
최종 모델 확정
성능이 유지되는 모델을 최종 확정하는 단계입니다.
필수
1: 데이터 수집
2: 데이터 전처리
4: 모델 선택 및 훈련
5: 모델 평가
6: 성능 만족?
7: 모델 배포
8: 모델 조정 및 재훈련
9: 테스트 데이터로 예측
10: 모델 예측 결과
11: 성능 유지?
12: 최종 모델 확정
선택
3: 데이터 분할
Machine Learning을 왜 사용하는지, 이유를 한 번 알아볼까요?

사용 이유

Machine Learning
데이터로부터 자동으로 학습하고 예측을 개선하여 복잡한 문제를 해결하기 위해서
장점
설명
자동화
데이터 분석과 예측 작업을 자동화하여 인간의 개입 없이도 복잡한 문제를 해결할 수 있습니다. 이는 시간과 비용을 절감하는 데 큰 도움이 됩니다.
예측 정확성 향상
대량의 데이터를 분석하여 패턴을 인식하고, 이를 바탕으로 높은 정확도의 예측을 수행할 수 있습니다. 예를 들어, 금융 시장에서의 주가 예측, 의료 분야에서의 질병 진단 등이 이에 해당합니다.
실시간 처리
대량의 데이터를 실시간으로 처리하여 빠른 의사 결정을 가능하게 합니다. 이는 자율 주행 자동차, 실시간 추천 시스템 등에서 중요한 역할을 합니다.
데이터 활용 극대화
데이터 활용 극대화

사용 방법

Machine Learning
데이터 수집 및 전처리, 모델 선택 및 학습, 평가 및 검증, 그리고 예측 및 최적화의 과정을 거쳐 사용
순서
방법
내용
1
데이터 수집 및 전처리
Machine Learning 모델을 학습시키기 위해서는 대량의 데이터가 필요합니다. 데이터 수집 단계에서는 다양한 소스에서 데이터를 모으고, 이를 분석에 적합한 형태로 정제하는 작업이 이루어집니다. 전처리 과정에서는 데이터의 불균형을 조정하고, 누락된 값을 처리하며, 필요에 따라 데이터 변환 작업을 수행합니다.
2
모델 선택 및 학습
데이터가 준비되면, 문제에 적합한 Machine Learning 알고리즘을 선택합니다. 알고리즘 선택은 문제의 특성, 데이터의 구조, 요구되는 예측 정확도 등을 고려하여 이루어집니다. 선택된 알고리즘을 사용하여 데이터를 학습시키는 과정에서는 학습 데이터를 통해 모델의 파라미터를 최적화합니다.
3
평가 및 검증
학습된 모델의 성능을 평가하기 위해 별도의 검증 데이터를 사용합니다. 이 단계에서는 모델의 예측 정확도, 정밀도, 재현율 등의 지표를 확인하며, 필요에 따라 모델을 개선합니다. 또한, 교차 검증(cross-validation)을 통해 모델의 일반화 성능을 평가하여 과적합(overfitting)을 방지합니다.
4
예측 및 최적화
최종 모델이 준비되면, 이를 실제 데이터에 적용하여 예측을 수행합니다. 예측 결과는 비즈니스 의사 결정에 활용되며, 예를 들어 고객 행동 예측, 수요 예측, 금융 시장 분석 등에 사용됩니다. 지속적인 모니터링과 피드백을 통해 모델을 최적화합니다.
과적합이란?
과적합은 모델이 훈련 데이터에 너무 잘 맞춰져서 새로운 데이터(검증 데이터 또는 테스트 데이터)에 대해 일반화 성능이 떨어지는 현상을 말합니다.
교차 검증을 하는 이유
특정 트레인 데이터의 몇퍼센트만 나눠서 검증하는 것임 교차로 여러 부분을 검증 데이터로 사용하면서 정확도를 높일 수 있어서

단순한 숫자 예측 모델 만들기

문제 설명

1.
데이터 수집
간단한 숫자 데이터를 준비합니다.
예시 데이터
# 데이터 수집 X = np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]) # 10행 1열의 2차원 배열 y = np.array([2, 4, 6, 8, 10, 12, 14, 16, 18, 20]) # 1행 10열의 2차원 배열
Python
복사
X: 입력 데이터입니다. 예를 들어, 1, 2, 3, ..., 10이라는 숫자가 있습니다.
y: 출력 데이터입니다. 입력 데이터 X에 대응하는 값으로, 2, 4, 6, ..., 20이라는 숫자가 있습니다. 여기서는 yX의 두 배인 것을 볼 수 있습니다.
2.
모델 선택 및 학습
모델 선택: LinearRegression()을 사용하여 선형 회귀 모델을 생성합니다. 이 모델은 두 변수 사이의 직선 관계를 찾는 모델입니다.
선형 회귀란?
선형 회귀는 한 변수(X)를 사용하여 다른 변수(Y)를 예측하는 방법입니다. 두 변수 사이의 관계를 직선으로 표현하며, 이 직선을 통해 예측을 합니다.
모델 학습: model.fit(X, y)는 모델을 데이터 Xy에 맞추는 과정입니다. 이 과정에서 모델은 "X와 y의 관계는 무엇인가?"를 배우게 됩니다.
3.
평가 및 검증
새로운 데이터: X_test는 새로운 입력 데이터입니다. 예를 들어, 11, 12, 13, 14, 15라는 숫자가 있습니다.
예측 수행: model.predict(X_test)는 학습된 모델을 사용하여 X_test에 대한 예측값을 계산합니다.
4.
예측 및 최적화
모델이 예측한 값을 출력합니다.

코드

import numpy as np from sklearn.linear_model import LinearRegression # 데이터 수집 X = np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]) y = np.array([2, 4, 6, 8, 10, 12, 14, 16, 18, 20]) # print(X) # print(y) # 모델 선택 및 학습 model = LinearRegression() model.fit(X, y) # fit은 모델을 데이터에 맞추는(훈련하는) 함수 # 예측 및 평가 X_test = np.array([[11], [12], [13], [14], [15]]) # model.predict(X_test)는 학습된 선형 회귀 모델을 사용하여 새로운 데이터 X_test에 대한 예측값을 계산하는 함수 y_pred = model.predict(X_test) print("예측값:", y_pred)
Python
복사
결과
예측값: [22. 24. 26. 28. 30.]
Python
복사
왜 예측값이 [22. 24. 26. 28. 30.]인가요?
모델은 학습 단계에서 Xy의 관계를 배웠습니다. 여기서 yX의 두 배라는 관계를 발견했습니다. 예를 들어:
X가 1일 때, y는 2 (1의 두 배)
X가 2일 때, y는 4 (2의 두 배)
...
이제 모델이 새로운 값(11, 12, 13, 14, 15)을 입력받으면, 동일한 규칙(두 배)을 적용하여 예측을 수행합니다:
X가 11일 때, y는 22 (11의 두 배)
X가 12일 때, y는 24 (12의 두 배)
X가 13일 때, y는 26 (13의 두 배)
X가 14일 때, y는 28 (14의 두 배)
X가 15일 때, y는 30 (15의 두 배)
그래서 예측값이 [22, 24, 26, 28, 30]이 됩니다.
코드 설명

참고 하면 좋은 영상

미니퀘스트

1번 미니퀘스트 - 간단한 분류 문제 해결하기

문제 설명

1.
데이터 수집
간단한 꽃 데이터셋을 사용합니다. 각 꽃의 특성(예: 길이와 너비)과 클래스(예: 꽃의 종류)를 포함합니다.
예시 데이터
X = np.array([[1.4, 0.2], [1.3, 0.2], [1.5, 0.2], [4.5, 1.5], [4.1, 1.0], [5.1, 1.8]]) y = np.array([0, 0, 0, 1, 1, 1])
Python
복사
2.
모델 선택 및 학습
k-최근접 이웃(K-Nearest Neighbors, KNN) 알고리즘을 사용합니다.
꽃 데이터의 특성을 바탕으로 새로운 꽃의 종류를 예측하는 모델을 학습시킵니다.
k-최근접 이웃(K-Nearest Neighbors, KNN) 알고리즘이란?
K-최근접 이웃(KNN)은 새로운 데이터를 기존 데이터와 비교하여 가장 가까운 K개의 데이터로부터 그룹이나 값을 예측하는 방법
3.
평가 및 검증
학습된 모델을 사용하여 새로운 꽃 데이터의 클래스를 예측합니다.
예측값을 실제값과 비교하여 모델의 정확도를 평가합니다.
4.
예측 및 최적화
모델이 예측한 값을 출력합니다.

코드

from sklearn.neighbors import KNeighborsClassifier # 데이터 수집 X = np.array([[1.4, 0.2], [1.3, 0.2], [1.5, 0.2], [4.5, 1.5], [4.1, 1.0], [5.1, 1.8]]) y = np.array([0, 0, 0, 1, 1, 1]) # 모델 선택 및 학습 model = KNeighborsClassifier(n_neighbors=3) model.fit(X, y) # 예측 및 평가 X_test = np.array([[1.6, 0.4], [4.8, 1.6]]) y_pred = model.predict(X_test) print("예측값:", y_pred)
Python
복사
결과
예측값: [0 1]
Python
복사
이 결과는 첫 번째 테스트 데이터 포인트([1.6, 0.4])가 클래스 0에 속하고, 두 번째 테스트 데이터 포인트([4.8, 1.6])가 클래스 1에 속함을 의미합니다.

요약

[1.6, 0.4]: 모델이 이 데이터를 클래스 0 (첫 번째 그룹)으로 예측했습니다.
[4.8, 1.6]: 모델이 이 데이터를 클래스 1 (두 번째 그룹)으로 예측했습니다.
n_neighbors 는 뭔가요? 그리고 왜 쓰는건가요?
n_neighbors는 K-최근접 이웃 (K-Nearest Neighbors, KNN) 알고리즘에서 사용되는 파라미터로, 분류를 수행할 때 고려할 최근접 이웃의 수를 의미합니다. 즉, 새로운 데이터 포인트의 클래스를 결정할 때, 가장 가까운 n_neighbors개의 데이터 포인트를 참고하여 다수결로 클래스를 결정합니다.
예를 들어, n_neighbors=3이면 새로운 데이터 포인트를 분류할 때 가장 가까운 3개의 이웃을 참고하여 이웃 중 가장 많이 속하는 클래스로 분류하게 됩니다. 따라서, 코드에서 n_neighbors=3은 새로운 데이터를 분류할 때 3개의 가장 가까운 이웃의 클래스를 참고한다는 의미입니다.
코랩으로 보기 : link iconGoogle Colab
코드 설명

미니퀘스트 답안지

ⓒ 2024 startupcode. 모든 권리 보유. 무단 복제 금지.