훈련 데이터가 중요한 이유

아무리 좋은 ML 알고리즘이더라도 양질의 훈련 데이터로 학습하지 않으면 성능이 나오지 않기 떄문에.

 

 

Q) 훈련 데이터는 어떻게 사용되는데?

 

모델이 학습해서 가중치와 매개변수를 조정하는데 사용됨.

 

 

Q) 모델 매개변수는 뭔데?

 

매개변수는 모델이 학습될 때 조정되는 변수다. 예시로 알면 쉬움.

  • 선형 회귀:
    • 매개변수는 기울기와 절편임.
  • 로지스틱 회귀:
    • 매개변수는 가중치(weight) 와 편향(bias)
  • 의사결정 나무
    • 매개변수는 분할 기준(decision criteria), 분할에 사용된 특성(features), 각 노드의 예측값
  • 신경망:
    • 매개변수는 가중치(weights)와 편향(biases)

 

 

Q) ML 에서 사용되는 데이터는 어떤 것들이 있는가?

 

훈련 데이터 이외에도 검증 데이터와 테스트 데이터가 있음.

 

검증 데이터:

  • 훈련 과정 중에 모델의 성능을 평가하여 모델 구조나 하이퍼파라미터를 조정하는데 사용된다.
  • 여러 모델 간의 성능을 비교하여 최적의 모델을 선택하는 데 사용되는 데이터

테스트 데이터:

  • 모델이 완성된 후, 최종적으로 모델의 성능을 평가하는데 사용
  • 모델의 훈련 과정에서는 전혀 사용되지 않아야 하며, 실제 운영 환경에서 모델이 얼마나 잘 작동할지를 평가하는데 사용된다.

 

 

Q) 훈련 데이터로 학습하고 나면 다음 단계는 피처를 추출하는 단계인가?

 

학습 전에 피처 추출과 선택 과정을 거치는 것이 일반적이긴 하다.

 

다만, 어떤 모델을 사용하느냐에 따라 학습 과정 자체가 피처를 자동으로 추출하고 선택하는 과정을 포함할 수도 있다.

 

피처 추출과 선택 (모델 학습 전):

  • 피처 추출(Feature Extraction): 원본 데이터에서 유용한 정보를 변환하거나 요약하여 새로운 피처 세트를 생성하는 과정이다.
  • 예를 들어, 텍스트 데이터에서 주요 단어의 빈도를 추출하거나 이미지 데이터에서 특정 패턴을 인식하는 것에 해당 됨.

모델 학습과 피처 학습:

  • 모델 학습 과정에서 일부 알고리즘은 내부적으로 피처를 추출하고 학습한다. 특히, 심층 학습(Deep Learning) 모델들은 입력 데이터로부터 고수준의 추상적 피처를 자동으로 학습할 수 있다.

 

 

데이터를 믿지 않는게 중요하다.

데이터는 잠재적인 편향으로 가득차있기 때문에.

 

편향이 발생하는 원인은 다양하다:

  • 수집
  • 샘플링
  • 레이블링

 

데이터 샘플링

데이터 샘플링은 다양한 곳에서 사용된다:

  • 전체 데이터에서 훈련 데이터를 생성할 떄
  • 검증 및 테스트 목적으로 사용하기 위해서
  • 모니터링 목적으로 사용하기 위해서

여기서는 훈련 데이터 샘플링 위주로 다룸.

 

 

샘플링이 필요한 이유

유스케이스 1: 신규 모델 개발 프로젝트에서 모델의 가능성을 보고자 할 때

  • 전체 데이터를 가지고 모델을 학습하면 오래 걸리니까, 일부 데이터를 샘플링해서 사용하는거지.

 

샘플링 작업이 중요한 이유

훈련 데이터를 생성하는 샘플링 과정에서 일부 데이터가 다른 데이터에 비해 선택될 확률이 더 높거나 낮게 되어, 샘플이 전체 모집단을 공정하게 대표하지 못하는 현상이 발생해서 모델의 성능이 낮아질 수 있기 떄문에.

 

 

샘플링 기법

샘플링은 크게 비확률 샘플링과 무작위 샘플링이라는 두 분류로 나뉜다:

 

