R을 사용하여 데이터 과학을 제한적으로 사용하면서 나쁜 데이터를 정리하는 것이 분석을 위해 데이터를 준비하는 데 매우 중요하다는 것을 깨달았습니다.
데이터를 처리하기 전에 데이터를 정리하는 모범 사례 나 프로세스가 있습니까? 그렇다면 이러한 모범 사례 중 일부를 구현하는 자동 또는 반자동 도구가 있습니까?
R을 사용하여 데이터 과학을 제한적으로 사용하면서 나쁜 데이터를 정리하는 것이 분석을 위해 데이터를 준비하는 데 매우 중요하다는 것을 깨달았습니다.
데이터를 처리하기 전에 데이터를 정리하는 모범 사례 나 프로세스가 있습니까? 그렇다면 이러한 모범 사례 중 일부를 구현하는 자동 또는 반자동 도구가 있습니까?
답변:
R 일부 포함 표준 그것의 데이터 세정에 사용될 수있는 데이터 조작 기능, 기본 패키지 ( gsub
, transform
예컨대, 등)뿐만 아니라 다양한 외부 패키지 stringr , 모양 변경 / reshape2을 하고 plyr / dplyr . 예를 들면 이러한 패키지에 대한 사용의 모범 사례와 그 기능은 다음 종이에 설명되어 있습니다 http://vita.had.co.nz/papers/tidy-data.pdf .
또한 R은 데이터 정리 및 변환에 특별히 초점 을 맞춘 일부 패키지를 제공합니다 .
에 대한 포괄적이고 일관성있는 접근 청소 데이터 예와의 사용을 포함하여 R에, editrules 및 deducorrect 패키지뿐만 아니라 설명 워크 플로우 ( 워크 R에 청소 데이터)를, 내가보기 엔 추천하는 다음과 같은 논문에서 제시 : HTTP : //cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf .
dplyr
특정 plyr
도구 의 최적화 된 표현이며 data.table
데이터 조작에 대한 완전히 다른 접근 방식 인을 추가합니다. 해들리 위컴
dplyr
패키지 의 저자 이지만 패키지 의 저자는 아닙니다 data.table
.
내 관점에서 볼 때이 질문은 2 단계 답변에 적합합니다. 첫 번째 부분은 소프트 전처리 라고 부르며 , 추가 분석에 적합한 방식으로 데이터를 전처리하기 위해 다른 데이터 마이닝 알고리즘을 사용하는 것으로 간주 할 수 있습니다. 목표가 한 번에 해결하기에 충분히 단순 할 경우에는 분석 자체가 될 수 있습니다.
두 번째 부분 인 하드 프리 프로세싱 은 실제로 다른 프로세스보다 우선하며, 데이터를 정리하고 처리 할 특정 컨텐츠를 선택하는 간단한 도구 또는 스크립트의 사용으로 간주 될 수 있습니다. 이 문제에 대해 POSIX는 간결하고 강력한 전처리 스크립트를 작성하는 데 사용할 수있는 놀라운 도구를 제공합니다.
예를 들어, 소셜 웹 사이트 (twitter, facebook 등)에서 오는 데이터를 다루는 사람들의 경우, 데이터 검색은 대개 매우 구체적인 형식의 파일을 생성합니다. . 이러한 경우 간단한 awk
스크립트로 데이터를 정리하여 나중에 처리 할 수있는 유효한 입력 파일을 생성 할 수 있습니다. 마법 세트에서 하나도 지적 할 수있다 grep
, sed
, cut
, join
, paste
, sort
, 및 기타 도구의 전체 무리입니다.
소스 파일이 단순 할 경우 너무 많은 값이있는 경우 데이터 정리를위한 메소드 번들을 생성해야 할 수도 있습니다. 이러한 경우 일반적으로 Python, Ruby 및 Perl과 같은 스크립팅 언어 (쉘 언어 이외의 언어)를 사용하는 것이 좋습니다. 이를 통해 API 를 구축 하여 매우 간단하고 재사용 가능한 방식으로 특정 데이터를 선택할 수 있습니다. 이러한 API 는 때때로 IMDbPY , Stack Exchange API 등의 작성자가 공개적으로 공개 합니다.
질문에 대답하십시오 : 모범 사례가 있습니까? 일반적으로 작업에 따라 다릅니다. 항상 동일한 데이터 형식을 다루는 경우 사전 처리를 위해 체계화 된 스크립트를 작성하는 것이 가장 좋습니다 . 반면 일부 데이터 세트에서 간단하고 빠른 정리가 필요한 경우 POSIX 도구를 사용 하여 Python 스크립트보다 훨씬 빠르게 전체 작업을 수행하는 간결한 쉘 스크립트를 사용하십시오 . 때문에 정리가 데이터 세트에 당신의 목적에 모두 의존, 그것은 모든 것을 이미 수행이 어렵다. 그러나 문제를 절반 정도 해결하는 API가 많이 있습니다.
grep
는 기본적으로 POSIX 기본 정규식을 사용하며로 실행될 때 확장 POSIX 정규식을 허용 grep -E
하고로 실행될 때 PCRE를 허용합니다 grep -P
.
데이터 정리가 거의 자동화되지 않는 한 가지 이유는 특정 문제, 방법 및 목표가 주어지면 "깨끗한"의 의미를 정의하는 데 필요한 많은 판단이 필요하기 때문입니다.
누락 된 데이터에 대한 값을 전가하는 것처럼 간단하거나 이전 자동화 프로세스의 데이터 입력 오류 또는 데이터 변환 오류 (예 : 코딩, 검열, 변환)를 진단하는 것만 큼 복잡 할 수 있습니다. 이 마지막 두 경우에는 데이터가 외형 적으로 좋아 보이지만 실제로는 잘못되었습니다. 이러한 진단에는 종종 수동 분석 및 검사와 사용 된 데이터 소스 및 방법에 대한 정보와 같은 대역 외 정보가 필요합니다.
또한 일부 데이터 분석 방법은 잘못되었거나 누락 된 데이터가 대치되거나 기본값이 아닌 공백으로 남아 있거나 N / A 인 경우 더 잘 작동합니다. 이는 Dempster-Shafer Belief 기능과 같이 불확실성과 무지가 명시 적으로 표현 된 경우에 해당됩니다.
마지막으로 청소 프로세스에 대한 특정 진단 및 메트릭을 갖는 것이 유용합니다. 누락되거나 잘못된 값이 임의로 분포되거나 분석 결과에 영향을 줄 수있는 방식으로 집중되어 있습니까? 대체 클리닝 전략 또는 알고리즘의 효과를 테스트하여 최종 결과에 영향을 미치는지 확인하는 것이 좋습니다.
이러한 우려를 감안할 때, 데이터 정리를 피상적이거나 무심하거나 완전 자동화 된 방식으로 처리하는 방법이나 프로세스가 매우 의심 스럽습니다. 그 세부 사항에 많은 악마가 숨어 있으며 심각한주의를 기울이는 것은 비용을 지불합니다.
자동 정리 정보 : 오류 수와 오류 정의는 종종 데이터에 따라 다르므로 실제로 데이터를 자동으로 정리할 수 없습니다. 예 : 열 "수입"에 음수 값이 포함되어있을 수 있습니다.이 경우 오류가 발생합니다. 사례에 대해 뭔가를해야합니다. 반면에 "매월 절약"열에는 부의 값이 포함될 수 있습니다.
이러한 오류는 도메인에 따라 크게 달라 지므로 오류를 찾으려면 사람이 능가하는 자동화 된 프로세스 인 도메인 지식이 있어야합니다.
자동화 할 수있는 곳과 반복되는 곳은 반복되는 프로젝트입니다. 예를 들어 매월 생산해야하는 보고서. 오류를 발견하면 몇 달 안에 이러한 종류의 오류를 발견 할 수있는 자동화 된 프로세스를 배치해야하므로 시간이 절약됩니다.
실제 연구를하기 전에 데이터를 "정리"하는 보편적 인 기술은 없다고 생각합니다. 다른 한편으로, 나는 가능한 많은 재현 가능한 연구 를하는 것을 목표로하고 있습니다. 재현 가능한 연구를 수행하여 버그 나 불량한 매개 변수 / 가정과 함께 클리닝 기술을 사용한 경우 다른 사람이 발견 할 수 있습니다.
재현 가능한 연구에 많은 도움이되는 멋진 R 패키지 편물 기가 있습니다.
물론 모든 연구를 완전히 재현 할 수있는 것은 아니지만 (예 : 라이브 트위터 데이터) 최소한 청소, 서식 및 전처리 단계를 쉽게 문서화 할 수 있습니다.
Coursera에서 재현 가능한 연구 과정을 위해 준비된 평가 를 확인할 수 있습니다 .
OpenRefine (이전의 Google Refine)은 대화식으로 데이터 정리 및 변환을 수행 할 수있는 훌륭한 도구입니다. 최종 출력은 다양한 표준 형식 (json, csv) 또는 사용자 정의 형식 (예 : wiki)으로 내보낼 수 있습니다.
"공백"기능을 사용하여 +를 정렬하면 OpenRefine에서 정확한 중복을 처리 할 수 있습니다. 또한 회사 이름이나 주소와 비슷한 모양의 복제본을 그룹화 할 수있는 대략적인 문자열 (퍼지) 클러스터링 기능이 있습니다. 이 기능만으로도 굉장합니다.
Coursera에는 이에 관한 전 과정이 있습니다. 그들이 언급 한 기술을 살펴보고 싶을 때 중요한 부분은 언제 무엇을 사용해야 하는지를 아는 것입니다.
https://www.coursera.org/learn/data-cleaning
각 데이터 세트마다 고유 한 문제와 문제가 있으며 모든 단계가 모든 데이터 세트에 적용되는 것은 아니기 때문에 자동화하는 대신 항상 수동으로 수행하는 것이 좋습니다.