brunch

You can make anything
by writing

C.S.Lewis

by 한나 Nov 22. 2022

적은 데이터로 성공적인 ML 모델을 만들기 위한 방법

소량의 데이터라도 괜찮아요 ML 프로젝트는 누구나 시작할 수 있습니다. 

*오늘 내용은 원글이 있어요. 실무에 도움이 되는 해외 칼럼을 한글화 했답니다. 글의 마지막 에서 확인할 수 있어요.




데이터가 적어도 괜찮을까? 


데이터 과학 프로젝트를 시작하는 데 반드시 수십억 개의 샘플을 수집해야 하는 것은 아니예요. 필요한 데이터의 양은 어떤 비즈니스를 위한 모델을 만드는지에 대한 것과 사용 중인 기술 유형에 따라 크게 달라지게 됩니다. 꼭 대규모의 데이터는 필수가 아니라 옵션인 모델들이 있다는 거죠.


즉, 소량의 데이터로 ML 모델 구축을 시작할 수 있지만 어떤 모델을 만들 것인지와 기술 유형을 제한 하는 것이 중요합니다. 사실 이 내용이 오늘 글의 모든 결론이기도 합니다. 모든 ML 프로젝트의 첫 번째 단계는 데이터를 확보해야 하는 건데요. 이를 위해 다음 과정들을 확인할 수 있습니다. 


- 문제 식별

문제를 완전히 이해해야 합니다. 목표는 무엇인지 어떻게 측정 하는지, 목표와 목표를 결정하면 수집할 항목과 필요한 양에 대한 통찰력을 얻을 수 있습니다.


- 기간 결정

다음으로 필요한 데이터를 얻는 방법을 계획해야 합니다. 데이터를 즉시 사용할 수 있는지 아니면 수집해야 하는지를 살펴보세요. 기간과 비용은 얼마나 발생하나요? 

- 적절한 수집 방법 선택

데이터 소스는 모델 구축 목표에 따라 다르지만 인터뷰 또는 설문조사, 문서나 기존 기록, 기존 데이터 및 고객과의 교류를 통해 데이터 수집을 시작할 수 있습니다. 


- 수집

데이터 수집 프로세스를 모니터링하는 일정을 만듭니다. 정기적으로 진행 상황을 확인하면 상황 변화에 적응할 수 있어요. 이를 진행하면서 처음에 생각했던 것보다 더 많은 데이터가 필요하다는 것을 알게 될 수도 있습고요.

더 많은 데이터가 필요하다면 1단계로 돌아가서 반복해 보세요. 초기 단계에서는 항상 더 많은 데이터에 오류가 있을 수 밖에 없고 이 오류를 더 많이 찾는 것보다 오류 데이터를 지우는 게 더 중요하다는 것도 잊지 마세요. 






적은 데이터로 ML 모델 구축을 시작하긴 했는데... 

데이터 구축 오휴의 일반적인 문제 중 하나는 데이터 셋 내 클래스의 불균형 분포(Machine Learning Imbalanced Data) 인데요. 다음의 샘플링 과정을 통해 일정 부분 완화가 가능합니다. 

- 언더샘플링 : 숫자를 소수 클래스와 일치시키기 위해 다수 클래스에서 일부 관측값을 무작위로 삭제하는 프로세스


- 오버샘플링 : 소수 클래스의 관찰에서 무작위로 샘플링하는 합성 데이터를 생성하는 프로세스입니다. 일반적으로 사용되는 기술은 SMOTE(Synthetic Minority Over-sampling Technique) 이며, 특징 공간의 점 사이에 선을 그려서 새로운 관측값을 생성합니다.


샘플링에 필요한 코드를 확인하고 싶다면 이곳에서 확인할 수 있어요.






적은 데이터로 오류가 적은 ML 모델을 만들기 위한 방법


ML 모델의 성능은 대체적으로 학습 데이터의 크기와 관련이 있죠. 대략적으로 모델의 매개변수 수보다 약 10배 많은 관측값이 필요하고요. 