비확률 샘플링도 여러가지 기법이 있다:

  • 편의 샘플링 (Convenience Sampling):
    • 데이터 샘플을 가용성에 맞게 선택하는 것.
    • 사용하기 쉽다는 장점이 있지만, 편향 존재 가능성이 있다.
  • 눈덩이 샘플링 (Snowbal Sampling):
    • 특정 모집단 내에서 접근하기 어렵거나, 잘 정의되지 않은 소수 그룹의 구성원을 연구하기 위해 사용되는 비확률적 샘플링 방법
    • 접근하기 어려운 집단에 대한 데이터 수집을 목적으로 사용된다.
    • 초기 데이터 수집이 어려운 경우에도 연구를 진행할 수 있도록 만든다.
    • 이것또한 샘플링 편향(Sampling Bias)이 발생할 수 있다.
  • 판단 샘플링 (Judgement Sampling):
    • 전문가가 샘플리을 선택하는 걸 말한다.
  • 할당 샘플링 (Quota Sampling):
    • 무작위화 없이 특정 데이터 그룹에 할당량을 채워서 샘플링 하는 방법이다.
    • 예시) 설문 조사를 실시할 때 연령 그룹마다 100개씩 수집하는 것.

 

 

비확률적 샘플링은 편향이 존재할 확률이 높다:

  • 특정 데이터를 사용하기 쉽다는 이유로 선택한다는 건 편향이 있는거니까:
    • 예시1) 텍스트 감정 분석을 이유로 아마존 리뷰 데이터를 쓴다면 이는 리뷰를 남기지 않는 사람들의 생각은 반영하지 못한다.
    • 예시2) 언어 모델링을 위해 위키백과나 커뮤니티 데이터로 훈련한다면 이것 또한 부족한 점이 많음.

 

 

무작위 샘플링도 여러가지 기법이 있다:

  • 단순 무작위 샘플링:
    • 랜덤으로 데이터를 추출하는 기법임.
    • 단점은 소수의 범주에 속하는 데이터는 속하지 않을 확률이 있음.
  • 계층적 샘플링:
    • 단순 무작위 샘플링의 단점을 해결하기 위한 샘플링 기법. 데이터를 여러 계층으로 분리하고, 이 게층에서 무작위 추출을 하는 걸 말한다.
    • 계층적 샘플링은 데이터가 분리되어 있어야 함을 전제하는데, 애초에 데이터 자체를 분리 못할 수 도 있음.
    • 그리고 데이터가 다중 레이블에 속한다면 이것또한 어려운 문제임.
  • 가중 샘플링:
    • 샘플링에 가중치르 줘서 선택될 확률을 다르게 주는 것.
    • 이쯤되면 이제 이것 또한 편향이 될 수 있을듯.
    • 주로 최신 데이터에 더 많은 가중치를 주거나, 소수 클래스 예측이 중요한 경우에 더 많은 가중치를 주거나, 실제 데이터 모집단 비율과 내가 수집한 데이터 비율이 다를 경우에 사용된다 (그러니까, 보유 데이터 샘플은 빨간생 25%, 파란색 75% 인데 모집단에서는 둘 다 50%인 경우)
  • 샘플 가중치라는 것도 있다:
    • 훈련 샘플에 가중치를 주는 것. 이 샘플을 다룰 때는 손실 함수에 더 큰 영향을 미침.
  • 저수지 샘플링:
    • 스트리밍 데이터를 샘플링할 때 사용된다.
    • 결론만 말하자면 스트리밍 데이터가 샘플에 사용될 확률을 k/n 으로 만드는 거임.
  • 중요도 샘플링:
    • 통계학에서도 사용되는 방법임.
    • 목표 분포(target distribution)로부터 직접 샘플링하는 대신, 샘플링하기 쉬운 대체 분포(proposal distribution)로부터 샘플을 추출하고, 이 샘플들의 가중치를 조정하여 목표 분포의 기대값을 추정하는 방법 즉, 특정 분포로부터 직접 샘플링하는 것이 어렵거나 비효율적일 때 사용함.
      • 샘플링에서 P(x) 에서 x 를 샘플링한다는 뜻은 x 가 선택될 확률을 확률분포 함수에서 계산한다는 의미.
      • 확률분포를 통해 샘플링 한다는 건 데이터를 모집단과 유사하게 샘플을 만들기 위한 것
      • 결국 대체 분포를 쓰고 P(x)/Q(x) 로 가중치를 부여해주는데 이러면 기대값은 같아진다.
      • 대체 분포를 목표 분포에 유사한걸로 잘 선택하면 가중치 계산은 복잡하지 않음.
    • 주로 희귀 사건의 경우 해당 사건이 발생할 확률이 매우 낮아서 충분히 많은 데이터를 수집하지 못하므로 대체 분포를 사용해서 샘플링한다. 이렇게하면 희귀 사건이 대체 분포를 통해 샘플링할 때 더 높은 확률로 발생하도록 만들 수 있다.

 

 

