오늘은 전처리가 완료된 데이터를 이용해서 머신러닝을 무작정해보겟다...
머신러닝이란?
머신러닝(Machine Learning)은 컴퓨터가 명시적으로 프로그래밍되지 않고도 데이터를 통해 학습할 수 있게 하는 인공지능(AI)의 한 분야입니다. 일반적으로 머신러닝은 대량의 데이터를 분석하고 그 안에서 패턴을 찾아내며, 이를 통해 새로운 데이터에 대해 예측하거나 분류 등의 작업을 수행할 수 있습니다.
머신러닝의 주요 유형은 다음과 같습니다:
[학습 방법에 따른 분류]
- 지도학습(Supervised Learning): 입력데이터와 해당 데이터의 정답이 주어진 상태에서, 모델이 이를 학습하여 새로운 데이터의 결과를 정확하게 예측하도록 만드는 학습 방식
- 비지도학습(Unsupervised Learning): 정답이 없는 데이터에서 패턴, 구조, 군집을 찾아내어 데이터의 특성을 분석하거나 유사한 그룹을 형성하는 학습 방식
- 강화학습(Reinforcement Learning): 에이전트(강화학습을 수행하는 주체)가 환경과 상호작용하며 행동에 따른 보상을 받아 최적의 행동을 선택하고, 이를 통해 목표를 달성하는 정책을 학습하는 방식
[과제에 따른 분류]
- 분류 문제(Classification): 주어진 데이터를 기반으로 사전에 정의된 여러 이산적인 클래스 중 하나로 분류하는 문제 (예: 합격/불합격, 스팸문자/정상문자) - 지도 학습
- 회귀 문제(Regression): 입력된 데이터를 이용해 연속적인 수치 값을 예측하며, 예측 결과가 특정 범위 내의 실수(float)로 나타나는 문제(예: 주택 가격, 주식 가격 예측) - 지도학습
- 클러스터링(Clustering): 데이터에 라벨이 없는 상태에서 유사한 특성을 가진 데이터끼리 그룹화하여 패턴을 발견하는 비지도 학습 문제(예: 고객 세분화, 문서 군집화) - 비지도학습
머신러닝은 이미지 인식, 자연어 처리, 추천 시스템, 자율 주행 등 다양한 분야에서 활용되며, 알고리즘으로는 회귀, 의사결정나무, 신경망, 서포트 벡터 머신(SVM) 등이 사용됩니다.
- gpt + 교안
언어 정리
- 모델(Model)
- 데이터로부터 패턴을 찾아
- 수학식으로 정리해 놓은 것
- 모델링(Modeling): 오차가 적은 모델을 만드는 과정
- 모델의 목적
- 샘플을 가지고 전체를 추정
- 샘플: 표본, 부분집합, 일부, 과거의 데이터
- 전체: 모집단, 전체집합, 현재와 미래의 데이터
- 추정: 예측, 추론
- 샘플을 가지고 전체를 추정
여기서 종속변수를 코드상에서 target이다
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings(action='ignore')
%config InlineBackend.figure_format = 'retina'
# 데이터 읽어오기
path = ''
data = pd.read_csv(path)
기본적인 라이브러리 추가와 데이터를 불러와서 data에 저장한다
# 결측치 확인
data.isna().sum()
# 전날 값으로 결측치 채우기
data.ffill(inplace=True)
머신러닝에 결측치가 있으면 안된다
# 변수 제거 : Month, Day
drop_cols=['Month', 'Day']
data.drop(columns=drop_cols, inplace= True)
# 확인
data.head()
예측에있어 의미가 없어보이는 컬럼은삭제한다
# target 확인
target = 'Ozone'
# 데이터 분리
x = data.drop(columns=target) # 타겟을뺀 열들을 반환해서 선언함
y = data.loc[:, target]
# 모듈 불러오기
from sklearn.model_selection import train_test_split
# 7:3으로 분리
x_train, x_test, y_train, Y_test = train_test_split(x,y,test_size=0.3, random_state=1)
데이터를 이런 형태로 나누는 코드이다.
학습용은 말그대로 패턴을 학습시키는거고, 평가용은 제대로 학습 되었는지 보기 위함으로 남겨둔 데이터이다
# 1단계: 불러오기
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
# 2단계: 선언하기
model = LinearRegression()
# 3단계: 학습하기
model.fit(x_train,y_train)
# 4단계: 예측하기
y_pred = model.predict(x_test)
# 5단계: 평가하기
mean_absolute_error(Y_test, y_pred)
#예측값, 실젯값
print(y_pred[:10])
print(Y_test.values[:10])
#시각화
plt.figure(figsize=(7,3))
plt.plot(Y_test.values, label = 'Acturl')
plt.plot(y_pred, label = 'Predicted')
plt.legend()
plt.show()
회귀문제인지, 분류문제인지에 따라 알고리즘과 평가방법이 달라진다.
위 예시는 회귀문제이고, 알고리즘은 LinearRegression, 평가방법은 mean_absolute_error을 사용했다.
저 코드 마지막 시각화 부분을 실행시키면
이렇게 실젯값과 예측값의 차이를 한눈에 볼수있다.
머신러닝 알고리즘과 평가방법 종류 (참고)
1. 지도학습(Supervised Learning)
(1) 선형 회귀(Linear Regression)
- 사용 용도: 연속적인 값을 예측할 때 사용합니다. 예를 들어, 집의 크기(독립 변수)와 집값(종속 변수) 사이의 관계를 모델링합니다.
- 예시: 집 크기, 방 개수, 위치와 같은 데이터를 기반으로 주택 가격을 예측할 때.
- 평가 방법:
- MSE(Mean Squared Error): 예측값과 실제값 사이의 차이의 제곱의 평균을 구하여 모델의 오차를 측정합니다.
- RMSE(Root Mean Squared Error): MSE에 제곱근을 씌워 해석이 쉬운 값으로 변환합니다.
(2) 로지스틱 회귀(Logistic Regression)
- 사용 용도: 분류 문제에서 사용되며, 특히 이진 분류 문제에 적합합니다.
- 예시: 이메일이 스팸인지 아닌지 분류하는 문제.
- 평가 방법:
- 정확도(Accuracy): 전체 예측 중에서 맞춘 예측의 비율.
- ROC 곡선 및 AUC: 모델의 분류 능력을 평가하는 방법으로, 특히 불균형 데이터에 유용합니다.
(3) 의사결정 나무(Decision Tree)
- 사용 용도: 분류와 회귀 문제 모두에 사용되며, 데이터의 특성과 관계에 대한 직관적인 규칙을 찾습니다.
- 예시: 고객 데이터를 기반으로 특정 제품을 구매할 가능성이 높은지 분류.
- 평가 방법:
- 정확도(Accuracy): 맞춘 예측의 비율.
- Gini Impurity: 분류할 때 불순도를 계산하여 트리를 생성하는 기준 중 하나입니다.
(4) 서포트 벡터 머신(SVM)
- 사용 용도: 이진 분류 문제에 사용되며, 초평면을 통해 데이터를 나누는 방식입니다.
- 예시: 얼굴 인식, 문서 분류와 같은 문제에 자주 사용됩니다.
- 평가 방법:
- 정확도(Accuracy): 전체 예측 중 맞춘 비율.
- F1 점수: 정밀도와 재현율의 조화 평균을 계산하여 평가.
2. 비지도학습(Unsupervised Learning)
(1) K-평균 군집화(K-means Clustering)
- 사용 용도: 레이블이 없는 데이터에서 유사한 데이터들을 군집으로 나누는 데 사용됩니다.
- 예시: 고객 데이터에서 유사한 성향을 가진 고객 군집을 찾는 문제.
- 평가 방법:
- SSE(Sum of Squared Errors): 각 군집 내 데이터 포인트와 군집 중심 사이의 거리를 제곱해 합한 값으로, 낮을수록 좋습니다.
- 실루엣 점수(Silhouette Score): 군집 내 데이터가 얼마나 잘 분리되었는지 평가.
(2) 주성분 분석(PCA, Principal Component Analysis)
- 사용 용도: 고차원의 데이터를 낮은 차원으로 축소할 때 사용되며, 차원 축소 후에도 중요한 정보는 최대한 유지됩니다.
- 예시: 이미지 데이터에서 중요한 특징만 추출해 데이터 크기를 줄이는 문제.
- 평가 방법:
- 분산 설명율(Explained Variance Ratio): 축소한 데이터가 원본 데이터를 얼마나 잘 설명하는지 측정.
3. 강화학습(Reinforcement Learning)
Q-러닝(Q-Learning)
- 사용 용도: 에이전트가 환경과 상호작용하면서 최적의 행동을 학습하는 데 사용됩니다. 주로 게임, 자율 주행과 같은 문제에 많이 활용됩니다.
- 예시: 게임에서 플레이어가 주어진 환경 내에서 최대 점수를 얻기 위해 최적의 행동을 선택하는 문제.
- 평가 방법:
- 누적 보상(Cumulative Reward): 학습 과정에서 에이전트가 얻은 총 보상의 양을 통해 성능을 평가.
4. 딥러닝(Deep Learning)
(1) 인공신경망(Artificial Neural Networks, ANN)
- 사용 용도: 이미지 인식, 음성 인식 등 복잡한 문제에서 사용됩니다.
- 예시: 손글씨 숫자 이미지 데이터(MNIST)를 기반으로 숫자를 인식하는 문제.
- 평가 방법:
- 정확도(Accuracy): 예측이 정확한 비율.
- 교차 엔트로피(Cross-Entropy Loss): 다중 클래스 분류에서 주로 사용되는 손실 함수로, 예측 확률 분포와 실제 분포의 차이를 측정.
(2) 합성곱 신경망(Convolutional Neural Networks, CNN)
- 사용 용도: 주로 이미지 처리에 사용되며, 픽셀 간의 관계를 파악하는 데 강점이 있습니다.
- 예시: 고양이와 개 사진을 분류하는 문제.
- 평가 방법:
- 정확도(Accuracy): 전체 예측 중 맞춘 비율.
- 정밀도, 재현율(Precision, Recall): 분류 성능을 더 세밀하게 평가하는 방법.
(3) 순환 신경망(Recurrent Neural Networks, RNN)
- 사용 용도: 시간에 따른 연속적인 데이터를 처리하는 데 적합합니다.
- 예시: 주식 가격 예측, 자연어 처리 문제에서 자주 사용됩니다.
- 평가 방법:
- RMSE: 실제값과 예측값의 차이를 제곱해 평균을 낸 값의 제곱근.
5. 평가 방법 정리
- 정확도(Accuracy): 전체 데이터에서 맞춘 예측의 비율.
- 정밀도(Precision): 참으로 예측한 것 중에서 실제로 참인 데이터의 비율.
- 재현율(Recall): 실제로 참인 데이터 중에서 참으로 예측한 비율.
- F1 점수(F1 Score): 정밀도와 재현율의 조화 평균.
- MSE, RMSE: 예측값과 실제값의 차이를 제곱한 값의 평균 및 제곱근.
- AUC: 이진 분류에서 ROC 곡선 아래 영역을 계산해 모델 성능 평가.