예를 들어, 두 개의 기능이 있는 선형 회귀 모델을 구축하는 경우 최소 30개의 관측값(가중치 2개, 절편 1개)이 필요하며 이보다 적으면 모델이 과적합될 가능성이 높아요.

하지만, 사례에 따라서 더 적은 데이터를 사용해 모델을 만드는 것도 가능하니까요. 데이터에 영향을 미치는 요소들은 아래와 같습니다. 


- 모델의 매개변수 수

- 예상 모델 성능

- 모델의 출력.


데이터가 적어도 모델을 더욱 강력하게 만들 수 있는 몇 가지 방법도 함께 확인해 보세요. 


1. 간단한 모델 선택 - 작은 모델에는 더 적은 데이터가 필요합니다.

- 분류기를 교육하는 경우 로지스틱 회귀로 시작합니다.

- 트리 기반 모델의 경우 최대 깊이를 제한합니다.

- 범주를 예측하는 경우 기능 수가 제한된 간단한 선형 모델로 시작합니다.

- 정규화 방법을 적용하여 모델을 보다 보수적으로 만듭니다.


2. 데이터에서 이상값을 제거합니다. 작은 데이터 세트에서 교육을 받을 때 이상값은 모델에 상당한 영향을 미칠 수 있습니다. 이를 제거하거나 분위수 회귀와 같은 보다 강력한 기술을 사용할 수 있습니다.


3. 관련 기능 선택: 재귀 제거, 대상 변수와의 상관관계 분석, 중요도 분석 등의 여러 기술을 사용하여 수행할 수 있습니다. 


4. 여러 모델을 앙상블 학습(Ensemble Learning) 하세요. 여러 모델의 결과를 결합하면 합의를 도출하고 솔루션을 더욱 강력하게 만들 수 있습니다.


슈퍼브에이아이의 머신러닝 플랫폼 Suite 스위트는 적은 모델을 통해 ML모델을 구축하기에 가장 편리한 플랫폼 이빈다. 플랫폼에서 데이터 관리부터 배포까지 바로 가능합니다. 






데이터가 적은 모델을 배포 시
떨어지는 성능을 해결할 수 있을까?


적은 데이터로 학습되었다보니 성능이 기대에 못미칠 수 있어요.
모델 성능을 향상시키기 위해 사용할 수 있는 몇 가지 전략도 확인해 보세요. 

- 모델이 과/소적합된 경우 입력 기능의 수를 늘리 거나 더 복잡한 모델 을 시도해 볼 수 있습니다. 모델이 과적합된 경우 그 반대로 하는 걸 추천해요. 


- 교차 검증: 과적합에 대한 중요한 예방 단계로 기 교육 데이터를 사용하여 여러 개의 미니 열차 테스트 분할을 만든 다음 이를 사용하여 모델을 조정합니다. k-폴드 교차 검증에서와 같이 데이터는 폴드라고 하는 k 하위 집합으로 나뉩니다. 그런 다음 알고리즘은 나머지 접기를 테스트 세트로 사용하면서 k-1 접기에 대해 반복적으로 훈련됩니다. ("홀드아웃 접기"라고 함).


- 정규화 : 모델을 더 단순하게 만드는 데 도움이 됩니다. 이것은 사용하는 모델 유형에 따라 다릅니다.


- 앙상블(Ensemble Learning) : 개별 모델의 예측을 결합합니다. 앙상블에는 여러 가지 방법이 있지만 가장 일반적인 두 가지 방법은 다음과 같습니다.


: Bagging은 많은 수의 "강력한" 학습자를 병렬로 교육한 다음 이들을 결합하여 예측을 "부드럽게" 함으로써 복잡한 모델이 과대적합될 가능성을 줄입니다. 

: Boosting은 많은 수의 "약한" 학습자를 순서대로 교육한 다음 이들을 하나의 강력한 학습자로 결합하여 간단한 모델의 예측 유연성을 높입니다. 


팀원간 논의를 통해 서로 다른 모델을 앙상블할 수도 있어요. 