레이블링

현재 기업의 대부분 ML 시스템은 지도 학습 기반이라서 레이블링 된 데이터가 필요하다.

 

여기서는 레이블링 하는 대표적인 방법인 수작업 레이블링과 자연적으로 발생하는 레이블링, 그리고 수작업 레이블링의 단점을 해결하는 방법에 대해 배워보자.

 

 

수작업 레이블링과 단점은?

도메인 전문가를 모셔와서 대규모 데이터에 레이블링 작업을 맡겨야함. 즉 엄청난 비용이 듬.

 

수작업으로 레이블링 할 경우 느리기도 하다. 새로운 데이터가 이렇게 늦어지면 모델의 적응성도 떨어짐.

 

 

Q) 수작업 레이블링이 틀릴 수도 있는거 아닌가?

 

맞다. 문제가 애매모호하면 어노테이터마다 레이블링 결과가 다를 수 있기 때문에, 문제를 명확하게 정의하는게 중요하다.

 

 

Q) 잘못 레이블링 된 데이터로 모델을 학습했다면 이 문제를 어떻게 해결하나?

 

그래서 학습한 데이터를 추적 가능하게 만들어두는게 중요하다. 이를 데이터 계보 (Data Lineage) 라고 함.

 

어떤 데이터를 학습했고, 누가 이 데이터를 레이블링 했는지 이런 것들을 명확히 구별시켜야한다.

 

이렇게 데이터가 분리되어 있지 않으면 문제가 생겼을 때 파악하기 힘듬.

 

 

자연 레이블이란?

레이블링이 자연적으로 존재하는 걸 말한다.

 

예를 들면 주식 가격 예측 ML 모델이 있다면 예측을 한 이후 실제 정답 결과인 그라운드 트루스 레이블을 시간이 지나면 알 수 있게됨.

 

주식 가격 예측 모델 말고도 추천 시스템도 자연적 레이블에 해당됨.

 

만약 추천을 해줬는데 사용자가 클릭을 하지 않는다면 원하지 않는 걸 추천해줬구나 라고 알 수 있는 것.

 

하지만 다른 게 더 끌려서 클릭을 하지 않을 것일 수도 있다. 그래서 레이블링을 할 때는 어느 정도 시간을 줘야하긴 함.

 

 

암시적 레이블과 명시적 레이블이란?

사용자가 명확히 싫다라고 표시하거나 낮은 평점을 주는 걸 명시적 레이블이라고 함.

 

이에 반해 사용자의 응답없이 간접적으로 아는 걸 암시적 레이블. 예를 들면 추천을 해줬는데 다 클릭을 안한다면 맘에 안드는 구나 라고 판단할 수 있는거지.

 

 

피드백 루프 길이란?

자연적 레이블이 존재하는 작업에서 예측을 한 이후 피드백을 얻기까지 걸리는 시간을 피드백 루프 길이라고 함.

 

피드백 루프 길이는 작업마다 다르다.

  • 트위터 콘텐츠 추천이랑 유튜브 영상 추천에 대한 피드백 루프 길이는 확연히 차이가 날 것.
  • 유튜브 영상은 다른 영상들을 보고 난 이후에 클릭을 할 수도 있으니까 훨씬 길 거임.

 

 

Q) 그러면 피드백 루프 길이가 짧도록 예상해서 피드백을 잘못 얻을수도 있곘네?

 

그렇다.

 

