Kaggle

13차시 선형회귀모델 스케일링, 정규화작업, standardscaler(), minmaxscaler(), polynomialfeature(), log변환, log transformation, log1p(), np.log1p()

Olivia-BlackCherry 2024. 4. 26. 07:43

목차

     

     

    선형회귀모델은 기본적으로 독립변수와 종속변수 사이에 선형 관계가 있다고 가정하고, 최적의 선형함수를 찾아 모델을 만들고 결과값을 예측한다. 하지만 데이터 분포가 심하게 왜곡되어 있거나, 각 데이터별로 값 차이가 크다면 예측 성능에 부정적이다. 보편적으로 선형회귀 모델의 경우 데이터의 분포가 정규 분포 형태를 띄면 예측 성능이 좋다. 따라서 데이터를 정규 분포 형태로 바꿔주는 스케일링 & 정규화 작업을 수행하는 것이 좋다. 

     

    <예시 데이터>

    Cars93 (1).csv
    0.01MB

     

    # ' . ' 포함되어 있는 것은 OLS formula적용이 안됨. 
    data.columns = data.columns.str.replace('.', '')
    data.columns
    
    X= data[['EngineSize', 'RPM', 'Weight', 'Length', 'MPGcity', 'MPGhighway']]
    y = data['Price']

     

    X

     

     

    1. StandardScaler

    평균 0, 분산 1 

    표준정규분포를 가진 데이터셋으로 변환

    성능 향상에 영향 미미한 경우 많음

    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    std_scaled_data = scaler.fit_transform(X)
    
    df = pd.DataFrame(data=std_scaled_data, columns= X.columns)

     

     

     

    2. MinMaxScaler

    최솟값 0, 최댓값 1

    (음수값이 있으면 -1~ 1)

    데이터셋 정규화 작업

    성능 향상에 영향 미미한 경우 많음

    from sklearn.preprocessing import MinMaxScaler
    scaler= MinMaxScaler()
    mm_scalered_data=scaler.fit_transform(X)
    df = pd.DataFrame(data=mm_scalered_data, columns=X.columns)

     

     

     

    3. ★ Log Transformation (로그변환) 

    각 데이터에 log 함수를 적용하여 정규분포에 가까운 형태로 변환

    np.log1p(): np.log()는 언더플로우 발생하기 쉬워 1+log() 함수를 쓴다.

    보통 선형회귀에서 log변환 스케일링/정규화 작업에서 많이 씀

    log_scaled_data = np.log1p(X)
    log_scaled_data

     

     

     

    4. PolynomialFeatures 변환

    standardscaler, minmaxscaler 이후 성능 향상에 영향이 없는 경우 다항 특성을 적용하여 변환하기

    차후에 변환된 다항X변수로 회귀모델에서 학습시킴

    과적합 이슈 발생 가능성 높음

    from sklearn.preprocessing import PolynomialFeatures
    scaler = PolynomialFeatures(degree=3, include_bias=False)
    poly_scaled_data=scaler.fit_transform(X)
    # X 독립변수-->다항회귀계수 변환
    poly_scaled_data

     

     

     

    선형회귀모델 스케일링, 정규화작업, standardscaler(), minmaxscaler(), polynomialfeature(), log변환, log transformation, log1p(), np.log1p()