인프런 커뮤니티 질문&답변

Sung Huh님의 프로필 이미지
Sung Huh

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

3회 기출유형(작업형2)

로버스트 스케일러 질문!

해결된 질문

작성

·

23

0

from sklearn.preprocessing import RobustScaler
for col in col_num:
    rs = RobustScaler()
    train[col] = rs.fit_transform(train[[col]])
    test[col] = rs.transform(test[[col]])

 

rs = RobustScaler()

train[col_num] = rs.fit_transform(train[col_num])

test[col_num] = rs.transform(test[col_num])

 

쌤! 커뮤니티 찾아보다가 이렇게 반복문을 쓰지 않고도 한꺼번에 스케일러를 할 수 있다는 답변을 보았는데 궁금한 점이 있어서요.

 

저렇게 한꺼번에 진행하면 다른 컬럼들의 영향을 받지 않나요?? 반복문을 사용하면 해당 컬럼만 고려해서 스케일러를 적용해주는데 한꺼번에 사용하면 모든 컬럼을 고려해서 스케일러가 적용되기때문에 더 성능이 안 좋아지지 않나요??

 

아! 그리고 인코딩은 필수, 스케일러는 선택이란 말을 봤는데 스케일러를 해도 안 해도 성능차이는 별로 없을까요?? 그냥 인코딩만 해도 40점 받을 수 있을까요?

답변 2

2

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

  1. 스케일링은 반복문 없이 여러 컬럼 한번에 처리가 가능해도 단, 레이블인코딩은 한번에 처리가 어렵습니다. 반복문 필요함

  2. 네 맞아요 지금까지 스케일링 여부가 40점에 영향을 미치지 않았어요!

0

안녕하세요, 인프런 AI 인턴입니다.

Sung Huh님께서 질문하신 RobustScaler를 사용한 스케일링 방법과 관련된 우려와 스케일링의 필요성에 대해 설명드리겠습니다.

  1. 반복문과 한꺼번에 스케일링:

    • RobustScaler는 각 컬럼을 독립적으로 스케일링하며, 각 컬럼의 중앙값과 IQR(Interquartile Range, 사분위 범위)을 기반으로 변환을 진행합니다. 그러므로 반복문을 사용하지 않고 train[col_num]과 같이 한 번에 여러 컬럼을 스케일링하더라도 각 컬럼은 개별적으로 스케일링됩니다. 즉, 다른 컬럼들의 영향을 서로 받지 않습니다.
    • 따라서 성능에 큰 차이가 나지 않으며, 코드의 간결성과 효율성을 위해 한 번에 처리하는 것이 더 일반적입니다.
  2. 스케일링의 영향:

    • 스케일링은 특히 거리 기반 알고리즘(e.g., K-최근접 알고리즘, 서포트 벡터 머신)에서 중요할 수 있습니다. 그러나 스케일링 여부에 따라 성능이 크게 변하지 않을 수도 있습니다. 데이터의 범위와 특성에 따라 스케일링의 영향이 다르게 나타날 수 있기 때문입니다.
    • 반면, 인코딩은 범주형 데이터 처리에 필수적입니다. 모델에 따라 다르지만, 기본적으로 범주형 변수는 숫자로 변환되어야 머신러닝 알고리즘이 이를 이해하고 처리할 수 있습니다.
  3. 스케일링과 성능:

    • 성능 차이는 데이터와 모델, 스케일링 이전의 데이터 전처리 방법 등에 크게 의존합니다. 꼭 정확한 성능을 예측하기 어렵지만, 여러 실험을 통해 가장 적절한 전처리 방법을 결정하는 것이 좋습니다.

관련된 다른 질문들도 참고하시면 도움이 되실 것입니다:
- 로버스트 스케일러 문의
- 스케일링시 데이터 분리 없이 하는 방법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Sung Huh님의 프로필 이미지
Sung Huh

작성한 질문수

질문하기