인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

전예진님의 프로필 이미지
전예진

작성한 질문수

처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part3]

하이퍼 파라미터 튜닝 기법 적용하기 실행값이 미묘하게 달라요.

작성

·

215

·

수정됨

1

사소하긴 한데, 궁금해서 질문 남겨요.

위의 코드를 실행하면 svc 실습 동영상에 나온 값과 약간의 차이가 있어서요. 컴퓨터 성능에 따라서 값의 차이가 미묘하게 다를 수 있나요? 통계패키지도 가끔 돌릴때마다 값이 미묘하게 달라지기는 한데, 그 이유를 조금 구체적으로 알고 싶어서요. 참고로 저는 m1 chip mac을 사용중입니다.

 

답변 1

0

안녕하세요. 답변 도우미입니다.

코드 실행 결과 값에 미묘한 차이가 나타나는 것은 다음과 같이 여러 요소가 영향을 미칠 수 있는데요. 사실 난수처리의 완벽한 통제는 생각보다 매우 어려운 문제이긴 합니다.

  1. 난수 초기값(Random Seed): 코드에서 random_state=1로 설정하고 있지만, 이것은 알고리즘 실행 마다 동일한 난수 시퀀스를 생성하도록 합니다. 그러나, 다른 컴퓨터나 다른 환경에서는 내부적으로 사용하는 난수 발생기의 상태가 달라질 수 있어 결과에 영향을 줄 수 있습니다.

  2. 하드웨어 차이: 사용하시는 M1 칩 맥북과 실습 동영상에서 사용된 컴퓨터의 CPU 가 달라서, CPU의 정밀도, 계산 순서, 최적화 수준 등의 차이가 미묘한 결과의 차이를 야기할 수 있습니다.

  3. 병렬 처리와 부동소수점 연산: n_jobs=-1 설정은 사용 가능한 모든 CPU 코어를 사용하여 연산을 병렬로 수행하도록 합니다. 병렬 처리는 작업의 순서가 매번 다를 수 있으며, 부동소수점 연산은 결합 법칙이 항상 성립하지 않기 때문에, 연산의 순서에 따라 결과가 미묘하게 달라질 수 있습니다.

  4. 소프트웨어 버전: scikit-learn과 관련 라이브러리의 버전 차이 또한 결과에 영향을 줄 수 있습니다. 최적화 방법, 알고리즘의 내부 구현 변경 등이 있을 수 있습니다.

이러한 이유로, 머신러닝 실험에서 재현성을 확보하기 위해서는 가능한 많은 요소를 고정하는 것이 좋습니다. 예를 들어, 난수 생성기의 시드값을 고정하고, 소프트웨어 버전을 명시하며, 가능한 한 동일한 하드웨어 환경을 사용하는 것입니다. 그러나, 실제로는 이 모든 것을 완벽히 통제하기 어려울 수 있으며, 이로 인해 미묘한 결과 차이가 발생할 수 있습니다.

감사합니다.

전예진님의 프로필 이미지
전예진

작성한 질문수

질문하기