KT AIVLE SCHOOL 기자단/강의

[KT AIVLE SCHOOL 3기] 머신러닝

june__Park 2023. 4. 23. 21:04

1. 머신러닝

머신러닝은 인공지능의 한 분야로, 데이터를 분석하고 패턴을 학습하여 예측 모델을 만드는 기술이다. 머신러닝은 컴퓨터가 데이터를 기반으로 스스로 학습하고 패턴을 찾는 능력을 갖추게 하는 기술이다.

머신러닝은 지도학습, 비지도학습, 강화학습 등 여러 가지 유형이 있다. 지도학습은 입력 데이터와 해당 출력 데이터 사이의 관계를 학습하는 방법이다. 비지도학습은 데이터에서 패턴을 찾는 방법이다. 강화학습은 환경과 상호작용하면서 최적의 행동을 학습하는 방법이다.

머신러닝은 데이터 마이닝, 자연어 처리, 컴퓨터 비전 등 다양한 분야에서 사용되며, 의료, 금융, 자동차, 게임 등 다양한 산업에서도 적용되고 있다. 머신러닝은 기존의 문제 해결 방법보다 높은 정확도와 성능을 제공하며, 인간의 노동력을 대체하는 데도 사용될 수 있다.

머신러닝은 Python, R, Java 등 다양한 프로그래밍 언어와 라이브러리를 사용하여 구현할 수 있다. 대표적인 머신러닝 라이브러리로는 TensorFlow, PyTorch, Scikit-learn, Keras 등이 있다. 머신러닝은 지속적으로 발전하고 있으며, 앞으로 더 많은 분야에서 사용될 것으로 예상된다.

 

2. 머신러닝 알고리즘

머신러닝 알고리즘은 크게 지도학습과 비지도학습으로 나뉘며, 지도학습은 회귀, 분류, 클러스터링 등의 유형으로 나뉜다.
Scikit-learn은 Python에서 머신러닝을 구현하는 데 사용되는 라이브러리로, 다양한 지도학습 및 비지도학습 알고리즘을 제공한다.
1. 회귀 분석
- 선형 회귀 (Linear Regression)
- 릿지 회귀 (Ridge Regression)
- 라쏘 회귀 (Lasso Regression)
- 엘라스틱넷 회귀 (Elastic Net Regression)

2. 분류
- 로지스틱 회귀 (Logistic Regression)
- 나이브 베이즈 (Naive Bayes)
- 의사결정 나무 (Decision Tree)
- 랜덤 포레스트 (Random Forest)
- 서포트 벡터 머신 (Support Vector Machine)

3. 클러스터링
- K-평균 (K-Means)
- 계층적 클러스터링 (Hierarchical Clustering)
- DBSCAN (Density-Based Spatial Clustering of Applications with Noise)

4. 차원 축소
- 주성분 분석 (PCA, Principal Component Analysis)
- 선형 판별 분석 (LDA, Linear Discriminant Analysis)
Scikit-learn에서 이외에도 다양한 머신러닝 알고리즘이 제공되고 있으며, 각 알고리즘은 다양한 데이터에 적합한 성능을 발휘한다. 이러한 알고리즘들은 데이터 분석, 예측 모델링, 이미지 처리 등 다양한 분야에서 사용되고 있다. 예를 들어, 로지스틱 회귀는 분류 문제에서 많이 사용되며, K-평균 클러스터링은 데이터 군집화 문제에서 많이 사용된다.

 

3. 알고리즘 사용 예제 코드

Linear Regression (선형회귀)
from sklearn.linear_model import LinearRegression

model = LinearRegression()

# 특징 데이터와 레이블 데이터 로드
X, y = load_data()

# 모델 훈련
model.fit(X, y)

# 새로운 데이터로 예측
new_data = [1, 2, 3, 4, 5]
prediction = model.predict(new_data)

 

Random Forest (랜덤 포레스트)
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier()

# 특징 데이터와 레이블 데이터 로드
X, y = load_data()

# 모델 훈련
model.fit(X, y)

# 새로운 데이터로 예측
new_data = [1, 2, 3, 4, 5]
prediction = model.predict(new_data)

 

K-means Clustering (K-평균 군집화)
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)

# 특징 데이터 로드
X = load_data()

# 모델 훈련
model.fit(X)

# 클러스터 예측
new_data = [[1, 2, 3], [4, 5, 6]]
predictions = model.predict(new_data)

 

PCA (주성분 분석)
from sklearn.decomposition import PCA

model = PCA(n_components=2)

# 특징 데이터 로드
X = load_data()

# 주성분 분석 수행
model.fit(X)

# 변환된 데이터 가져오기
new_data = [[1, 2, 3], [4, 5, 6]]
transformed_data = model.transform(new_data)
위 코드들은 Scikit-learn을 사용하여 선형 회귀, 랜덤 포레스트, K-평균 클러스터링 및 주성분 분석을 구현한 간단한 예제이다. 각 모델은 데이터를 불러오고, 모델을 훈련하고, 새로운 데이터에 대한 예측을 수행한다. Scikit-learn은 이외에도 다양한 머신러닝 알고리즘을 제공하며, 이러한 알고리즘들은 다양한 분야에서 유용하게 사용될 수 있다.

 

3. 성능 평가

회귀모델 성능평가 (r2 score)
from sklearn.metrics import r2_score

# 테스트 데이터 예측
y_pred = model.predict(X_test)

# R2 스코어 계산
r2 = r2_score(y_test, y_pred)

print("R2 score:", r2)
위 코드는 Scikit-learn을 사용하여 회귀 모델의 성능을 분석하는 방법 중 하나인 R2 스코어를 계산하는 코드이다. 테스트 데이터의 예측 결과를 y_pred에 저장하고, r2_score() 함수를 사용하여 R2 스코어를 계산한다. 이 값을 통해 모델이 얼마나 잘 예측하는지 평가할 수 있다.

 

분류모델 성능평가 (Confusion Matrix, Classification Report)
from sklearn.metrics import confusion_matrix, classification_report

# 테스트 데이터 예측
y_pred = model.predict(X_test)

# confusion matrix 계산
cm = confusion_matrix(y_test, y_pred)

print("Confusion Matrix:\n", cm)

# classification report 계산
report = classification_report(y_test, y_pred)

print("Classification Report:\n", report)
위 코드는 Scikit-learn을 사용하여 분류 모델의 성능을 분석하는 방법 중 하나인 Confusion Matrix와 Classification Report를 계산하는 코드이다. 테스트 데이터의 예측 결과를 y_pred에 저장하고, confusion_matrix() 함수를 사용하여 Confusion Matrix를 계산한다. 이를 통해 모델이 어떤 종류의 오류를 범했는지 파악할 수 있다. 그리고 classification_report() 함수를 사용하여 Classification Report를 계산한다. 이를 통해 각 클래스에 대한 정밀도, 재현율 및 F1 점수 등을 확인할 수 있다.