우린 이미 인공지능(AI), 머신러닝에 지배되어 있다.
오늘은 인공지능과 머신러닝에 대해 알아보자.
오늘의 배움 |
|
1. 인공지능(AI)
인공지능(AI)은 인간의 지능과 유사한 작업을 수행할 수 있는 기계를 만드는 학문이다. 추론, 학습, 문제 해결, 자연어 이해 등 다양한 분야를 포함하며, 현대에는 "환경을 인지하고 목표를 성공적으로 달성할 가능성을 극대화하도록 조치를 취할 수 있는 시스템"으로 정의된다.
AI의 종류
- 약인공지능(Weak AI)
- 특정 문제 해결에 특화된 AI
- 예: Siri, Alexa와 같은 가상 비서
- 강인공지능(Strong AI)
- 인간과 동일한 수준의 지능 보유
- 자율적 사고와 문제 해결 능력 보유
- 현재 연구 중이나 미구현 상태
- 초인공지능(ASI)
- 스스로 목표 설정 및 지식 강화 가능
- 인간의 지능을 뛰어넘는 수준
2. 머신 러닝
머신러닝은 주어진 데이터를 스스로 학습하여 수치적 특징을 찾고, 새로운 데이터에 대한 결과를 예측할 수 있는 AI의 한 분야. 통계적 접근법과 경사하강법을 통해 정답과 예측값의 차이를 줄여나가는 것이 특징이다.
머신 러닝 학습 종류
1. 지도 학습
- 정답이 있는 데이터로 학습
- 높은 성능이 장점, 정답 데이터 필요성이 단점
- 회귀 분석, 분류 모델이 대부분 지도 학습에 속한다. -> 라벨러가 없으면 안 됨
- 분류: 입력 데이터를 주어진 클래스(label)로 분류하는 문제 (예: 스팸 이메일 분류, 이미지 분류 등), 로지스틱 회귀, KNN, SVM, 결정 트리
- 회귀: 연속적인 값을 예측하는 문제 (예: 주택 가격 예측, 주식 가격 예측 등), 선형 회귀, 릿지/라쏘 회귀, 다항 회귀
2. 비지도 학습
- 정답 없이 데이터의 특성을 스스로 학습
- 군집화: 비슷한 특성을 가진 데이터끼리 그룹화하는 문제 (예: 고객 세분화, K-평균, DBSCAN 등)
- 차원 축소: 데이터의 차원을 축소해 시각화하거나, 계산량을 줄이는 기법 (예: PCA(주성분 분석), t-SNE, UMAP 등)
3. 강화 학습
- 행동에 대한 보상을 통해 학습
- 강화 학습 예시: 자율 주행, 게임 AI, 로봇 공학 등
03. 머신 러닝 학습 환경 설정
용어 설명
- 정답을 찾기 위해 주어지는 기반 데이터
- = 피처 데이터 (feature data)
- = X (대문자) 데이터
- = 특징(변수)
- 정답 데이터
- = 레이블 데이터 (label data)
- = y 데이터
- = 타겟 (target)
scikit-learn 설치
머신 러닝에서 기본적으로 많이 사용하는 패키지이다. 머신 러닝을 위한 데이터셋, 모델, 정확도 예측 함수 등 여러 가지 기본 기능을 제공하고 있다.
(싸이킷런의 기본 데이터셋은 전처리가 잘 되어 있어 깔끔한 데이터(붓꽃 데이터와 같은)로 (우리의) 학습에는 용이하지만, 머신 러닝의 학습 자체에는 큰 도움이 되지 않는다.)
pip install scikit-learn
04. 머신 러닝 절차
머신러닝 시스템을 만드는 파이프라인은 다음과 같은 순서로 정해져 있다.
데이터 로드 및 데이터 정제
- 결측치 제거와 이상치 처리 등 필요 없는 데이터를 제거한다.
- EDA(Exploratory Data Analysis, 탐색적 데이터 분석)에서도 데이터 정제가 우선적으로 행해진다.
EDA
- 데이터에 대한 이해를 통해 어떤 데이터를 대상으로 어떤 모델을 적용시켜야 하는지를 알아낼 목적으로 데이터 분석을 해야 한다.
- 분포, 평균, 상관관계에 있는 데이터는 어떤 것들이 있는지 데이터의 특징을 알아야 한다.
- 각각의 변수값이 결과에 어떤 영향을 미치는지
- 학습에는 어떤 변수값을 사용해야 하는지
- 해당 데이터에 대해 어떤 모델을 적용해야 하는지 등
- 분포, 평균, 상관관계에 있는 데이터는 어떤 것들이 있는지 데이터의 특징을 알아야 한다.
- ⇒ 이렇게 확인한 데이터들을 제외시킬지, 평균치로 넣을지 등을 판단하여 데이터를 정제한다.
전처리
데이터 스케일링, 표준화 및 정규화 등을 통해 데이터를 학습에 용이하도록 전처리한다.
- 인코딩
- 레이블 인코딩: 글자를 숫자로 변환하여 인코딩하는 방식이다.
- 레이블 인코딩 시 주의사항 (실수가 많이 일어나는 부분) : 학습할 때 쓴 인코더를 반드시 모델에 같이 저장해서 서버에게 넘겨주어야 한다. 평가 시 정확도가 높았는데 서빙을 하니까 정확도가 떨어지는 경우 해당 원인일 가능성이 크다.
- 원-핫 인코딩: 배열에서 어떤 데이터에 해당할 때 해당 위치를 1로 표시하는 인코딩 방식이다.
- 레이블 인코딩: 글자를 숫자로 변환하여 인코딩하는 방식이다.
- 피처 스케일링
- 표준화 (Standardization) = StandardScaler
- 컬럼(데이터 feature)의 데이터를 평균이 0이고 분산이 1인 가우시안 정규 분포를 가지는 값으로 변환한다.
- 평균을 기준으로 얼마나 크냐 작냐로 판단하기 때문에 수치 값은 무관하다.
- 일반적으로 많이 사용하며, 회귀, 분류 등에서 주로 사용된다.
- 정규화 (Normalization) = MinMaxScaler
- 최솟값이 0이고 최댓값이 1 사이인 값으로 변환한다.
- 가장 작은 값과 가장 큰 값을 구해서 그 사이에서 내 값이 어느 정도가 되는 지를 0~1 사이에서 데이터로 변환하므로 수치 값은 무관하다.
- 픽셀 데이터와 같은 이미지 처리할 때 많이 사용한다.
- ⇒ 수치의 분포가 비슷한 경우가 아니라면, 즉 컬럼의 특성, 분포, 범위 다를 때는 스케일링 작업을 해주는 것이 더 똑똑한 모델을 만드는 데 도움이 된다.
- 표준화 (Standardization) = StandardScaler
데이터 분류
- 학습 데이터와 테스트 데이터를 분류한다.
- 학습을 할 때는 통상 7:3의 비율로 학습 데이터와 검증할 수 있는 테스트 데이터로 분류한다.
- train_test_split() : 학습용 데이터와 검증용 데이터 분리하는 함수
- 첫 번째 매개변수 : 정답을 알아내기 위한 대상 데이터 (변수명을 iris_data라고 지은 것)
- 두 번째 매개변수 : 정답 데이터 (변수명을 iris_label라고 지은 것)
- train_size 또는 test_size : 주어진 데이터셋에서 학습용 또는 평가용 데이터 사이즈 지정 가능 (전체 데이터셋의 크기는 1이다.)
- shuffle=False : 데이터셋을 랜덤 하게 자르지 않고 순서대로 자르게 하는 설정 (기본 값: True)
- stratify : feature 값을 지정해 주면 피처값의 비율대로 데이터셋을 나누도록 하는 설정
- EDA를 통해 정답 데이터의 종류별 개수를 판별할 수 있게 되고, 학습 데이터와 평가 데이터에서 정답의 비율이 잘 맞아야 학습이 잘 이루어진다. (정답 데이터가 5:3:2의 비율로 존재한다면 학습 데이터와 평가 데이터를 나눌 때도 해당 비율로 나눠지도록 하는 것이다.)
- random_state : 테스트 시 고정된 값을 사용해야 모델을 바꿨을 때도 동일한 조건에서 성능을 확인할 수 있으므로 고정값을 지정하는 설정
모델 선정
- 주어진 상황(task)에 따라 어떤 모델을 사용해야 하는지 결정한다.
- EDA를 통해서 모델을 통해 해결해야 하는 상황(회귀인지 분류인지 등)을 판단할 수 있고, 어떤 문제인지에 따라 그 문제를 해결하기 위한 모델을 선정한다.
학습
- 선정한 모델을 앞서 나눈 학습용 데이터로 학습시킨다.
평가
- 성능에 대한 평가 단계로, 성능이 기대한 것만큼 나오지 않는다면 4번 단계(데이터 분류)로 돌아가서 성능을 높일 수 있도록 한다.
- 정답 데이터가 부족하다면 추가하고, 전처리를 다시 하거나, 모델을 다른 걸로 바꾸는 것 등을 통해 성능 개선할 수 있도록 한다.
피드백
- 평가 결과 성능이 좋지 않다면 데이터 분류 이하의 순서로 돌아가서 다시 절차대로 진행한다. (전처리 과정이나 처음의 데이터 수집 순서까지도 돌아갈 수 있다.)
- 성능이 좋아도 실전 데이터로 예측하면 성능이 떨어지는 경우가 존재한다.
- 이 경우, 왜 예측에 실패하는지 확인하고 그 원인에 대해 데이터를 추가하거나 모델을 변경하여 학습시킨 뒤 다시 서빙(서비스)하여 확인하는 절차를 거친다. (= MLOps의 역할)
요약해 보자면,
머신러닝 프로젝트 진행 단계
1. 데이터 준비 및 전처리
- 데이터 로드 및 정제
- 결측치/이상치 처리
- 인코딩 (레이블/원-핫 인코딩)
- 스케일링 (표준화/정규화)
2. 데이터 분석 및 모델링
- EDA(탐색적 데이터 분석) 수행
- 학습/테스트 데이터 분리
- 적절한 모델 선정
- 모델 학습 및 평가
3. 성능 개선
- 평가 결과에 따른 피드백
- 필요시 데이터 추가 수집
- 전처리 방식 수정
- 모델 파라미터 조정
인공지능과 머신러닝은 현대 기술에서 중요해졌고, 이것들로 하여금 우리는 더 많은 곳에서 이용할 수 있게 된 것이다.
이것들을 잘 다뤄서 더 나은 방향을 제시하기 위해 이 훈련에 임했던 것을 다시금 생각하게 되었다.
'Develop > ML·DL' 카테고리의 다른 글
앙상블 학습 및 랜덤 포레스트를 알아보자. (2) | 2025.01.21 |
---|---|
서포트 벡터 머신(SVM)을 알아보자. (2) | 2025.01.21 |
결정 트리를 알아보자. (2) | 2025.01.21 |
분류와 로지스틱 회귀를 알아보자. (0) | 2025.01.20 |
머신러닝 모델 선정: 회귀를 알아보자. (4) | 2025.01.19 |