그래서 피드백을 포착시키기 위한 윈도 길이를 적절하게 설정하는게 중요함.

 

특히 광고 같은 경우가 특이한데 광고를 보여준 이후 5분안에 클릭하기도 하지만 노출 후 몇시간이 지나서 클릭하는 경우도 있긴 함.

 

 

수작업 레이블링의 문제점을 해결하는 방법은?

수작업 레이블의 비용/속도 적인 단점을 해결하는 방법은 여러가지가 있음.

  • 약한 지도 학습 (Weak supervision)
  • 준지도 학습 (Semi-supervision)
  • 전이 학습 (Transfer learning)
  • 능동적 학습 (Active learning)

 

 

약한 지도 학습 (Weak supervision) 이 뭔데?

도메인 전문가의 레이블링 판단하는 지식을 함수로 만들어서 활용하는 휴리스틱한 접근 방법임.

  • 휴리스틱은 간단한 규칙, 경험적인 규칙, 또는 일반적인 가정을 말함.
  • 물론 이러한 휴리스틱은 정확한 레이블링을 할 수 없음. (이렇게 잘못 레이블링 한 걸 잡음이라고 하는듯)
  • 이런 함수는 공유해서 재사용하기도 함

 

 

Q) 그럼 잡음을 줄이기 위해서는 어떻게 하는데?

 

다수의 레이블링 함수(LF)를 만들어서 결합하는 방법이 일반적으로 사용함.

 

서로 다른 휴리스틱과 지식 영역에서 파생된 다수의 레이블링 함수를 개발해서 사용.

 

 

Q) 다수의 레이블링 함수를 사용한다면 이는 어떻게 결합되는데?

 

일단 각 레이블링 함수의 성능과 신뢰도를 평가하여, 높은 신뢰도를 가진 함수에 더 가중치를 준다.

 

다수의 레이블링 함수의 레이블 결과가 다르다면 투표하는 식으로 레이블링을 함.

 

 

Q) 그래서 이게 실제로 효과가 있음?

그렇다. 잘만 만들면 수작업 레이블링과 결과가 비슷하다고 함.

 

 

Q) 그러면 레이블링 함수로 예측하면 되지 왜 ML 알고리즘 씀?

 

레이블링 함수는 좀 다른 데이터가 온다면 결과조차 못냄. 근데 ML 모델은 일단 예측은 할 수 있음.

 

 

준지도 학습이 뭔데?

레이블이 있는 데이터를 사용하여 모델이 초기 학습을 하고, 그 후 이 모델을 사용하여 레이블이 없는 데이터에 대한 예측을 생성하며, 이렇게 생성된 예측을 추가 학습에 활용하는 것.

 

이 방식을 Self Training 이라고도 함.

 

 

Q) 예측된 데이터는 잘못된 데이터일 수도 있잖아. 이러면 성능이 떨어질텐데?

 

예측된 데이터 중에서 신뢰도가 높은 것들을 선택해 모델 학습에 추가적으로 사용함.

 

이 과정에서 모델의 성능을 점차 향상시키면서, 레이블이 없는 데이터를 점점 더 활용할 수 있게 되는거. 그러니까 모델의 성능이 낮을 때는 활용하지 못했던 데이터를 모델 성능이 점점 좋아지면 활용할 수 있게 됨.

 

 

Q) 준지도 학습은 언제 쓰는데?

 

학습할 수 있는 레이블이 제한적일 때. 주로 쓴다.

 

 

교란 (perturbation) 기반의 준지도 학습도 있음.

이건 데이터에 약간의 잡음을 추가하는 것. 이렇게 잡음이 추가되도, 예측은 변하면 안된다는 가정하에 이뤄짐.

 

 

Q) 교란 데이터를 왜 학습하는데?

 

모델의 일반화 능력을 강화하기 위해서임.

 

교란 데이터를 통한 학습은 모델이 더 견고해지도록 하여, 작은 입력 변화에도 예측이 크게 흔들리지 않도록 만들려고.

 

 

전이 학습이란?

이미 사전에 어느정도 학습된 모델을 가지고 와서 사용하는 방식임.

 

목적에 맞게 약간의 파인튜닝만 해주면 됨.

 

