https://www.coursera.org/learn/machine-learning-data-lifecycle-in-production/home/week/1
Machine Learning Data Lifecycle in Production 1주차 _ 2 : Collecting Data
Collecting Data
Importance of Data
서로 다른 날,서로 다른 시간에 서로 다른 길이의 서로 다른 줄로 공항 보안 검문소를 통과하는 데 걸리는 시간을 예측하라.
그래서 데이터가 필요하고 그 데이터를 어떻게 얻을 것인지, 사람들이 보안 검문소를 통과하는 데 걸리는 시간을 측정해야 했다. 보안 검색대에 들어가기 위해 줄 맨 앞에 한 사람이 서 있었고 그들은 누군가가 들어온 시간을 기록했다. 그리고 검문소의 출구 반대편 끝에 다른 사람이 서 있었는데 실제로는 서로 충분히 멀리 떨어져 있었다. 그들은 서로를 볼 수도 없었고 각자가 떠난 시간을 기록했다.
그런 식으로 사람들이 공항 보안 검색대를 통과하는 데 걸리는 시간을 알려주는 레이블이 지정된 데이터 세트를 점진적으로 구축했다. 그것을 할 수 있도록 지원하기 위해 응용 프로그램을 개발해야 했다. 보안 등을 통해 허가를 받아야 하는 사람들에게 비용을 지불해야 했다.
데이터 품질의 중요성, 데이타 파이프라인 : 데이터 수집, 준비성, 데이터 수집과 모니터링
지금까지 살펴보았듯이 데이터는 ML에서 가장 어려운 부분이며 올바르게 수행하는 데 가장 중요한 부분이다. 손상된 데이터는 프로덕션 ML 시스템에서 문제의 가장 일반적인 원인이다. - uber
모든 프로덕션 기계 학습 팀에 가면 데이터 수집에 대한 이야기와 올바른 데이터를 얻는 것은 중요하다. -Gojek
프로그래밍 언어 설계에서 first class citizen은 주어진 프로그래밍 언어에서 다른 개체가 일반적으로 사용할 수 있는 모든 작업을 지원하는 개체이다.
software 1 데이터는 모두 코드에 관한 것이다. 컴퓨터에 대한 지침.
software 2 데이터에서는 목표를 지정해야 하며 프로그램의 동작을 위해 코드 뿐만 아닌 다른 것들도 중요하다. 최적화가 여기서 원동력이다. 성능을 위해 최적화하고 싶고, 분명히 능력과 확장성을 유지하기 위해 최적화해야 한다. 그리고 ML 데이터의 경우 데이터 품질은 성공에 매우 중요하므로 어떤 면에서 데이터는 소프트웨어 창 응용 프로그램의 코드와 거의 비슷하다. 데이터는 ML 애플리케이션에서 일종의 유사한 종류의 player이다.
보유하고 있는 데이터에 산더미 같은 데이터가 있을 수 있지만 예측 콘텐츠가 없으면 다음을 사용하여 예측 모델을 만들 수 없다.
1. 모델에서 정보를 제거하고 모델에서 예측할 수 없는 기능을 제거해야 한다. 문제를 일으킬 것이기 때문에 확실히 많은 컴퓨팅 리소스를 사용하지 않을 것이다.
2. 학습 데이터가 실제로 모델을 생산에 투입할 때 받게 될 예측 요청과 동일한 기능 공간을 포함하고 있는지 확인한다. 모델이 해당 공간의 영역에 대한 좋은 정보를 가지고 예측을 수행할 수 있도록 동일한 공간을 커버해야 한다. 따라서 데이터가 쓰레기이고 데이터 품질이 낮으면 모델과 응용 프로그램의 품질이 낮아진다.
3. 실제로 ML에 대해 많은 소프트웨어 애플리케이션에서 이를 측정할 수 있다. 따라서 데이터 수집은 ML 시스템 및 데이터를 구축하는 중요하고 중요한 첫 번째 단계이다.
4.다양한 종류의 오류와 이 모든 오류에 대해 이야기할 내용에 대해 생각해야 한다. 그러나 수집에서 제공에 이르기까지 전체 프로세스가 될 것이며 모든 것이 자동화되어야 한다는 것을 염두해야 한다. 이 모든 것이 테스트 가능하고 유지 관리 가능해야 하며 확장성이 좋아야 한다. 따라서 사용자를 이해하고 사용자 요구 사항을 데이터 문제로 변환하고 있는지 확인해야 한다.
데이터가 학습 데이터를 가져올 예측 요청과 동일한 기능 공간 영역을 포함하는지 확인하고 해당 데이터에서 예측 신호를 실제로 최대화했는지 확인해야 한다. 그리고 애플리케이션의 초기뿐만 아니라 전체 수명 동안 데이터 품질에 대해 걱정해야 한다. 따라서 그 중 일부는 소싱 데이터를 책임감 있게 확인하고 편견과 공정성과 같은 것에 대해 생각하고 있는지 확인하는 것이다.
Example Application: Suggesting R
예에서는 러너에게 달리기를 제안하는 애플리케이션을 살펴볼 것이다. 체력 수준이 다른 러너가 있다.
첫 번째 단계는 사용자를 이해하려고 노력하는 것이다. 이 시스템은 관찰된 패턴과 선호도를 활용하여 사용자의 행동을 기반으로 실행을 제안한다. 목표는 달리기의 일관성을 개선하고 주자가 해당 달리기를 완료하고 그것에 대해 진정으로 만족하는 것이다.
몇 가지 주요 고려 사항.
- 우선 데이터 품질과 데이터 수집을 고려해야 한다.
어떤 종류의 데이터와 얼마나 많은 데이터가 필요한가?
새 데이터가 얼마나 자주 필요한가?
상황이 언제 바뀔 것으로 예상하는가?
그 데이터에 주석이 달려 있는가?
- 사용자 요구를 데이터 요구로 변환해야 한다.
사용자의 등급을 이해하지만 결국에는 기능과 데이터가 필요하다. 그렇지 않으면 실제로 쓰레기에 불과한 많은 데이터를 수집할 위험이 있기 때문에 먼저 사용자를 이해해야 한다. 그러나 사용자를 이해한 후에는 사용자 요구를 데이터 요구로 변환해야 한다.
우리는 데이터가 무엇인지, 기능이 무엇인지, 레이블이 무엇인지 식별하는 작업을 수행할 것이다.
다음은 데이터 세트의 예시다.
여기에 세 가지 다른 종류의 실행에 대한 세 가지 다른 예가 있으며 몇 가지 기능이 있다. 여기의 예는 보스턴 마라톤, 시애틀 옥토버페스트 5K 및 휴스턴 하프 마라톤이다. 기능, Run, Runner Time 및 Elevation도 중요하다. 그런 다음 여기의 레이블은 주자가 해당 달리기의 재미 수준을 평가하는 방법이 될 것이다.
- 사용할 데이터 소스를 식별해야 한다. 처음뿐만 아니라 지속적으로 이 데이터를 어디에서 얻을 수 있는가를 확인해야 한다.훈련뿐만 아니라 동일한 데이터를 수집해야 한다. 예측을 생성하려고 할 때 추론을 수행하지 않기 때문이다.
- 얼마나 자주 훈련을 갱신해야 하는가? 데이터로 작업할 때 데이터에 실제로 예측 가치가 있는지 확인해야 한다.
- 데이터가 일관성이 있는가?와 같은 좀 더 기본적인 사항도 있다.
- 이상값 또는 오류와 같은 항목을 찾는다. 시스템을 다루는 중이므로 센서가 잘못되어 오류가 발생할 수 있다. 다양한 측정값, 다양한 유형, 그리고 부동 소수점 끝의 차이 또는 누락된 값이 인코딩되는 방식과 같은 단순한 문제에서 발생하는 데이터 문제가 있을 수 있으며, 이로 인해 모두 문제가 발생할 수 있다.
- 이 예제 데이터 세트에서 고도가 0피트인 경우 실제로 있는 것인지 아니면 데이터가 없는 것인지 파악해야 한다.
- 출력이 다른 ML 모델에서 오는 경우 앙상블을 사용하는 경우일 수 있다. 여기에 오류가 있는 경우 다운스트림 모델에서 사용하려고 할 때 이러한 오류를 합성할 수 있다. 또한 프로세스 초기에 오류 및 문제를 찾고 시스템 문제 및 중단에 대한 데이터 소스를 모니터링하고 있는지 확인하려고 한다.
- 시스템 문제 및 중단이 발생할 것으로 예상해야 한다. 앱이 한동안 오프라인 상태였고 일부 사용자의 기록된 러너 시간이 잘못된 경우 어떻게 처리할 수 있는지에 대한 여부다.
- 데이터 효율성을 측정하려면 데이터 값에 대한 직관이 필요하지만 잘못될 수 있다. 실제로 가장 많은 정보를 제공하는 데이터가 무엇인지 확인해야 한다.
- 기능 선택 및 기능 엔지니어링은 데이터를 원하는 대로 형성하는 데 정말 중요하다. 기능 엔지니어링은 예측 신호가 있는 위치를 실제로 식별한 후에 예측 신호를 최대화하는 데 도움이 된다.
- 예측 정보가 있는 위치를 측정하고 가장 큰 가치를 제공하고 모델에 가장 도움이 되는 기능에 실제로 집중하는 데 도움이 되는 기능을 선택한다.
사용자와 애플리케이션을 이해해야 하며 이 경우 앱에서 실행 중인 데이터를 살펴본다. 사용자가 프로필을 작성할 때 인구통계학적 데이터를 얻을 수 있으며 일부 지역 지리 정보를 제공하는 GPS 데이터도 얻을 수 있다. 높은 수준에서 사용자를 이해하는 데 도움이 된다.
이를 기능으로 변환해야 한다. 러너 인구 통계는 하나의 기능 또는 여러 기능으로 표현해야 한다.
하루 중 시간, 달리기를 완료하는 데 걸리는 시간, 달리는 동안 속도, 거리 등, 고도, 심박수 모니터와 같은 일부 센서가 있는 앱으로 작업하는 경우 이 앱에 실제로 입력해야 하는 훌륭한 정보이며 예측 정보가 있을 수 있다.
제안을 받아 사용하는 러너. 이는 앱이 사용자가 원하는 실행을 제공했으며 반대로 거부한 경우에는 그 반대임을 알려준다. 사용자 생성 피드백. 무엇보다 먼저 모델 교육에 도움이 되도록 사용할 수 있는 구조화된 방식으로 피드백을 제공할 방법에 대해 생각해야 한다. 그런 다음 사용자 평가와 같은 것을 알고 있다. 특히 사용할 수 있는 형태여야 한다.
여기서 중요한 점은 데이터와 사용자, 라벨을 적용하는 방법을 이해해야 한다는 것이다.
사용자 또는 애플리케이션을 이해하고, 사용자가 없는 경우 사용자의 요구 사항을 예측 정보를 제공하는 데이터 문제 및 잘 정의된 기능으로 변환한다.
어떤 종류의 데이터를 얻을 수 있는가? 무엇을 사용할 수 있는가? 데이터에 대한 세부 정보 및 문제는 무엇인가? 센서 같은 것. 그들은 얼마나 신뢰할 수 있는가? 데이터에서 예측 정보는 어디에 있는가? 레이블은 무엇인가? 올바른 것을 예측하도록 모델을 훈련하고 있는지 확인해야 한다. 레이블이 목표에 맞는 것인지 확인해야 한다. 모델의 성능을 측정하는 데 사용할 메트릭은 무엇인가?
Responsible Data: Security, Privacy
데이터 수집의 주요 측면 중 하나는 데이터를 책임감 있게 수집하고 보안, 개인 정보 보호 및 공정성과 같은 항목에 주의를 해야한다. 따라서 데이터 소싱 방법을 살펴보고 데이터가 안전하며 사용자 개인 정보를 올바르게 관리하고 있는지 확인할 것이다. 공정성을 확인하고 보장하는 방법을 알아야 하며 편견을 완화할 라벨링 시스템을 설계해야 한다.
이 이미지는 세계 각지의 결혼식 전통 이미지에 결혼식 관련 레이블을 제대로 적용하지 않는 공개 이미지 데이터 세트에서 훈련된 하나의 표준 오픈 소스 이미지 분류기를 보여준다.
맨 왼쪽에는 분류기, 레이블 예측이 행사, 결혼식, 신부, 남자, 그룹, 여자, 드레스로 기록된다. 다음은 신부 예식, 결혼식, 드레스 및 여성이다. 다음은 예식과 신부와 결혼식, 남자, 신랑, 여자, 그리고 드레스이다. 그러나 끝에 있는 것은 아프리카 결혼식을 위한 것이지만 단순히 사람들로 잘못 분류되어 있다. 데이터 세트의 편향 문제에 대해 자주 인용되는 예다.
따라서 ML 시스템에서 데이터는 다양한 소스에서 나올 수 있으며, 보유한 데이터뿐만 아니라 데이터를 어디에서 얻었는지 말하기 위해 해당 소스에 대해서도 생각해야 한다. 합성 데이터를 구축할 수도 있고 특히 추론을 실행할 때 자주 수집하는 실시간 데이터를 웹 스크래핑할 수도 있다.
때때로 오픈 소스 데이터 세트를 사용할 수 있지만 거의 항상 자신의 데이터 세트를 구축할 것이다. 사용 가능한 항목과 필요한 항목에 따라 다르다. 하지만 데이터 보안과 프라이버시 또는 키는 항상 중요하다. 개인 데이터 또는 종종 PII(개인 식별 정보)라고 하는 것을 보호하기 위한 정책, 방법 및 수단을 의미하는 데이터 보안. 데이터 프라이버시는 해당 데이터의 적절한 사용, 수집 보존, 삭제 및 저장에 관한 것이다.
사용자에 대해 생각하고 해당 데이터를 책임감 있게 관리하는 데 필요한 데이터를 관리해야 한다. 사용자는 실제로 수집되는 데이터를 제어할 수 있어야 한다. 그리고 시스템이 사용자 데이터를 공개하지 못하도록 하는 메커니즘을 설정하는 것이 중요하다. 따라서 데이터 개인 정보 보호 및 데이터 보안을 처리하는 방법은 데이터의 특성과 운영 조건, 규정 및 정책에 따라 달라지며 여기서 GDP와 같은 항목은 매우 중요하다.
사용자 개인 정보 보호도 정말 중요하다. 따라서 개인 식별 정보 또는 데이터를 보호해야 한다. 데이터를 집계하여 그 안의 개인을 식별하고 익명으로 처리하며 사용자가 공유하는 데이터를 제어할 수 있도록 해야한다. 또한 그것을 처리하는 좋은 좋은 방법이다.
모델 및 교정을 사용하려는 장소에서 영향을 미칠 수 있는 사용자 개인 정보 보호에 관한 모든 법률 또는 규정을 고려해야 한다.
대부분의 경우 사용자에게 일부 데이터를 제거할 수 있는 방법을 제공해야 한다. 이렇게 하면 덜 완전한 그림이 생성되지만 데이터에 대한 책임의 일부라고 볼 수 있다.
Representational harm는 ML 시스템이 실패할 수 있는 몇 가지 방법 중 하나이다. 시스템이 특정 그룹에 대한 부정적인 고정관념을 증폭하거나 반영하는 것이다.
Opportunity denial은 시스템이 지속적인 영향을 미칠 수 있는 부정적인 실제 결과를 예측하는 경우이다.
Disporportionate product failure은 모델의 효율성이 실제로 왜곡되어 특정 사용자 그룹에 대해 출력이 더 자주 발생하고 왜곡된 출력이 더 자주 발생하여 본질적으로 더 자주 오류로 생각할 수 있다.
Harm by disadavantage는 시스템이 서로 다른 인구통계학적 특성과 그에 따른 사용자 행동 간의 불리한 연관성을 추론하는 경우다.
따라서 공정성은 중요하며 이를 보장해야 한다. 공정하다는 것은 어떤 그룹의 사람들이 문제가 있는 방식으로 다른 사람들과 다른 경험을 하는지를 식별한다는 것을 의미한다.
예를 들어 특정 성별, 직업, 연령 필드 또는 데이터의 일부를 가정하고 이를 사용하여 신뢰할 수 있는 신입 사원인지 여부를 예측하는 모델을 훈련한다고 가정해 보겠다. 그룹 공정성을 보장하여 모델이 문제가 있는 방식으로 일부 그룹에 대해 다른 경험을 일관되게 예측하지 않는지 확인해야 한다. 이것이 의미하는 바는 인구통계학적 모순이며 상황이 서로 다른 그룹 간에 균등화된다는 것이다. 그리고 정확도도 동일하거나 얻을 수 있는 한 근접한지 확인해야 한다.
인간에 의해 수집되고 레이블이 지정된 데이터는 많은 경우에 그들의 편견과 개인적인 경험을 반영하므로 이를 설명해야 한다. 사용자 기반을 다양화하는 것은 공정성을 향한 좋은 방법이다. 하지만 확실한 것은 아니기에 ML 시스템은 편향을 증폭시킬 수 있습니다. 우리는 그것을 인식하고 주의해야 하며 정말로 원하는 것은 공정한 모델을 배포하는 것입니다.
Biased data representation
편향은 데이터 내의 일부 그룹에 대한 표현이 불균형하거나 전혀 표현되지 않은 경우에도 발생할 수 있다. 이러한 편향에는 데이터에 없는 그룹으로 정형화되거나 덜 긍정적인 방식으로 표시되거나 훨씬 더 자주 나쁘게 결과가 나올 수 있다. 따라서 지도 학습의 편향을 줄이려면 모델을 훈련하고 예측을 제공하기 위한 정확한 레이블이 필요하다.
인간은 다양한 방식으로 데이터에 레이블을 지정할 수 있다. 그리고 데이터가 복잡할수록 해당 데이터를 살펴보기 위해 전문가가 더 많이 필요할 수 있다. 따라서 데이터에 레이블을 지정하는 사람을 raters라고 한다.
예를 들어, 인간이 고양이와 개의 차이를 인식하기를 원한다면 대부분의 사람들이 이미지를 보고 할 수 있다. 그러나 어떤 경우에는 주제 전문가가 정말로 필요하다. 따라서 이러한 경우에 전문 도구를 사용하는 경우가 많으며 그 예는 진단을 위해 X선을 보는 것입니다. 전문가와 함께 작업하고 있고 라벨링 비용이 꽤 많이 드는 경향이 있는지 확인해야 한다. 따라서 주제 전문가 또는 도메인 전문가는 특정 경우에 필요한 것이다. 그래서 우리가 실행 중인 앱에 대해 살펴본 이런 종류의 피드백이다. 이는 애플리케이션 없이 작업할 수 있는 방법을 찾을 수 있고 작업할 수 있는 경우 데이터에 대한 지속적인 레이블 스트림을 제공하는 경우 매우 유용할 수 있다.
따라서 핵심 사항은 무엇보다도 잠재적인 편향을 피하기 위해 항상 공정한 평가자와 데이터 세트의 공정한 표현을 고려하는 것이다. 그리고 그 레이블 지정자가 누구이며 그들의 인센티브가 무엇인지 고려해야한다.
인센티브를 잘못 설계하면 데이터에 많은 쓰레기가 생길 수 있기 때문이다. 비용은 확실히 항상 중요한 고려 사항이 될 것이다. 따라서 높은 수준의 품질과 적은 비용으로 작업을 수행할 수 있는 방법을 찾을 수 있다면 좋다. 그러나 충분한 데이터가 필요하다. 프로덕션 애플리케이션의 과제 중 하나이며 마지막으로 데이터 신선도도 마찬가지다.
우리는 데이터로 작업하게 될 것이고, 애플리케이션과 당신이 가지고 있는 데이터 주변의 세상이 어떻게 변하는지에 따라, 정기적으로 해당 데이터를 새로고침하고 그것을 해야 할 때를 감지해야 할 것이다. 따라서 데이터 수집을 실제로 관리하고 책임 있는 방식으로 수행하기 위해 생각해야 한다.