머신러닝은 명시적으로 프로그래밍하지 않고 컴퓨터가 스스로 규칙을 학습하는 연구 분야이다. 이 개념을 이해하기 위해 중고 스마트폰의 적정 가격을 예로 들어 설명하겠다.
중고 스마트폰의 가격을 결정하는 요소에는 다음과 같은 것들이 있다:
기존 프로그래밍 방식
기존 방식에서는 아래처럼 사람이 직접 규칙을 정해서 프로그래밍한다. 예를 들어
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]
그래서 머신러닝은 데이터를 통해 기계가 스스로 규칙을 학습하며, 이를 통해 다양한 예측 및 분류 작업을 수행하고 머신러닝은 지도 학습, 비지도 학습, 강화 학습의 세 가지 주요 유형으로 나뉘며 각각의 방식은 특정한 문제를 해결하는 데 효과적이다라고 정리할 수 있다.