실제 데이터에서 "데모"데이터 생성 : 구성없이 위장


9

(통계가 아니기 때문에이 태그에 무엇을 태그할지 알 수 없습니다. 어떤 필드에 해당하는지 알 수 없습니다. 더 적합한 태그를 자유롭게 추가하십시오.)

데이터 분석 소프트웨어를 생산하는 회사에서 일하고 있으며 최신 제품을 테스트하고 시연하려면 적절한 데이터 세트가 필요합니다. 프로그램의 출력이 중요하지 않기 때문에 난수 생성기의 출력으로 데이터베이스를 채울 수는 없습니다. 이러한 데이터를 얻는 가장 간단한 방법 중 하나는 클라이언트에서받는 것입니다. 우리는 우리가 시행 한 재판에서 얻은 대량의 데이터를 가지고 있습니다. 이제 클라이언트의 실제 데이터를 게시 할 수 없으므로 약간 변경해야하지만 여전히 실제 데이터처럼 동작해야합니다.

여기서 목표는 데이터 세트를 가져 와서 "퍼지"를 적용하여 구체적으로 인식 할 수 없도록하는 것입니다. 통계 이론에 대한 나의 기억은 그 자체로 약간 모호합니다. 그래서 여러분들에 의해 이것을 실행하고 싶습니다 :

기본적으로 우리가 (고객으로부터) 얻은 데이터는 그 자체로 (국가 또는 세계에 존재하는) 모든 데이터의 샘플입니다. 내가 알고 싶은 것은 샘플을 더 이상 고객의 샘플 모집단을 강력하게 대표하지 않고 여전히 전세계 인구를 대표적으로 유지하기 위해 어떤 유형의 작업을 적용 할 수 있는지입니다.

참고로, 데이터를 알고있는 한 일반적으로 가우스 정규 분포를 따릅니다.

원래 데이터 세트는 광범위하게 사용 가능하지 않지만 이론적으로 일부 지역별 특성에서 인식 할 수 있습니다 (우리는 이러한 특성이 무엇인지 알지 못하며, 누군가 가 충분한 수준으로 수행 하는지 여부 는 확실하지 않지만, 장소에 따라 차이가 있음을 알고 있습니다 배치). 어쨌든, 나는 실천보다 이것에 대한 이론에 더 관심이 있습니다. 나는 누군가가 운동 할 수 있는지 여부에 관계없이 매개 변수 X로 소스 데이터 세트를 식별하는 것이 불가능한지 또는 적어도 어려운지를 알고 싶습니다. 처음에 매개 변수 X.

내가 생각해 낸 접근법은 판독 값을 다양한 유형으로 분리하는 것입니다 (많은 것을 포기하지 않고 그룹이 "길이"또는 "X를 수행하는 데 걸리는 시간"이라고 가정하십시오). 표준 편차. 그런 다음 각 값에 (n * stddev)의 양수 값과 음수 값 사이에 임의의 값을 추가하십시오. 여기서 n은 데이터가 충분히 "퍼지"될 때까지 결과를 조정하는 데 사용할 수있는 분수입니다. 일부 값은 다른 값보다 훨씬 많거나 적기 때문에 정적 범위 (예 : 원래 값의 90 %에서 110 % 사이의 임의의 값)를 단순히 적용하고 싶지 않습니다. 일부 측정에서는 평균보다 10 %가 거의 눈에 띄지 않습니다. 그러나 다른 사람들에게는 당신을 심각한 이상치로 만듭니다.

원본 데이터의 소스를 마스크하기에 충분합니까? 그렇지 않다면, 어떤 통계적 측정으로 데이터를 여전히 식별 할 수 있으며 결과 데이터를 모호하게 사실적으로 유지하면서 어떻게 데이터를 마스킹 할 수 있습니까?


