본문 바로가기
머신러닝(Machine leanring)

(1) 머신러닝(Machine learning)이란? - How Models Work [Hellfer]

by Hellfer 2024. 7. 16.
728x90

https://www.kaggle.com/code/dansbecker/how-models-work

 

How Models Work

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

 

위의 글을 보고 참고하여 작성하였습니다.

 

머신러닝 모델의 작동 방식과 사용 방법에 대한 개요를 살펴보겠습니다.

 


 

다음과 같은 시나리오를 생각해 볼 수 있습니다.

 

당신의 사촌이 부동산 투기로 수백만 달러를 벌었고, 데이터 과학에 대한 당신의 관심을 알아본 후 비즈니스 파트너가 되자고 제안했습니다.

 

그는 자금을 제공하고 당신은 다양한 주택의 가치를 예측하는 모델을 만들기로 했습니다.

 

당신이 사촌에게 과거에 부동산 가격을 어떻게 예측했는지 물었을 때, 그는 단순히 직관에 의존한다고 했습니다.

 

그러나 더 많은 질문을 통해 그는 과거에 본 주택 가격 패턴을 식별하고, 이를 기반으로 새로운 주택의 가치를 예측해 왔다는  것을 알게 되었습니다.

 

- 머신러닝도 이와 유사하게 작동합니다.

 

머신러닝 모델은 과거 데이터를 기반으로 학습하고, 이를 통해 새로운 데이터의 예측을 수행합니다.

 


 

의사결정나무 모델

 

의사결정나무는 이해하기 쉽고, 데이터 과학 분야에서 널리 사용되는 모델 중 하나입니다.

 

더 정확한 예측을 제공하는 복잡한 모델들도 있지만, 의사결정나무는 그 자체로 강력하며, 다른 고급 모델의 기본 구성 요소로 사용되기도 합니다.

 

의사결정나무는 데이터를 분할하여 의사결정을 내리는 구조로, 각 분기점에서 특정 조건에 따라 데이터를 나눕니다.

 

1. 주택의 면적은 100제곱미터 이상인가?

예 : 다음질문으로 이동

아니요 : 주택 가치가 낮음

 

2. 주택의 위치는 도심인가?

예 : 주택 가치가 높음

아니요 : 다음 질문으로 이동

 

3. 주택의 건설 연도는 2000년 이후인가요?

예 : 다음 질문으로 이동

아니요 : 주택 가치가 낮음

 

이와 같은 방식으로 의사결정나무는 데이터를 분할하고, 최종적으로 주택 가치를 예측하는 데 도움을 줍니다.

 

침실 수를 기준으로 주택을 분류

 

 


 

주택을 두 가지 범주로 나누고 각 범주의 평균 가격을 사용하여 예측하는 방법은 간단하지만 효과적인 접근법입니다.

 

데이터를 이용해 주택을 두 그룹으로 나누는 기준을 정하고, 각 그룹의 평균 가격을 계산한 후, 새로운 주택이 어느 그룹에 속하는지 판단하여 그 그룹의 평균 가격을 예측하는 방식입니다.

 

데이터를 통해 패턴을 찾아내고 이를 기반으로 모델을 구축하는 과정을 모델 피팅 또는 학습이라고 합니다.

 

이 과정에서 사용되는 데이터를 훈련 데이터라고 합니다.

 

1. 그룹 나누기 : 주택을 두 그룹으로 나눌 기준을 정합니다. 예를 들어, 주택의 면적을 기준으로 나눌 수 있습니다.

 

2. 평균 가격 계산 : 각 그룹의 평균 가격을 계산합니다.

 

3. 예측 : 새로운 주택의 특징을 기준으로 어느 그룹에 속하는지 판단하고, 그 그룹의 평균 가격을 예측합니다.

 

import pandas as pd

# 예제 데이터 준비
data = {
    '면적': [120, 80, 95, 130, 60],
    '가격': [500, 300, 400, 550, 250]
}
df = pd.DataFrame(data)

# 그룹 나누기 기준 설정 (예: 면적 100을 기준으로 나누기)
group_1 = df[df['면적'] >= 100]
group_2 = df[df['면적'] < 100]

# 각 그룹의 평균 가격 계산
mean_price_group_1 = group_1['가격'].mean()
mean_price_group_2 = group_2['가격'].mean()

# 새로운 주택의 예측 (예: 면적 105)
new_house_area = 105

if new_house_area >= 100:
    predicted_price = mean_price_group_1
else:
    predicted_price = mean_price_group_2

print("예측된 주택 가격:", predicted_price)

 


 

첫 번째 결정 트리(1st Decision Tree)는 침실 수를 기준으로 주택을 분류합니다.

 

침실 수가 많을수록 주택 가격이 높아지는 경향을 반영합니다.

 

반면에 침실 수 외의 다른 요소들은(예 : 욕실 수, 부지 크기, 위치 등)을 고려하지 않습니다.

 

단일 기준만으로 주택 가격을 예측하기 때문에 예측의 정확도가 떨어질 수 있습니다.

 

두 번째 결정 트리(2nd Decision Tree)는 더 많은 요소를 고려하기 때문에 예측의 정확도가 높을 가능성이 있습니다.

 

예를 들어, 침실 수와 부지 크기를 같이 고려할 수 있어서 예측의 정확도가 더 높아질 수 있습니다.

 

 

 

 

위 과정을 반복하여 트리의 리프(leaf)에 도달합니다.

 

리프는 더 이상 도달하지 않는 트리의 끝 지점으로, 해당 노드에 속한 데이터 포인트들의 평균값 혹은 다수결로 예측 값을 제공합니다.

 

의사결정 트리의 분할과 리프의 값은 훈련 데이터에 따라 결정됩니다.

 

예측 모델을 만들기 전에 충분한 양질의 데이터를 수집하고, 그 데이터를 통해 트리를 학습시키는 것이 중요합니다.

 

또한 트리가 너무 깊어지면 훈련 데이터에 과적합될 수 있습니다.

 

이를 방지하기 위해 트리의 최대 깊이를 제한하거나, 최소 데이터 양을 등을 설정해야 합니다.

728x90