전이 학습에서 추세를 보면 사전 훈련한 기본 모델이 클수록 다운 스트림 작업 성능이 좋다고 알려져있음.

 

 

Q) 전이 학습은 언제 사용하는데?

 

이 또한 레이블링 된 데이터가 많지 않을 때 쓴다. 기존 학습된 모델에다가 추가 학습된 데이터만 넣더라도 성능이 좋음.

 

 

Q) 전이 학습은 언어 모델이나 이미지 처리 모델에서만 사용되나?

 

전이 학습(Transfer Learning)은 언어 모델이나 이미지 처리 모델에만 국한되지 않음.

 

다양한 머신러닝 및 딥러닝 분야에서 폭넓게 활용될 수 있음. (e.g 음성 인식, 자연어 처리, 비디오 처리, 심지어는 의료 영상 분석이나 금융 분석 같은 특수한 분야)

 

 

Q) 모델이 크다는게 뭔데?

 

모델의 구조가 크고 복잡하다는 의미임. 여기서 모델의 크기는 주로 모델이 가지고 있는 파라미터의 수로 측정됨.

 

파라미터가 많을수록 모델은 더 많은 정보를 저장할 수 있으며, 더 복잡한 패턴을 학습할 수 있는 능력을 가짐.

 

GPT-3 과 같은 모델을 크다고 함. 이런 모델을 만드는데만 해도 수천만 달러가 들어갔음.

 

 

Q) 그럼 LLM 은 돈이 많이 들어가니 아무나 못만드는거네?

 

맞다.

 

그래서 앞으로는 빅테크 회사만 LLM 을 만들 수 있고, 다른 회사들은 이를 파인튜닝해서 사용할거임.

 

 

능동적 학습 (Active Learning) 이란?

모델 스스로가 학습 데이터의 선택 과정에 적극적으로 참여하는 학습 방법을 말함. 전통적인 지도 학습 방법에서는 학습 데이터 전체를 사용하여 모델을 훈련시키지만, 능동적 학습에서는 모델이 학습에 사용할 데이터를 스스로 선택함.

 

 

Q) 이 방법을 적용하는 이유는?

 

특히 레이블링 비용이 높거나, 데이터를 레이블링하는 데 많은 시간이 소요되는 경우 유용함. (적은 데이터로 효율적인 학습이 가능함)

 

연속 학습에서 유용함: 연속 학습 환경에서는 새로운 데이터가 지속적으로 생성되는데, 동적 학습을 통해 모델이 학습에 필요한 가장 유익한 데이터 포인트를 선택함으로써, 데이터를 보다 효율적으로 활용하는게 가능.

 

능동적 학습(Active Learning)은 모델의 성능을 향상시키고 모델의 결정 경계(decision boundary)를 더 잘 학습하는 데 도움이 됨.

  • 결정 경계는 두 클래스 또는 여러 클래스를 구분하는 데 사용되는 모델의 핵심 개념임.
  • 능동적 학습을 사용하면, 모델은 결정 경계 근처의 불확실한 데이터 포인트를 우선적으로 학습하게 되는데, 이는 모델이 클래스 간의 경계를 더 세밀하게 파악하고, 실제 데이터 분포를 더 정확하게 반영하게 됨.

결국에는 많은 데이터로 학습을 해야하긴함, 이 방법을 쓰면 적은 데이터로 가성비 좋게 빠르게 학습할 수 있음. 

 

 

Q) 기본적으로 학습을 하는 방식에서 데이터를 추가로 편식했을 뿐인데 더 성능이 잘 나온다면 전체 데이터를 학습시키지말고 이렇게 학습하는게 더 낫겠네?

 

고려해야 할 점도 있음:

  • 데이터의 다양성: 일부 문제는 데이터의 다양성이 매우 중요할 수 있음.
  • 능동적 학습은 모델이 데이터를 선택하는 전략에 크게 의존합니다. 이 전략이 효과적이지 않을 수도 있음.

 

 

클래스 불균형

클래스 불균형이란?

클래스 불균형이란 클래스 샘플 데이터 수가 크게 차이나는 문제를 말한다.

 