3
관련 질문에 대한 최근의 의견에서 , 나는 온라인에서 구할 수있는이 주제에 관한 몇 가지 설문에 대한 링크를 제공했습니다. 이 링크는 인구 조사 데이터를 위장하는 데 중점을 두지 만, 대부분은 데이터를 위장하는 문제를 다룹니다.
whuber

내가 통계학 자나 수학자가 아니라는 것을 지적하는 것이 현명 할 수있다. 저는 직업 별 프로그래머이므로 알고리즘 설명을 처리 할 수 ​​있지만 엉뚱한 대수는 뇌를 퍼티로 만듭니다. 또한 이것은 특별히 엄밀 할 필요는 없습니다. 이 데이터가 사용될 데모는 일반적으로 프리젠 테이션입니다-소프트웨어에서 파는 우리 담당자 중 하나의 10 분 또는 20 분. 누구든지 장기간 소프트웨어를 시험해 볼 수 있다면, 자신의 데이터를 소프트웨어로 시작하는 것부터 시작합니다. 데모 데이터를 실제로 조사 할 수는 없습니다.
anaximander

2
전에 이것을 한 통계학자를 고용 할 것을 제안합니다. 이것을 첫 로데오로 만들지 마십시오. 당신은 이것에 끔찍한 일을하기 위해 갈망하고 싶지 않습니까? arstechnica.com/tech-policy/2009/09/…
David J.

답변:


2

몇 가지 제안이 있습니다.

  1. 무 차원 형태로 변환하십시오. 그것이 0에서 1로 갔고 2 주당 furlongs 또는 톤의 석탄과 같은 단위가 부착되어 있지 않으면 인식하기가 더 어렵습니다.
  2. 작은 난수를 추가하십시오. 가우시안과 가우시안을 복잡하게 만들면 다른 가우시안을 얻을 수 있습니다. 그것은 그것의 본질을 바꾸지는 않지만 정확한 값에서 이동하면 누군가 인터넷 검색을 통해 숫자가 무엇인지 알아 내려고 시도합니다.
  3. 나는 그것을 회전시키는 아이디어를 좋아한다. 1d 데이터 세트에서 2d 데이터 세트를 작성하려면 몇 단계의 시간이 소요될 수 있습니다. 그런 다음 PCA 또는 SVD (중심 및 스케일링 후)를 사용하여 회전을 결정할 수 있습니다. 데이터가 적절하게 회전되면 분산을 변경하고 정보 자체를 혼란스럽게 만들었습니다. 회전 된 좌표축 중 하나를 "샘플 데이터"로보고 할 수 있습니다.
  4. 다른 소스의 강력한 데이터와 혼합 할 수 있습니다. 따라서 샘플 데이터가 주식 시장 데이터 인 경우 날씨를 기준으로 또는 선호하는 비틀즈 사운드 트랙의 피치 평균 차이를 기반으로 섭동을 추가 할 수 있습니다. 사람들이 나스닥을 이해할 수 있는지 여부에 관계없이 나스닥 + 비틀즈를 이해하는 데 어려움이 있습니다.

1

나는 두 단계 접근법을 제안 할 것입니다. 첫 번째 단계는 부트 스트랩에 사용 된 방법과 유사하게 교체하여 샘플링하는 것입니다. 에서 R사용할 수 있습니다

 newdata = sample(olddata, replace = TRUE)

이제 원본과 동일한 속성을 가진 다른 데이터 세트가 있습니다. 두 번째 단계는 0을 중심으로 무작위 변수를 추가하는 것입니다.

 newdata = newdata + runif(1, min = -10, max = 10)

0에 대해 대칭 인 임의의 변수는 작동하며 분포의 경계는 중요하지 않습니다.

결국, 이전 데이터 세트와 동일한 특성을 가진 완전히 다른 데이터 세트가 있어야합니다.


1
"같은 속성을 가진"은 무엇을 의미합니까? 최소한 분산과 공분산이 다를 수 있습니다. 변수 간의 관계에 관심이 있다면 정말 중요합니다.
Charlie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.