Allen's 데이터 맛집

[머신러닝] 데이터의 중요성 본문

Machine Learning/머신러닝

[머신러닝] 데이터의 중요성

Allen93 2023. 8. 29. 16:23

데이터의 중요성: 머신러닝 모델 학습에 미치는 영향


머신러닝은 컴퓨터에게 데이터를 학습시켜 원하는 결과를 예측하거나 분류하는 기술입니다. 그렇다면, 어떤 데이터를 사용하느냐에 따라 모델의 성능과 신뢰도가 어떻게 변할까요? 이번 글에서는 데이터의 중요성에 대해 알아보겠습니다.


데이터가 왜 중요한가요?

머신러닝 모델은 데이터를 기반으로 학습됩니다. 모델이 학습하는 데이터의 양과 질은 결과에 큰 영향을 미칩니다.


데이터의 다양성과 품질다양한 데이터를 활용하면 모델이 다양한 상황을 이해하고 예측할 수 있습니다. 또한, 정확하고 깨끗한 데이터를 사용하면 모델이 패턴을 더 잘 파악할 수 있습니다.

데이터의 양데이터 양이 모델 성능에 직접적인 영향을 미칩니다. 충분한 양의 데이터가 있을 때 모델은 더 일반화된 패턴을 학습하며, 이는 새로운 데이터에 대한 예측 능력을 향상합니다.

 

 

아래의 코드로 간단하게 데이터와, 그 데이터를 가지고 모델성능을 테스트해보는 함수를 만들어 보았습니다.

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

def make_sample(seedno, size, step=0):
    colnames = ['국어','영어','수학']
    np.random.seed(seedno)
    A = np.random.randint(0, 101, (size,3))
    df = pd.DataFrame(A, columns = colnames)
    df['합격여부'] = (df.mean(axis=1) >= 60 ) & (df.min(axis=1) >=40)
    if step ==0:
        F, T = df['합격여부'].value_counts()
        B = np.random.randint(60, 101, (F-T, 3))
        df2 = pd.DataFrame(B, columns = colnames)
        df2['합격여부'] = True
        df = pd.concat([df, df2])
        df['합격여부'].value_counts()
        df.index = pd.RangeIndex(len(df))
    df['합격여부'] = df['합격여부'].replace({True :1, False:0})
    return df
    
    def ModelTrain(model, data):
    Y = data['합격여부']
    X = data.drop(columns = ['합격여부'])

    x_train, x_test, y_train, y_test = train_test_split(X,Y,
                                                       test_size = 0.2,
                                                       stratify = Y,
                                                       random_state=0)

    print([x.shape for x in [x_train, x_test, y_train, y_test]])

   # model = LogisticRegresstion(max_iter=1000)
    model.fit(x_train, y_train)

    print('train 성능 :' , model.score(x_train, y_train))
    print('test 성능 :' , model.score(x_test, y_test))
    return model

    
    # 모델 d
data = make_sample(7438,1000)
data['합격여부'].value_counts()

>>> 0     814

>>> 1     814

 

 

 

 




코드 예시를 통해 살펴보기


1. 균형 데이터
먼저 균형 잡힌 데이터를 사용한 경우입니다. 여기서는 합격 여부에 영향을 주는 국어, 영어, 수학 성적 데이터를 활용합니다. 균형 잡힌 데이터에서는 데이터의 분포가 균등하여 모델이 두 클래스를 동등하게 학습할 수 있습니다.

2. 불균형 데이터
데이터 분포가 불균형한 경우를 살펴보겠습니다. 일부 클래스의 데이터가 다른 클래스에 비해 월등히 많은 경우를 의미합니다. 이 경우, 모델은 데이터가 많은 클래스에 치우쳐져 패턴을 제대로 학습하지 못할 수 있습니다.

3. 부족한 데이터
적은 양의 데이터로 모델을 학습하는 경우를 고려해 봅시다. 데이터가 부족한 경우 모델은 일반적인 패턴을 파악하기 어려워 예측 능력이 떨어질 수 있습니다.

4. 부족하면서 불균형한 데이터
데이터가 부족하면서 불균형한 상황에서 모델을 학습하는 경우입니다. 이는 위에서 설명한 두 가지 요소의 조합으로, 모델의 성능에 부정적인 영향을 미칠 가능성이 높습니다.

 


결론


데이터의 중요성은 머신러닝 모델의 학습과 예측 능력에 직접적인 영향을 미칩니다. 데이터의 양과 질을 고려하여 모델을 학습시키는 것은 좋은 결과를 얻기 위해 필수적입니다. 적절한 데이터를 사용해야면 예측에 있어서 좋은 결과를 얻을 수 있습니다.