예를 들면, 정상 폐 이미지의 개수가 99.99% 이고, 암이 걸린 폐 이미지가 0.01% 인 경우를 말함.

 

 

Q) 이 클래스 불균형 문제가 왜 중요한데?

 

클래스 불균형이 일어나면 데이터가 적은 쪽 예측을 잘 못하게 됨.

 

데이터가 적은 쪽에 대해 예측을 잘하는게 더 중요한 문제가 많음.

 

예를 들면 암이 걸린 사람을 식별하는 것.

 

 

Q) 왜 클래스 불균형이 학습에 영향을 주는데?

 

1) 모델이 소수의 클래스를 학습하는데 필요한 충분한 데이터가 주어지지 않아서.

  • 만약 소수의 데이터가 훈련 데이터에 포함조차 되지 않았더라면 모델은 해당 클래스가 없다라고도 한다. (샘플링이 중요한 이유)

 

2) 모델이 데이터에 내재하는 패턴을 학습하려는 경향 대신에 단순 휴리스틱(간단한 규칙)을 활용하려는 경향이 강해진다.

  • 이는 머신러닝 모델, 특히 딥러닝 모델의 학습 과정에서 경사 하강법 같은 최적화 알고리즘을 사용할 때, 이 알고리즘은 손실 함수(loss function)의 값을 최소화하는 방향으로 모델의 파라미터를 조정하는데, 만약 데이터 세트에서 어떤 클래스의 샘플이 다른 클래스보다 압도적으로 많다면, 모델의 학습 과정은 자연스럽게 다수 클래스의 예측 성능을 최적화하는 방향으로 진행될 거임. 이는 모델이 학습 데이터의 전체적인 손실을 줄이는 가장 쉬운 방법을 선택한다는 것을 의미한다.
  • 경사 하강법은 전체 데이터 세트에 대해 손실을 최소화하는 방향으로 파라미터를 업데이트합니다. 따라서, 소수 클래스의 샘플이 전체 손실에 미치는 영향이 상대적으로 작다면, 모델은 소수 클래스의 오류를 줄이기보다는 다수 클래스의 정확도를 유지하거나 향상시키는 방향으로 최적화될 가능성이 높음.

 

 

Q) 클래스 불균형이 일어나는 원인은 데이터 개수 떄문인거지?

 

맞다. 그러나 이거 말고도 다른 원인이 있을 수도 있음.

  • 샘플링 프로세스에서 불균형을 일으키는 경우
  • 레이블링 오류 때문에 불균형을 일으키는 경우

 

 

클래스 불균형을 해결하는 방법은?

여러가지 방법이 있다. 하나씩 살펴보자.

 

1) 올바른 평가 지표를 활용하는게 중요하다.

  • 전체 정확도와 오차 비율은 자주 사용되는 ML 지표이지만 이는 다수의 클래스 정확도 지표 + 소수 클래스 정확도 지표를 합친 것이므로 소수 클래스 정확도 지표가 낮아도 정확도가 낮아지지는 않을거임. 그러므로 이 지표만으로는 부족함.
  • 그러므로 다음과 같이 재현율 지표를 추가적으로 확인해야한다.
    • 재현율 지표는 실제 암인 사람들 중에서 내가 얼마나 맞췄는지를 나타낸다.
    • 정밀도 지표는 암으로 예측한 것 중에서 실제로 얼마나 맞췄는지를 나타낸다.
    • 정밀도는 되게 보수적으로 암이라고 예측해도 높게 나올 수 있음. 재현율을 통해서 실제 암인 사람들 중에서 내가 얼마나 맞췄는지를 확인해야 됨.