적은 데이터로 딥러닝 모델 구축은 추천하지 않아요 


딥러닝 모델에서는 적은 데이터가 맞지 않을 수 있어요. 딥러닝 모델은 고성능을 달성하기 위해 대규모 데이터 셋이 필요하고, 수집하는 데이터가 많을수록 모델 성능이 향상되기 때문인데요.

데이터가 적은 경우 회귀(Regression), 랜덤 포레스트(Random Forest) 및 SVM(Support Vector Machine) 과 같은 간단한 기계 학습 모델이 딥러닝 보다 뛰어난 성능을 보여주게 됩니다. 

딥러닝 모델을 구축할 때에는 기존 모델을 적용하거나 더 많은 데이터를 얻는 것을 고려해보세요. 선형분류 알고리즘은(Logistic Regression) 클래스당 수백 개의 예제를 통해 성능이 향상됩니다. 하지만, 인공 신경망(artificial neural network(ANN))과 같은 비선형 알고리즘(NonLinear)의 경우 클래스당 수천 개의 샘플이 필요할 수 있어요. 






데이터가 있지만 목적이 명확하지 않을 때 
이렇게 하면 좋아요


ML 모델을 만들기 위한 비즈니스 문제가 명확하지 않을 때에는 포괄적인 관점에서 데이터를 살펴보세요. 다양한 유형의 데이터를 통해 비즈니스 이니셔티브를 해결하는 방법을 알아볼 수 있어요.


- 트랜잭션 데이터를 사용하면 보다 세분화되고 보다 상세한 의사 결정(현지화, 계절성, 다차원성)이 가능해요. 

- 구조화되지 않은 데이터를 통해 완전하고 보다 정확한 의사 결정(새로운 지표, 차원 및 차원 속성)

- Data Velocity는 더 자주, 더 시의적절한 의사결정이 가능합니다. (매시간 대 매주, 온디맨드 분석 모델 업데이트).

- Predictive Analytics를 사용하면 보다 실행 가능하고 예측 가능한 의사 결정(최적화, 추천, 예측, 점수, 예측)을 수행할 수 있습니다.






민감한 데이터 관리하기  


민감한 데이터는 난독화되었을 때만 사용할 수 있는 유용한 정보입니다. 여기에는 다음이 포함됩니다.


- 개인정보 : 이름, 주민등록번호, 휴대전화 또는 GPS 위치정보, 신체적/경제적 특징, …

- 기밀정보 : 금융정보, 비밀번호, 국민안전

- 비즈니스 크리티컬 데이터 : 손상될 경우 비즈니스에 해로울 수 있음(예: 영업 비밀)

- 윤리적 : 법적 요구 사항이 없는 경우도 있지만 윤리적으로 데이터는 익명으로 처리되어야 합니다.

- 민감한 데이터 저장 및 공유


이러한 민감 데이터는 몇 가지 보안 전략을 통해 사용해야 합니다. 

- 익명화 : 익명화된 개인 데이터는 더 이상 개인을 식별할 수 없으며 개인 데이터로 간주되지 않습니다.


- 가명화 : 식별 가능한 데이터를 가역적이고 일관된 값으로 대체하는 방법. 익명화와 달리 역추적을 허용할 수 있는 개인 관련 데이터는 제거되지 않습니다. 가명 데이터는 여전히 법적으로 민감한 데이터로 간주되지만 안전한 접근 방식으로 간주됩니다.


- 암호화 : 평문을 암호문으로 변환하는 과정. 암호화는 읽을 수 있는 데이터를 가져와 무작위로 나타나도록 변경합니다. 좋은 암호화 전략은 안정적인 암호화와 편리한 키 관리를 사용합니다.






민감한 데이터 문제 없이 모델에 활용하기


민감한 데이터를 활용할 때에는 데이터의 유용성과 위험 수준의 균형을 맞추는 것이 핵심인데요. 이에 사례들을 한번 살펴볼게요. 


민감한 데이터 식별하기 

