[오늘의 일지]
머신러닝 실시간 강의 - ML PJT Workflow, 머신러닝의 정의
[상세 내용]
ML PJT Workflow
- 이번 머신러닝 수업은 프로젝트를 위함이기에 아래의 큰 틀을 가지고 있습니다.
머신러닝
시작하면서 느낀점
- 오늘은 머신러닝 실시간 수업이 시작되는 날이었습니다. 지난주 머신러닝 수업 시작 후로 생각해 봤는데 수업을 들으면서 정작 머신러닝 자체의 정의를 한 번도 제대로 정리하고 넘어간 적이 없었던 거 같습니다. 그래서 오늘 수업은 뭔가 근본적으로 머신러닝이라는 것에 대해서 제대로 알고 시작한다는 점에서 의미가 있었던 거 같습니다.
역사
- 역사적인 부분에서 시작한다면 머신러닝의 첫 등장은 대략적으로는 1950년대인 거 같은데 찾아본 사이트들마다 조금씩 다른 이야기를 하고 있어서 정확히는 언제였다고는 할 수 없을 거 같습니다. 그렇지만 대중적으로 알려져 있는 이야기는 인공지능을 연구하기 위해서 처음 시작했는데 그 시작이 체커게임을 학습시키기 위한 알고리즘을 개발했다는 것으로 알려져 있습니다. 여기서 중요한 사실은 체커게임이라는 게임 룰을 데이터라고 정의하고 그 안에서 게임을 승리하기 위함이라는 결과를 도출하기 위해서 기계가 학습했다고 생각하면 오늘날까지 이어져 오는 데이터 분석을 위한 큰 틀은 크게 변하지 않았다는 것을 알 수 있습니다. 여기서 나오는 데이터 분석이란 무엇인지 자세하게 알아보겠습니다.
데이터 분석 문제 정의
- 제가 수업시간에 배운 내용에서는 크게 7가지의 질문을 통해서 데이터 분석 문제에 대한 정의를 설명하려고 하는 것 같았습니다. 저는 여기서 아래와 같은 질문을 던지는 이유에 대해서 생각해 봤는데 결과적으로는 얼마나 더 효율적인 방법을 선택해서 데이터를 분석할 것인지에 대한 것이 아닌가 하는 생각이 들었습니다. 그러면서 이러한 데이터 분석을 위한 질문들이 머신러닝을 할 것인지 아니면 다른 더 좋은 방법을 선택할 것인지와 같은 선택지를 주면서 무작정 생각 없이 진행될 작업들에 대한 필터링 역할을 해준다는 것도 알게 되었습니다.
- 해당 문제는 예측이 필요한 문제인가?
- 예측 모델 개발에 필요한 데이터를 얻을 수 있는가? (eg. 자연수 홀수/짝수 -> 규칙 기반)
- 문제 해결 방식이 deterministic 해야 하는가? (eg. deterministic vsv stochastic)
- 상황에 대한 해석이 필요한 문제인가? (eg. 정말 해석이 필요하다면 EDA를 하면 된다.)
- 정량적 해석이 중요한가, 정성적 해석이 중요한가? (eg. 예측의 정확도 vs 예측 방법의 설명력)
- 문제 해결에 모델의 성능이 중요한가? (eg. 정확도 or 시간 or 메모리 사용량)
- 문제 해결에 많은 computing resource가 필요한가? (eg. ML vs DL)
머신러닝의 정의
- 머신러닝은 경험 E에 대해 특정 작업 클래스 T 및 성능 측정 P와 관련하여, 작업 T에서의 성능이 성장하는 것으로 정의됩니다. 다음과 같은 요소들을 강조합니다.
- 경험 (Experience, E): 머신러닝은 데이터와 경험에 의존합니다. 모델은 데이터를 통해 학습하고 경험을 쌓아가며 작업을 수행하는 데 사용됩니다. 이 경험은 주로 학습 데이터로부터 얻어집니다.
- 작업 클래스 (Task Class, T): 머신러닝은 특정 작업을 수행하는 데 사용됩니다. 작업 클래스는 모델이 풀어야 할 과제 또는 작업을 나타내며, 예를 들어 이미지 분류, 음성 인식, 자연어 처리 등이 될 수 있습니다.
- 성능 측정 (Performance Measure, P): 성능 측정은 모델이 작업 T에서 얼마나 잘 수행하는지를 측정하는 방법이며, 목표와 관련이 있습니다. 성능 측정은 일반적으로 정확도, 정밀도, 재현율, F1 점수 등과 같은 지표를 사용하여 수행됩니다.
- 성능 향상 (Performance Improvement): 머신러닝의 핵심 목표는 경험을 통해 작업 T에서의 성능을 향상시키는 것입니다. 모델은 학습 데이터를 기반으로 학습하고 최적의 예측을 수행하기 위해 모델 파라미터를 조정하거나 새로운 데이터를 통해 계속적으로 개선됩니다.
머신러닝의 7단계
- 데이터 수집 (Gathering Data): 머신러닝 프로젝트의 시작 단계로, 필요한 데이터를 수집합니다. 데이터는 문제에 따라 다양한 형태와 소스에서 나올 수 있으며, 데이터 품질이 매우 중요합니다.
- 데이터 준비 (Preparing Data): 수집한 데이터를 전처리하고 준비하는 단계입니다. 이 단계에서 데이터 정제, 누락된 값 처리, 이상치 제거 및 데이터 스케일링과 같은 데이터 정규화 작업을 수행합니다. 또한 데이터를 학습용과 테스트용으로 나누는 작업도 이 단계에서 수행됩니다.
- 모델 선택 (Choosing a Model): 문제의 종류와 목표에 따라 적절한 머신러닝 모델을 선택합니다. 이는 분류 문제, 회귀 문제, 군집화 문제 등에 따라 다를 수 있습니다. 머신러닝 라이브러리에서 사용 가능한 모델 중에서 선택하게 됩니다.
- 모델 학습 (Training): 선택한 모델을 학습 데이터에 적용하여 모델을 학습시킵니다. 학습 단계에서 모델은 입력 데이터와 해당 출력(레이블) 간의 관계를 학습하고 모델 파라미터를 조정하여 예측을 수행할 수 있도록 준비됩니다.
- 모델 평가 (Evaluation): 학습한 모델을 검증 데이터 또는 테스트 데이터에 대해 평가합니다. 모델의 성능 지표를 계산하여 모델이 얼마나 잘 수행되는지를 확인합니다. 일반적으로 정확도, 정밀도, 재현율, F1 점수 등의 지표를 사용합니다.
- 하이퍼파라미터 튜닝 (Hyperparameter Tuning): 모델의 하이퍼파라미터를 조정하여 모델의 성능을 최적화합니다. 하이퍼파라미터는 모델의 학습 과정 및 구조를 제어하는 매개 변수로, 최적 값을 찾기 위해 그리드 서치, 랜덤 서치 등의 기술을 사용할 수 있습니다.
- 예측 (Prediction): 최종 모델이 학습된 후에는 새로운 입력 데이터에 대한 예측을 수행합니다. 이를 통해 모델을 실제 환경에서 사용하고 원하는 작업을 수행할 수 있습니다.
머신러닝 타입
지도 학습 (Supervised Learning)
- 입력 데이터와 해당 데이터에 대한 정답(레이블 또는 타깃)을 사용하여 모델을 학습시키는 방법.
- 주로 분류(Classification)와 회귀(Regression) 문제로 나뉨.
- 예: 이미지 분류, 스팸 이메일 탐지, 주택 가격 예측
비지도 학습 (Unsupervised Learning)
- 정답 레이블이 제공되지 않는 데이터에서 패턴이나 구조를 발견하는 방법.
- 주로 군집화(Clustering)와 밀도 추정(Density Estimation)으로 나뉨.
- 예: 고객 세그먼테이션, 이미지 압축, 주성분 분석(PCA)
반지도 학습 (Semi-Supervised Learning)
- 일부 데이터에만 레이블이 주어진 상황에서 모델을 학습시키는 방법.
- 레이블이 없는 데이터를 레이블링 하기 위해 보조 정보를 활용.
- 예: 웹 문서 카테고리 분류, 의료 이미지 분석
강화 학습 (Reinforcement Learning)
- 에이전트(Agent)가 환경(Environment)에서 행동하고 보상(Reward)을 기반으로 학습하는 방법.
- 에이전트는 시간 경과에 따라 행동을 선택하고 최대 보상을 얻으려고 시도함.
- 예: 게임 플레이, 자율 주행 자동차 제어
Data split
- Data split은 머신러닝 및 데이터 분석에서 중요한 단계 중 하나입니다. 데이터 분할 또는 데이터 분리라고도 합니다. 이 작업은 데이터를 여러 부분 또는 하위 집합으로 나누는 것을 의미합니다.
- 학습 데이터 (Training Data): 이 부분은 모델을 학습하는 데 사용됩니다. 모델은 학습 데이터에서 패턴을 학습하고 최적의 예측을 수행하기 위해 조정됩니다. 일반적으로 전체 데이터의 대다수(약 70-80%)가 학습 데이터로 할당됩니다.
- 검증 데이터 (Validation Data): 학습 데이터로 모델을 학습하고 나면 모델의 성능을 평가하고 튜닝하기 위한 데이터 부분입니다. 이 데이터는 모델의 하이퍼파라미터를 조정하거나 모델의 일반화 성능을 검증하는 데 사용됩니다. 검증 데이터는 학습 데이터와 독립적이어야 하며, 모델의 학습에 직접적으로 사용되지 않아야 합니다.
- 테스트 데이터 (Test Data): 모델이 학습 및 검증 단계를 거친 후에 최종 모델의 성능을 평가하기 위해 사용됩니다. 모델이 처음에 보지 못한 데이터에 대한 성능을 평가하는 데 사용되며, 모델의 일반화 능력을 측정하는 데 중요합니다. 테스트 데이터는 학습 및 검증 데이터와 독립적이어야 합니다.
[마무리]
오늘은 머신러닝을 그 자체로 정의하면서 왜 수행해야 하는지, 어떻게 시작하는지와 같은 근본적인 내용에 대해서 공부했던 거 같습니다. 결과적으로 머신러닝은 기계를 학습시키면서 새로운 예측을 위한 학습된 모델을 구축하는 것이 중요한 목적이라는 것을 알게 되었습니다. 오늘 배운 내용을 하나의 이미지로 나타낼 수 있다면 아래와 같다고 느껴서 가져와 봤습니다.
'AI > 머신러닝' 카테고리의 다른 글
[AI 부트캠프] DAY 52 - 머신러닝 7 (0) | 2023.09.28 |
---|---|
[AI 부트캠프] DAY 51 - 머신러닝 6 (0) | 2023.09.27 |
[AI 부트캠프] DAY 49 - 머신러닝 4 (0) | 2023.09.23 |
[AI 부트캠프] DAY 48 - 머신러닝 3 (0) | 2023.09.22 |
[AI 부트캠프] DAY 47 - 머신러닝 2 (0) | 2023.09.21 |
댓글