Metric Model A Model B
Cancer Prediction Probability 10/100 90/100
Normal Prediction Probability 890/900 810/900
Accuracy 0.9 0.9
Precision 0.5 0.5
Recall 0.1 0.9
F1 Score 0.17 0.64
  • 또 ROC 곡선을 그려봐야 한다고도 한다.
    • ROC 곡선 아래 면적을 AUC(Area Under the Curve)라고 함.
    • AUC = 0.5: 이는 모델의 예측 성능이 무작위 추측(random guessing)과 동일함.
    • AUC > 0.5: 모델이 무작위 추측보다 나은 성능을 보임을 의미함.
    • AUC = 1: 모델이 완벽하게 양성 클래스와 음성 클래스를 구분함을 의미한다.
  • 진짜 양성, 가짜 양성, 진짜 음성, 가짜 음성의 구별:
    • 진짜 양성(True Positive, TP): 모델이 암이라고 예측했고, 실제로 해당 환자가 암인 경우. 즉, 모델의 예측이 정확한 경우임.
    • 가짜 양성(False Positive, FP): 모델이 암이라고 예측했지만, 실제로 해당 환자가 암이 아닌 경우. 이는 모델이 오류를 범한 경우로, 불필요한 불안감이나 추가적인 검사 비용을 초래할 수 있다.
    • 거짓 음성(False Negative, FN): 모델이 암이 아니라고 예측했지만, 실제로 해당 환자가 암인 경우. 이는 매우 위험한 오류로, 실제로 치료가 필요한 환자가 검사를 받지 못하게 만들 수 있다.
    • 진짜 음성(True Negative, TN): 모델이 암이 아니라고 예측했고, 실제로 해당 환자가 암이 아닌 경우. 즉, 모델의 예측이 정확한 경우이며, 이 경우에는 걱정할 필요가 없다.

 

 

2) 데이터 수준의 리샘플링

  • 훈련 데이터의 불균형 문제를 수정하는 방식이다. 크게는 두 가지 방법이 있음:
    • 다수 클래스에서 데이터를 제거하는 언더 샘플링
    • 소수 클래스에서 데이터를 추가하는 오버 샘플링
  • 언더 샘플링 기법 중 대표적인 것으로는 토맥 링크 (Tomek Link) 가 있다:
    • 토맥 링크는 서로 다른 클래스에 속하는 한 쌍의 가장 가까운 이웃을 의미한다. 토맥 링크는 두 샘플 A 와 B 가 각각 서로 다른 클래스에 속하고, A 에서 B 로의 거리가 A 와 B 각각의 제일 가까운 이웃의 거리보다 가까울 때 이 쌍을 토맥 링크라고 한다.
    • 토맥 링크 기법에서는 이러한 쌍 중 하나(보통 다수 클래스에 속한 샘플)를 데이터 세트에서 제거함으로써 클래스 간의 경계를 더욱 명확하게 한다.
    • 경계를 더욱 명확하게 한다는 장점이 있지만 미묘한 거리에서는 모델이 명확하게 판단하지 못하므로 모델의 강건함이 떨어지게 된다.
    • 모델의 강건성(Robustness)은 모델이 입력 데이터의 작은 변화나 노이즈(noise)에 대해 얼마나 민감하지 않고 일관된 성능을 유지하는지를 나타내는 척도이다.
  • 오버 샘플링 기법 중 대표적인 것으로는 SMOTE(Synthetic Minority Over-sampling Techinique) 가 있다:
    • SMOTE의 작동 원리
        1. 소수 클래스 샘플 선택: 우선, 소수 클래스 내의 샘플을 무작위로 선택합니다.
        1. k-최근접 이웃 찾기: 선택된 샘플에 대해 k-최근접 이웃(k-Nearest Neighbors) 알고리즘을 사용하여 가장 가까운 소수 클래스 이웃을 찾습니다.
        1. 샘플 사이의 차이 계산: 선택된 샘플과 그 이웃 사이의 차이를 계산합니다.
        1. 새로운 샘플 생성: 차이에 임의의 비율(0과 1 사이의 랜덤한 수)을 곱하고, 이를 선택된 샘플에 더하여 새로운 소수 클래스 샘플을 생성합니다
  • 리샘플링에서 고려할 점:
    • 오버 샘플링은 과적합이 생기는 것에 대해 고려해야하고, 언더 샘플링은 중요한 데이터가 삭제되지 않게 신경써야한다.

 

 

Q) 토맥 링크과 SMOTE 가 저차원 데이터에서만 효과적인 이유는?

 

차원의 저주(Curse of Dimensionality)"와 데이터의 희소성(sparsity), 그리고 데이터의 가시성과 해석성에 대해 알아야한다.

 

차원의 저주:

  • 차원의 저주는 고차원 공간에서 데이터를 분석하고 처리할 때 발생하는 다양한 문제들을 총칭하는 용어이다:
  • 차원이 증가함에 따라, 필요한 데이터의 양도 기하급수적으로 증가하여 데이터 분석이 어려워진다.
  • 또한, 고차원 공간에서는 모든 데이터 포인트가 서로 멀리 떨어져 있게 되어, 가까운 이웃을 찾기가 어렵고, 데이터 포인트 간의 거리가 유사해지는 경향이 있다. 이러한 이유 때문에 데이터 리샘플링 기법의 성능에 부정적인 영향을 미칠 수 있음.

 

데이터의 희소성:

  • 고차원에서는 데이터 포인트들이 공간 내에 균등하게 분포되어 있지 않고, 대부분의 공간이 비어 있게 된다. 이렇기 때문에 데이터를 임의로 삭제하거나, 갑자기 추가하는 건 적절하지 않을 수 있음.

 

 

3. 알고리즘 수준의 방법

 

두 데이터 포인트에서 정확히 예측해야하는 데이터가 있다면 여기에 더 가중치를 주는 방식임.

 

모델은 보통 모든 데이터 포인트로 인한 평균 손실을 계산하는 반면, 여기서는 데이터 포인트에 가중치를 다르게 주는 걸 말함.

 

이렇게 훈련 데이터에 가중치를 주는 방법은 크게 3가지가 있음:

  • 비용 민감 학습:
    • 비용 행렬을 계산해서 해당 분류마다 가중치를 다르게 주는 것.
    • 비용 행렬은 진짜 양성, 거짓 양성, 진짜 음성, 거짓 음성 별로 가중치를 구성한 행렬을 말한다.
  • 클래스 균형 손실:
    • 클래스 수가 적을수록 가중치를 더 주는 방식을 말한다.
  • 초점 손실(Focus Loss)
    • 모델이 예측하기 쉬운 데이터에는 가중치를 낮게주고, 예측하기 어려운 데이터는 가중치를 높게 주는 것. (예측이 맞을 확률별로 가중치를 다르게 줌)

 

데이터 증강

데이터 증강은 훈련 데이터 양을 늘리는 기법임.

 

Q) 데이터 증강을 하는 이유는?

 

모델이 잡음과 적대적 공격(adversarial attack) 에 더 잘 대응하기 위해서.

  • 데이터가 약간만 변경되도 틀리게 예측하거나, 속임수 있는 데이터에 잘못된 예측을 하지 않도록 만들려고.

 

데이터 증강 기법:

여러가지 기법이 있다 하나씩 보자.

 

1) 단순 레이블 보존 변환

  • 이미지를 단순하게 자르고, 뒤집고, 회전하고, 반전하고, 일부 지우는 식으로 데이터를 생성하는 것.
  • NLP 에서는 일부 단어를 유사한 단어로 무작위로 대체하는 걸 말한다. (물론 문장의 의미가 변경되면 안됨)

2) 교란

  • 훈련 데이터에 잡음을 추가하거나 일부를 다른 걸로 대체하는 걸 말한다.
  • 잡음 추가는 무작위 잡음을 추가하거나, DeepFool 알고리즘을 이용해 필요한 최소 잡음 주입을 하는 방법도 있다.

3) 데이터 합성

  • 기존 데이터 세트에 없는 새로운 데이터 포인트를 인위적으로 생성하여 데이터 세트의 크기를 늘리는 방법이다. 이러한 방식은 특히 데이터가 부족하거나, 모델의 일반화 능력을 향상시키고자 할 때 유용하다.
  • 예를 들어 NLP 에서는 주어진 문장의 단어나 구문을 재배열하여 새로운 문장을 생성하거나, 기존 문장 사이에 새로운 문장을 생성하여 데이터를 확장한다.

 

 

'Machine Learning' 카테고리의 다른 글

모델 개발과 오프라인 평가  (0) 2024.04.15
피처 엔지니어링  (0) 2024.04.11
데이터 엔지니어링 기초  (0) 2024.04.03
머신러닝 시스템 설계 소개  (0) 2024.04.02
머신러닝 시스템 개요  (0) 2024.04.01

+ Recent posts