열 : 사용자의 이름, 성 또는 우편 주소와 같은 구조화된 데이터 셋의 특정 열에 해당 
구조화되지 않은 텍스트 기반 데이터 셋 : 구조화 되지 않은 텍스트 기반 데이터 셋에서 알려진 패턴을 사용하여 종종 감지할 수 있어요. 
자유 형식 비정형 데이터 : 텍스트 보고서, 오디오 녹음, 사진 또는 스캔한 영수증 등이 해당 됩니다. 
필드 조합의/구조화되지 않은 콘텐츠 : 구조화되지 않은 콘텐츠에 포함된 컨텍스트 정보가 해당 됩니다. 


- 데이터 관리 계획 및 사례 문서 만들기

계획 및 문서는 중요한 데이터를 숨기거나 제거할 수 없는 경우 결정을 내리는 데 도움이 되죠. 데이터 관리 계획을 만들 때에는 문서에서 암호화 키, 해시 함수 또는 기타 도구를 생략하는 것이 좋습니다. 

민감한 데이터의 모든 소스, 저장 위치 및 현재 데이터의 정확한 유형을 문서화하고, 수정 단계가 복잡하거나 일관성이 없거나 불가능한 위치 또한 문서화 하여 표기하는 것이 좋습니다.  


다음으로는 민감한 데이터의 새로운 소스를 지속적으로 스캔하고 결정하는 프로세스를 설정합니다. 중요한 데이터에 임시 또는 영구적으로 액세스할 수 있는 역할 및 (가능하면) 개별 직원 이름을 표기하면 좋습니다. 
이에 덧붙여 액세스 권한이 필요한 이유를 표시 합니다.

직원이 민감한 데이터에 액세스할 수 있는 위치, 복사할 수 있는 경우, 복사할 수 있는 방법, 복사할 수 있는 위치 및 액세스와 관련된 기타 제약 조건을 결정하고 민감한 데이터에 액세스할 수 있는 사람을 정기적으로 검토하고 여전히 액세스가 필요한지 확인합니다. 정책을 전달하고 시행하고 정기적으로 검토하세요. 


- 프로젝트에 큰 영향을 주지 않는 선에서 민감한 데이터 보호하기 
기계 학습 모델을 구축하기 전에 프로젝트에 필요하지 않은 경우 데이터 세트에서 사용자별 정보를 삭제합니다. 또한, 민감한 정보를 제거할 수 없는 경우에도 마스킹된 형식의 데이터로 효과적인 모델을 교육할 수 있어요. 

마스킹 기술은 일반 텍스트 식별자의 모든 항목을 해시 또는 암호화된 값으로 대체하여 대체 암호를 적용하는 방법을 사용하는데요. 각 민감한 필드에 저장된 실제 값에 대해 관련 없는 더미 값을 대체하여 토큰화합니다.  


또, PCA(Principal Components Analysis)와 같은 차원 축소 기술을 사용하여 다양한 기능을 혼합하고 결과 PCA 벡터에서만 모델을 훈련하는 방법이 있습니다. 





오늘 글의 출처 - Winder.ai 소개

데이터 과학 프로젝트 시작을 위해 선택할 수 있는 SaaS 툴 입니다. 해당 블로그에서는 ML/AI Ops 에 관련된 내용을 흥미로운 주제로 다루고 있습니다. 관련하여 더 자세한 내용이 필요하다면 블로그를 방문하세요. 





국내에서 적은 데이터로 ML 모델을 구축하기에 제일 쉬운 방법은? 


슈퍼브에이아이의 머신러닝 플랫폼 스위트는 ML모델을 위한 데이터 관리부터 배포까지 바로 가능한데요. 머신러닝 프로젝트를 시작 시 팀간 협업을 위한 편리한 기능들을 제공하고 있으며 커스텀 오토라벨링 및 데이터 작업의 자동화를 지원합니다. 적은 데이터를 통해 고품질 학습용 데이터셋을 구축하고 싶다면 스위트를 시작해 볼 수 있어요. 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari