본문 바로가기
두뇌 강화

인공지능 및 머신러닝에 대한 이해 (파이썬 코드 예제 포함)

by 코딩멘션 2023. 4. 23.

ChatGPT의 등장 이후 인공지능과 머신러닝의 인기는 갈수록 높아지고 있습니다. 이번 포스팅에서는 인공지능과 머신러닝에 대한 기본적인 이해와 적용 방법에 대해 알아보겠습니다. 파이썬을 사용한 코딩 예제도 말씀드릴테니 끝까지 따라와주세요.

 

 

 

인공지능과 머신러닝의 개념


인공지능(AI)은 컴퓨터를 사용하여 인간의 지능적인 행동을 모방하고 자동화하는 기술을 의미합니다. 인공지능은 이미지 인식, 음성 인식, 자연어 처리 등 다양한 분야에서 활용되고 있습니다. 

 

머신러닝(ML)은 인공지능의 한 분야로, 데이터를 사용하여 컴퓨터가 스스로 학습하고 예측하게 하는 기술을 의미합니다. 머신러닝은 예측, 분류, 군집화 등 문제를 해결하는데 사용됩니다.


 

 

머신러닝의 종류

 

머신러닝은 크게 지도학습(Supervised Learning)과 비지도학습(Unsupervised Learning), 강화학습(Reinforcemet Learning)으로 나눌 수 있습니다. 


· 지도학습

입력 데이터와 출력 데이터를 함께 제공하여 모델을 학습시키는 방식입니다. 분류, 회귀 등의 문제를 해결하는게 사용되고 있습니다.

 

· 비지도학습

출력 데이터 없이 입력 데이터만을 사용하여 모델을 학습시킬 수도 있습니다. 이를 활용해 군집화, 차원 축소 등의 문제를 해결할 수 있습니다. 

 

· 강화학습

에이전트가 환경과 상호작용하며 보상을 최대화하는 쪽으로 모델을 발전시키는 방식인데, 게임 및 로봇제어 등에 사용됩니다.


 

 

머신러닝 모델 만들기 예제

 

이제 파이썬을 사용하여 간단한 머신러닝 모델을 만들어보겠습니다. 예제로는 지도학습 중 분류 문제를 다루겠습니다. 분류 문제는 입력 데이터를 각각의 클래스로 분류하는 작업입니다.


 

먼저 필요한 라이브러리를 import 하겠습니다.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

 

다음으로 데이터를 로드합니다. 

iris_data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)
iris_data.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']

 

 

이어서 데이터를 확인해보겠습니다.

print(iris_data.head())

 

 

이제 데이터를 학습용과 검증용으로 분리하겠습니다.

X = iris_data.drop('class', axis=1)
y = iris_data['class']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

 

 

그리고 Decision Tree 모델을 만들어 데이터를 학습해보겠습니다.

model = DecisionTreeClassifier()
model.fit(X_train, y_train)

 

 

모델에 검증 데이터를 적용해서 정확도도 계산할 수 있습니다.

y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

 

 

마지막으로 이 모델의 예측 결과를 확인할 수 있습니다.

sample_data = [[5.1, 3.5, 1.4, 0.2]]
sample_pred = model.predict(sample_data)
print(sample_pred)

 

 

이 예제에서는 Decision Tree 모델을 사용했지만 이 외에도 아래와 같은 다양한 머신러닝 기법들을 사용할 수 있습니다. 또한 성능을 높이기 위해 하이퍼파라미터 튜닝, 데이터 전처리 등 기법을 사용하는 것도 가능합니다. 

 


 

로지스틱 회귀(Logistic Regression)

이진 분류 문제에서 가장 많이 사용되는 모델 중 하나입니다. 선형 모델로 분류를 수행하며, 출력값을 확률 값으로 변환하여 분류 결정을 합니다.

K-최근접 이웃(K-Nearest Neighbors, KNN)

가장 간단한 머신러닝 모델 중 하나입니다. 주어진 데이터와 가장 가까운 K개의 이웃들의 클래스 중 가장 빈번한 클래스로 분류합니다.

서포트 벡터 머신(Support Vector Machine, SVM)

데이터를 분류할 수 있는 최적의 경계면을 찾는 것을 목적으로 하는 모델입니다. 입력 데이터를 고차원 공간으로 변환하여 분류 결정을 합니다.

나이브 베이즈(Naive Bayes)

베이즈 정리를 이용한 분류 모델입니다. 입력 데이터의 특성이 서로 독립적이라는 가정을 바탕으로 분류 결정을 합니다.

신경망(Neural Networks)

인간의 뇌를 모방하여 만든 모델입니다. 입력층, 은닉층, 출력층으로 구성되며, 각 층의 노드들이 다음 층으로 신호를 전달하여 분류를 수행합니다.

랜덤 포레스트(Random Forest)

여러 개의 결정 트리(Decision Tree)를 조합하여 분류 문제를 해결하는 앙상블 모델입니다. 각 트리에서 생성된 예측 결과를 다수결로 결정합니다.

그래디언트 부스팅(Gradient Boosting)

여러 개의 결정 트리(Decision Tree)를 조합하여 분류 문제를 해결하는 앙상블 모델입니다. 이전 트리의 오차를 보완하는 방향으로 다음 트리를 생성하여 예측 결과를 결정합니다.


 

댓글