[머신러닝] : 머신러닝이란?

김대현·2024년 7월 17일

머신러닝이란?

머신러닝은 명시적으로 프로그래밍하지 않고 컴퓨터가 스스로 규칙을 학습하는 연구 분야이다. 이 개념을 이해하기 위해 중고 스마트폰의 적정 가격을 예로 들어 설명하겠다.


중고 스마트폰 가격 결정 요인 예제

중고 스마트폰의 가격을 결정하는 요소에는 다음과 같은 것들이 있다:

  • 제조사
  • 모델명
  • 제조 연월
  • 화면 크기, CPU, 내장 저장 공간, 램, 색상 등의 스펙
  • 사용 상태 (액정 파손, 번인, 찍힘, 생활 기스, 배터리 효율 등)

기존 프로그래밍 방식

기존 방식에서는 아래처럼 사람이 직접 규칙을 정해서 프로그래밍한다. 예를 들어 get_price라는 함수를 만들어 스마트폰의 상태에 따라 최대 금액에서 차감하는 식으로 가격을 산정한다.

def get_price(max_price, is_screen_broken, has_burning, num_dents, has_scratches, low_battery):
    price = max_price
    if is_screen_broken:
        price -= 150000
    if has_burning:
        price -= 50000
    if num_dents > 2:
        price -= 30000
    if has_scratches:
        price -= 5000
    if low_battery:
        price -= 20000
    return price

# 예시
max_price = 300000
is_screen_broken = False
has_burning = True
num_dents = 0
has_scratches = True
low_battery = False

final_price = get_price(max_price, is_screen_broken, has_burning, num_dents, has_scratches, low_battery)
print(final_price)  # 245000

머신러닝 방식

머신러닝에서는 기존의 거래 데이터를 통해 기계가 스스로 규칙을 학습한다.
예를 들어 다음과 같은 데이터가 주어졌을 때 기계는 이 데이터를 바탕으로 가격을 예측하는 모델을 만든다.

# 거래 데이터 예시
data = [
    {"manufacturer": "A", "model": "A1", "year": 2021, "spec": "64GB", "screen_broken": False, "burning": True, "dents": 1, "scratches": True, "price": 280000},
    {"manufacturer": "B", "model": "B1", "year": 2019, "spec": "128GB", "screen_broken": False, "burning": False, "dents": 0, "scratches": False, "price": 820000}
    # 추가 데이터...
]

# 머신러닝 학습 및 예측 예시
from sklearn.linear_model import LinearRegression

# 데이터 전처리
X = [[d["year"], d["spec"], d["screen_broken"], d["burning"], d["dents"], d["scratches"]] for d in data]
y = [d["price"] for d in data]

# 모델 학습
model = LinearRegression()
model.fit(X, y)

# 예측
new_data = [2021, "64GB", False, True, 0, True]
predicted_price = model.predict([new_data])
print(predicted_price)

머신러닝의 세 가지 주요 유형

머신러닝이 학습을 하는 방법도 다양한데 총 세 가지로 분류할 수 있다.

  • 지도 학습 (Supervised Learning): 정답이 있는 데이터를 통해 학습.
    예시: 곤충 이미지와 정답(벌, 나비)을 통해 학습한 후 새로운 곤충 이미지를 예측.
  • 비지도 학습 (Unsupervised Learning): 정답이 없는 데이터를 통해 패턴을 발견.
    예시: 곤충 이미지를 두 그룹으로 나누어 벌과 나비를 구분.
  • 강화 학습 (Reinforcement Learning): 환경에서 상과 벌을 통해 최적의 행동을 학습.
    예시: 게임에서 벌과 나비를 만나며 경험을 쌓고 최적의 경로를 선택.
# 지도 학습 예시 코드
from sklearn.tree import DecisionTreeClassifier

# 데이터 예시
X = [[0, 0], [1, 1], [2, 2], [3, 3]]
y = [0, 1, 1, 0]

# 모델 학습
clf = DecisionTreeClassifier()
clf.fit(X, y)

# 예측
print(clf.predict([[1.5, 1.5]]))  # [1]

요약

그래서 머신러닝은 데이터를 통해 기계가 스스로 규칙을 학습하며, 이를 통해 다양한 예측 및 분류 작업을 수행하고 머신러닝은 지도 학습, 비지도 학습, 강화 학습의 세 가지 주요 유형으로 나뉘며 각각의 방식은 특정한 문제를 해결하는 데 효과적이다라고 정리할 수 있다.

profile
데이터 분석 스쿨 블로그 입니다.

0개의 댓글