| 스피커 |
성적 증명서 |
| 미아 스티븐스 |
JMP Discovery Summit에 오신 것을 환영합니다. 저는 JMP 제품 관리자 미아 스티븐스입니다. 시스템 엔지니어 조던 힐러도 함께합니다. 오늘은 데이터 큐레이션 워크플로 자동화에 대해 이야기해 보겠습니다. |
| |
그리고 이것은 단지 참고용 초록일 뿐이고, 저는 이에 대해 이야기하지 않을 것입니다. |
| |
이 강연을 두 부분으로 나눠서 진행하겠습니다. 먼저 분석 워크플로에 대해 말씀드리겠습니다. |
| |
데이터 생성과 데이터 큐레이션의 의미에 대해 알아보겠습니다. 그리고 데이터에서 잠재적인 데이터 품질 문제를 파악하는 방법도 알아보겠습니다. |
| |
그럼 조던에게 넘겨드리겠습니다. 조던은 재현성의 필요성에 대해 이야기할 것입니다. |
| |
그는 데이터 큐레이션을 위한 요약본을 공유하고 JMP에서 데이터를 큐레이션하는 방법을 보여드릴 것입니다. |
| |
액션 레코더와 향상된 로그. |
| |
그러면 분석 워크플로에 대해 이야기해 보겠습니다. |
| |
모든 것은 우리가 해결하려는 어떤 사업적 문제로부터 시작됩니다. |
| |
물론 데이터를 수집해야 하며, 다양한 소스에서 데이터를 수집하여 JMP로 가져올 수 있습니다. |
| |
그리고 마지막으로, 우리는 결과를 공유하고, 우리의 발견을 다른 사람들과 소통할 수 있어야 합니다. 때로는 이것이 일회성 프로젝트일 수도 있지만, |
| |
하지만 반복해야 할 분석이 있는 경우가 많습니다. 따라서 이 강연에서 다루는 핵심 질문은 "결과를 쉽게 재현할 수 있는가?"입니다. |
| |
다른 사람들이 당신의 결과를 재현할 수 있을까요? 아니면 새로운 데이터나 업데이트된 데이터가 있을 경우, 분석, 특히 이러한 새로운 데이터에 대한 데이터 큐레이션 단계를 쉽게 반복할 수 있을까요? 이것이 바로 이 강연에서 다루는 내용입니다. |
| |
하지만 데이터 큐레이션이란 정확히 무엇일까요? |
| |
그리고 왜 우리는 그것에 대해 걱정해야 할까요? |
| |
데이터 큐레이션이란 분석적 발견을 추진하는 데 데이터가 유용하게 활용될 수 있도록 하는 것입니다. 근본적으로는 해결하려는 문제를 해결할 수 있어야 합니다. |
| |
주로 데이터 구성, 데이터 구조, 그리고 데이터 정리에 관한 것입니다. |
| |
데이터와 관련하여 발생할 수 있는 문제에 대해 생각해 보면 일반적으로 네 가지 범주로 분류됩니다. |
| |
형식이 잘못되었거나, 데이터가 불완전하거나, 데이터가 누락되었거나, 데이터가 더럽거나 지저분할 수 있습니다. |
| |
이러한 문제에 대해 논의하기 위해 STIPS의 일부 내용을 차용하겠습니다. STIPS에 대해 잘 모르시는 분들을 위해 설명드리자면, STIPS는 저희의 무료 강좌인 "산업 문제 해결을 위한 통계적 사고"입니다. |
| |
이 과정은 7개의 독립적인 모듈로 구성되어 있으며, 두 번째 모듈은 탐색적 데이터 분석입니다. |
| |
탐색적 데이터 분석과 데이터 큐레이션의 반복적이고 상호 작용적인 특성 때문에 이 모델의 마지막 수업은 분석을 위한 데이터 준비라고 합니다. 따라서 이 강의 전체에서 이 수업의 내용을 많이 차용하고 있습니다. |
| |
이러한 문제들을 각각 분석해 보겠습니다. 잘못된 서식. 잘못된 서식이란 무엇을 의미할까요? 이는 데이터가 잘못된 형식이거나 분석에 적합하지 않은 경우를 말합니다. 이는 데이터 표 전체에 적용될 수 있습니다. 예를 들어 다음과 같은 경우가 있을 수 있습니다. |
| |
...데이터를 별도의 열에 저장한다고 하지만, 실제로는 데이터를 한 열에 저장해야 합니다. |
| |
또는 데이터가 별도의 데이터 테이블에 있고 데이터 테이블을 연결하거나 업데이트하거나 조인해야 할 수도 있습니다. |
| |
개별 변수와 관련이 있을 수 있습니다. 예를 들어, 모델링 유형이 잘못되었을 수 있습니다. 또는 데이터 테이블에 날짜가 포함되어 날짜 열이 있고 날짜 형식이 지정되지 않았을 수 있습니다. 그러면 분석에서 이러한 데이터가 날짜 데이터라는 것을 인식하지 못할 수 있습니다. |
| |
서식은 외형적인 요소일 수도 있습니다. 예를 들어, 대용량 데이터 테이블을 다루는 경우 여러 열이 있을 수 있습니다. |
| |
이름이 있을 수도 있습니다... 실제로 인식하기 어려운 열 이름이 있어서 변경하고 싶을 수도 있습니다. |
| |
관리하기 좀 더 쉽게 하기 위해 여러 열을 그룹화하고 싶을 수도 있습니다. |
| |
응답 열이 데이터 표의 맨 끝에 있을 수 있는데, 위쪽으로 옮기는 것이 좋습니다. 따라서 외관상의 문제가 분석에 반드시 방해가 되는 것은 아니지만, 이러한 문제 중 일부를 해결하면 분석이 훨씬 수월해질 수 있습니다. |
| |
불완전한 데이터는 데이터가 부족한 경우를 말합니다. 이는 중요한 변수에 대한 데이터가 부족할 수 있음을 의미합니다. 예를 들어, 문제 해결에 필수적인 변수에 대한 데이터를 확보하지 못했을 수 있습니다. 또한 여러 변수의 조합에 대한 데이터도 부족할 수 있습니다. |
| |
예를 들어, 상호작용을 추정하기에 충분한 정보가 없을 수도 있습니다. |
| |
아니면 불균형한 관심 대상 변수가 있을 수도 있습니다. 결함 같은 것을 연구하고 있을 수도 있죠. 관측치의 5% 정도일 수도 있습니다. |
| |
결함이 있을 수 있으며 데이터가 충분하지 않을 수도 있습니다. 즉, 데이터의 아주 작은 하위 집합만 있을 수 있습니다. |
| |
결함이 존재하는 곳입니다. 결함의 잠재적 원인을 파악할 만큼 충분한 데이터가 없을 수도 있습니다. 또한 표본 크기가 충분하지 않아 정확한 추정치를 얻기에 충분한 데이터가 없을 수도 있습니다. |
| |
누락된 데이터란 변수의 값이 누락된 경우를 말하며, 이는 여러 가지 형태로 나타날 수 있습니다. |
| |
데이터가 누락되었고, 그 데이터가 무작위로 누락된 것이 아니라면 심각한 문제가 발생할 수 있으므로 추정치가 편향될 수 있습니다. |
| |
데이터가 완전히 무작위로 누락된 경우, 몇 개의 관찰치만 누락되었다면 문제가 되지 않을 수 있지만, 많은 양의 데이터가 누락되었다면 문제가 될 수 있습니다. |
| |
더럽고 지저분한 데이터는 관측치나 변수에 문제가 있는 경우입니다. 즉, 잘못된 값이 있을 수 있으며, 값 자체가 틀릴 수도 있습니다. |
| |
일관성이 없을 수도 있습니다. 예를 들어, 사람들이 다르게 입력하면 오타나 오타가 발생할 수 있습니다. |
| |
값이 정확하지 않을 수 있습니다. 예를 들어 측정 시스템에 문제가 있을 수 있습니다. 오류, 오타가 있을 수 있으며, 데이터가 오래되었을 수도 있습니다. |
| |
쓸모없는 데이터란, 예를 들어 더 이상 서비스되지 않는 시설이나 기계에 대한 데이터가 있는 경우를 말합니다. |
| |
데이터가 오래되었을 수 있으므로 2~3년 전의 데이터가 있을 수 있지만 해당 기간 중 어딘가에서 프로세스가 변경되었을 수 있습니다. |
| |
즉, 과거 데이터는 현재 진행 중인 프로세스와 관련이 없을 수 있습니다. 데이터가 삭제되었거나 잘렸을 수도 있습니다. |
| |
본질적으로 동일한 정보를 포함하는 중복 열이 있을 수 있습니다. 또는 중복된 관측값이 있을 수도 있습니다. |
| |
따라서 더럽거나 지저분한 데이터는 매우 다양한 형태로 나타날 수 있습니다. |
| |
그렇다면 잠재적인 문제를 어떻게 식별할 수 있을까요? |
| |
좋은 시작점은 데이터를 탐색하는 것입니다. 실제로 문제를 파악하면 데이터 탐색과 분석으로 이어집니다. 데이터 탐색을 시작하면 분석에 문제를 일으킬 수 있는 요소들을 파악하게 됩니다. |
| |
따라서 좋은 시작점은 데이터 테이블을 검토하여 명백한 문제가 있는지 확인하는 것입니다. |
| |
따라서 이 강의의 나머지 부분에서는 구성요소라는 예를 사용할 것입니다. 이는 STIPS 과정의 예입니다. |
| |
어떤 회사가 소형 부품을 생산하고 있는데 수율에 문제가 있는 경우를 생각해 보겠습니다. 총 369개의 배치 데이터를 수집했습니다. 15가지 특징이 파악되었으며, 이 데이터를 활용하여 저수율의 잠재적 근본 원인을 파악하고자 합니다. |
| |
데이터 테이블 자체를 살펴보면 어떤 종류의 데이터 품질 문제가 있는지 알 수 있는 단서가 있습니다. 정말 좋은 시작점이 될 수 있죠. (이 기능은 JMP 15에 추가되었습니다.) |
| |
헤더 그래프입니다. 저는 헤더 그래프를 정말 좋아합니다. 헤더 그래프는 연속형 변수가 있을 때 히스토그램을 보여줘서 분포의 중심, 모양, 그리고 산포를 확인할 수 있게 해줍니다. |
| |
값의 범위도 표시됩니다. 범주형 데이터가 있는 경우, 가장 많은 막대의 값을 보여주는 막대 차트가 표시됩니다. 자, 이 중 몇 가지를 살펴보겠습니다. 배치 번호부터 시작하겠습니다. 배치 번호는 히스토그램을 보여주는데, 실제로 모양이 균일합니다. |
| |
배치 번호는 아마도 식별자일 텐데, 처음부터 이 데이터가 잘못 코딩되었을 가능성이 높다는 걸 알 수 있었습니다. |
| |
이 분포가 심하게 비대칭적이라는 것을 알 수 있고 가장 낮은 값이 -6인 것을 볼 수 있습니다. 이로 인해 스크랩 수를 음수로 지정하는 것이 가능한지에 대한 의문이 생깁니다. |
| |
프로세스도 또 다른 예입니다. 기본적으로 두 개의 막대가 있는데, 실제로는 두 개의 값만 있는 히스토그램을 보여줍니다. |
| |
그리고 이 열 그래프, 이 헤더 그래프를 보면서 열 패널을 볼 수 있습니다. |
| |
예를 들어, 배치 번호, 부품 번호, 공정 등이 모두 연속형으로 코딩되어 있다는 것을 쉽게 알 수 있습니다. JMP로 데이터를 가져올 때 JMP가 숫자를 인식하면 자동으로 이러한 열을 숫자형 연속형으로 코딩합니다. 따라서 이러한 부분을 변경하는 것이 좋습니다. |
| |
데이터 자체도 살펴볼 수 있습니다. 예를 들어 습도를 살펴보면 (데이터를 살펴볼 때 맥락이 매우 중요합니다) 습도는 연속형 데이터라고 생각할 수 있습니다. |
| |
하지만 여기에는 N/A가 있는 필드가 몇 개 있습니다. |
| |
영숫자 데이터가 있거나, 숫자 열에 텍스트 데이터가 있는 경우, JMP로 데이터를 가져올 때 해당 열은 명목형으로 코딩됩니다. 따라서 이 문제는 바로 수정이 필요하다는 것을 알 수 있습니다. |
| |
다른 열도 살펴볼 수 있습니다. 예를 들어 공급업체의 경우 일부 값이 누락된 것을 확인할 수 있습니다. JMP로 데이터를 가져올 때 |
| |
범주형 데이터의 빈 셀은 값이 누락되었음을 알 수 있습니다. 데이터 입력 방식이 일관되지 않은 입력 항목이 몇 개 있는 것을 알 수 있습니다. |
| |
그래서 저는 제 데이터에 잠재적인 문제에 대한 몇 가지 심각한 단서를 얻고 있습니다. |
| |
점들이 다 보이네요. 온도는 연속형 변수인데, 점이 보인다는 건 값이 누락되었다는 뜻입니다. 온도는 제 분석에 정말 중요한 부분이라 문제가 될 수도 있겠네요. |
| |
이를 자연스럽게 확장하면 한 번에 한 변수씩 데이터를 탐색하는 것입니다. 제가 데이터를 처음 살펴볼 때 가장 좋아하는 도구 중 하나는 열 뷰어입니다. 열 뷰어는 선택한 변수에 대한 숫자 요약을 제공합니다. |
| |
값이 누락되면 N개의 누락 열이 생깁니다. 여기서 온도 값 369개 중 265개가 누락된 것을 볼 수 있습니다. 온도가 분석에서 중요하다고 생각한다면, 이 차이는 심각한 수준입니다. |
| |
이상한 값이 나오는지도 확인해 볼 수 있습니다. 예를 들어, 폐기량과 폐기율의 최소값과 최대값 같은 값을 보면 음수 값이 나옵니다. 만약 이것이 불가능하다면 데이터나 데이터 수집 시스템에 문제가 있는 것입니다. |
| |
변수의 잘못된 코딩을 발견하는 것도 꽤 쉽습니다. 예를 들어, 명목상으로 코딩되어야 할 시설과 배치 번호가 평균과 표준 편차를 보고하고 있는 것입니다. |
| |
이를 생각해 볼 수 있는 좋은 방법은 평균 배치 번호나 (부품 번호가 다른 변수) 또는 부품 번호를 물리적으로 구할 수 없다면 이를 연속형 변수가 아닌 명목형 변수로 변경해야 한다는 것입니다. |
| |
분포는 제가 데이터에 익숙해지기 위해 처음 공부하는 분야입니다. |
| |
그리고 분포를 보면, 연속형 데이터가 있다면 데이터의 모양, 중심, 분포를 이해할 수 있을 뿐만 아니라 특이한 값이 있는지도 확인할 수 있습니다. |
| |
범주형 데이터의 경우, 레벨 수를 확인할 수도 있습니다. 예를 들어 고객 수를 확인할 수 있습니다. 고객 수가 중요한 변수이거나 잠재적으로 중요한 변수인 경우, |
| |
고객 번호에 대한 수준이나 값이 많습니다. 데이터를 준비할 때, 이들을 네다섯 개의 버킷으로 합치고, 데이터가 많지 않은 고객에 대해서는 다른 범주로 분류하는 것이 좋을 것 같습니다. |
| |
습도. 열에 N/A가 있는 것의 문제점을 알 수 있습니다. 히스토그램 대신 막대 차트가 나타납니다. |
| |
공급업체 데이터에서 우리가 보고 있던 내용을 쉽게 확인할 수 있습니다. 예를 들어, Cox Inc와 Cox, Anderson은 세 가지 다른 철자로 표기되었고, Hersh도 세 가지 다른 철자로 표기되었습니다. |
| |
속도에 대해, 속도에 대해 60에서 140까지 가는 마운드 분포가 있지만 맨 아래에는 하나 또는 두 개의 값이 있음을 알 수 있습니다. |
| |
거의 0에 가깝습니다. 데이터 입력 오류였을 수도 있지만, 확실히 조사해 봐야 할 부분입니다. |
| |
이를 확장하여 한 번에 두 개의 변수로 데이터를 살펴보는 것도 좋은 방법입니다. 예를 들어 그래프 빌더나 산점도를 활용하는 것입니다. |
| |
그리고 한 번에 두 개의 변수를 살펴보면 패턴을 볼 수 있으며, 두 개 이상의 변수에 걸쳐 나타나는 특이한 패턴을 더 쉽게 찾을 수 있습니다. |
| |
예를 들어, 폐기율과 폐기 건수를 살펴보면 몇 가지 밴드가 보입니다. 데이터 표에 이 패턴을 설명할 수 있는 정보가 있을 수도 있습니다. |
| |
이 경우 밴딩은 서로 다른 배치 크기에 기인합니다. 즉, 이 보라색 밴드는 배치 크기가 5,000인 곳입니다. |
| |
그리고 배치 크기가 클수록 스크랩이 발생할 가능성이 더 큽니다. 배치 크기가 작을 때보다요. 그래서 어느 정도 이해가 될 수도 있지만, 이해가 되지 않는 부분도 있습니다. 여기 아래 두 값은 음수 범위에 있습니다. |
| |
그래서 2차원에서 데이터를 살펴보면 이런 것을 쉽게 볼 수 있습니다. |
| |
열 전환기와 데이터 필터를 사용하여 그래프에 차원을 추가할 수 있습니다. |
| |
이는 또한 잠재적 분석으로 이어지므로 폐기율과 관련이 있을 수 있는 중요할 수 있는 x가 무엇인지 이해하는 데 관심이 있을 수 있습니다. |
| |
동시에 데이터 품질 문제나 잠재적인 문제도 살펴보세요. 폐기율의 경우, 압력과 폐기율 사이에 양의 상관관계가 있는 것으로 보입니다. |
| |
큰 상관관계는 없어 보입니다. 폐기물 발생률과 온도는 거의 일정해서 크게 달라지는 건 없습니다. |
| |
하지만 속도를 보세요. 음의 관계가 있는데, 위쪽에 두 값이 보입니다. 히스토그램에서 본 값과, 눈에 띄는 두 번째 값이 있습니다. |
| |
따라서 60 근처의 이 값은 단순히 이상치일 수도 있지만, 타당한 지점일 수도 있습니다. 0 근처로 떨어진 이 지점이 타당한지 의문이 듭니다. |
| |
데이터 표를 살펴보았습니다. 한 번에 한 변수씩, 그리고 두 변수씩 데이터를 살펴보았는데, 이 모든 것이 데이터 탐색과 잘 맞아떨어져서 분석으로 이어졌습니다. |
| |
이 과정이나 이 발표의 범위를 넘어서는, 우리가 사용할 수 있는 더욱 고급 도구(예: 이상치 탐색, 누락된 데이터 탐색)가 있습니다. |
| |
데이터 분석을 시작하면 추가적인 문제가 발견될 가능성이 높습니다. 예를 들어, 범주형 변수의 범주가 많은 경우 |
| |
회귀 모델에서 상호작용을 적용하려고 하면 JMP에서 이 작업이 불가능하다는 경고를 받게 됩니다. 따라서 데이터 분석을 시작하면 전체 프로세스가 반복적이기 때문에 프로세스 전반에 걸쳐 잠재적인 문제를 발견하게 됩니다. |
| |
중요한 것은 데이터를 살펴볼 때 발생하는 문제를 기록하는 것입니다. 이러한 문제 중 일부는 다음과 같습니다. |
| |
진행하면서 데이터를 수정할 수 있으므로 값을 숨기거나 제외할 수 있고, 데이터를 재구성하거나 재정리할 수도 있지만, 새로운 데이터를 수집해야 한다고 판단할 수도 있습니다. 데이터 자체에 대한 신뢰도를 높이기 위해 실험계획법(DOE)을 수행하는 것이 좋습니다. |
| |
이 분석을 반복할 것이라는 사실을 알고 있거나 다른 누군가가 이 분석을 반복하고 싶어할 것이라는 사실을 알고 있다면, |
| |
그러면 재현성을 확보하기 위해 수행 단계를 정확히 기록해야 합니다. 다른 사람이 결과를 재현할 수도 있고, 나중에 분석을 반복할 수도 있습니다. 자, 이제 조던에게 넘겨드리겠습니다. 조던은 |
| |
재현 가능한 데이터 큐레이션에 대해 이야기해 보겠습니다. |
| 조던 힐러 |
알겠습니다, 고맙습니다, 미아. |
| |
안녕하세요, 저는 조던 힐러입니다. JMP의 시스템 엔지니어입니다. 재현성에 대해 좀 더 자세히 알아보겠습니다. |
| |
귀하의 데이터 큐레이션을 위해. |
| |
미아가 이 아이디어를 아주 잘 소개했지만, 몇 가지 더 자세히 설명해 드리겠습니다. 여기서 중요한 점은 |
| |
분석을 위해 데이터를 준비하는 데 사용하는 모든 큐레이션 단계가 있는데, 제가 보기에 이러한 큐레이션 단계의 세 가지 주요 이점이 있습니다. 첫째는 효율성입니다. 데이터가 변경되어 향후 새로운 데이터에 대해 이러한 큐레이션 단계를 다시 적용해야 하는 경우, |
| |
원클릭 스크립트로 한 번 실행하는 것이 모든 포인트 앤 클릭 작업을 다시 수행하는 것보다 훨씬 효율적입니다. 두 번째 이점은 정확성입니다. 포인트 앤 클릭은 오류가 발생하기 쉬우므로, 스크립트로 만들면 정확한 재현이 보장됩니다. |
| |
마지막으로 문서화가 있는데, 아마 과소평가될 수도 있습니다. 스크립트가 있다면, 그것은 당신이 하는 단계를 문서화합니다. |
| |
나중에 이 프로젝트를 다시 검토하고 "내가 이 데이터를 준비하기 위해 무엇을 했을까?"라는 생각이 들 때 다시 살펴볼 수 있는 빵가루 같은 자료입니다. |
| |
그 스크립트가 있으면 큰 도움이 됩니다. 그래서 오늘은 사례 연구를 살펴보겠습니다. 재현 가능한 데이터 큐레이션 스크립트 중 하나를 생성하는 방법을 보여드리겠습니다. |
| |
포인트 앤 클릭만 사용합니다. 그리고 이를 가능하게 하는 기술은 JMP 16의 새로운 기능입니다. 바로 향상된 로그 기능과 향상된 로그에 포함된 작업 기록 기능입니다. |
| |
그래서 우리가 할 일은, 평소처럼 포인트 앤 클릭 방식으로 데이터 큐레이션 활동을 수행하는 것입니다. 이렇게 하면서, |
| |
우리에게 필요한 스크립트, 컴퓨터 코드(JSL 코드라고 함, JSL은 JMP 스크립팅 언어)가 자동으로 캡처됩니다. |
| |
새롭게 향상된 로그에 추가했습니다. 포인트 앤 클릭 큐레이션이 끝나면 해당 코드를 가져와 저장하기만 하면 됩니다. 기능을 조금 더 강화하기 위해 몇 가지 수정이나 조정이 필요할 수 있지만, 이는 선택 사항입니다. |
| |
좋아요, 이건 여러분이 활용할 수 있는 간단한 팁입니다. 가장 일반적인 데이터 정리 작업 중 일부를 소개합니다. |
| |
그리고 JMP 16에서 어떻게 하면 빵가루 흔적을 남기고, JSL 스크립트를 향상된 로그에 남길 수 있는지에 대한 내용입니다. 행 작업, 열 작업 등을 다룹니다. |
| |
데이터 테이블을 수정하는 방법, 모든 데이터 정리 작업, 그리고 이를 포인트 앤 클릭으로 수행하는 방법에 대해 설명합니다. |
| |
따라서 이는 데이터 정리를 위해 해야 할 모든 일의 전체 목록은 아니며, 향상된 로그에 기록된 모든 내용의 전체 목록도 아닙니다. 하지만 가장 중요한 내용은 여기에 있습니다. |
| |
좋습니다. 그럼 Mia가 소개한 Components 파일을 사용하여 사례 연구를 진행하고, 향상된 log.js를 사용하여 JMP 16에서 데이터 큐레이션 스크립트를 만들어 보겠습니다. |
| |
JMP 16을 사용하고 있습니다. 이 버전은 JMP 16 얼리 어답터 프로그램의 마지막 버전이므로 사전 출시 버전입니다. 하지만 JMP 16의 실제 출시 버전과 매우 유사할 것으로 확신합니다. |
| |
그래서 로그에 도달하려면, |
| |
여기서 보여드리겠습니다. 이전 버전의 JMP 로그에 익숙하신 분들은 조금 다르게 보이실 겁니다. 두 개의 패널로 나뉘어 있는데, |
| |
좋아요, 상단에 메시지 패널, 하단에 코드 패널이 있습니다. 여기서 좀 더 자세히 살펴보겠습니다. 어떤 기능인지 보여드리겠지만, 파일 가져오기나 이 열 삭제 같은 간단한 작업을 한다고 가정했을 때 어떤 모습인지 간단히 보여드리겠습니다. |
| |
내가 수행한 두 단계(데이터 가져오기 및 열 삭제)가 여기 메시지 패널에 나열되어 있는 것을 볼 수 있습니다. |
| |
그리고 재현 가능한 데이터 큐레이션 스크립트에 필요한 JSL 코드는 여기 하단 패널에 있습니다. 좋아요, 그럼 |
| |
JMP 16에서는 정말 흥미로운 점이 하나 있는데, 필요할 때마다 가리키고 클릭하기만 하면 바로 코드를 가져올 수 있다는 점인데, 이건 정말 큰 장점이에요. |
| |
JMP 16에서는 이 새로운 향상된 로그 뷰가 기본적으로 활성화되어 있습니다. 이전 버전의 로그, 즉 간단한 텍스트 로그로 돌아가려면 JMP 환경 설정 섹션에서 설정할 수 있습니다. 새로운 기능이 추가되었습니다. |
| |
로그 섹션을 열고, 원하는 경우 이전 텍스트 보기로 다시 전환할 수 있습니다. JMP 16을 설치하면 기본적으로 향상된 로그가 표시됩니다. 이러한 다른 기능에 대해서는 나중에 사례 연구에서 자세히 다루겠습니다. |
| |
좋아, 그럼 나는 비우겠습니다 |
| |
지금은 빨간색 삼각형에서 로그를 가져오겠습니다. 로그를 지우고 사례 연구를 시작해 보겠습니다. 미아가 공유해 준 Components 데이터를 가져오겠습니다. 이 CSV 파일부터 시작하겠습니다. |
| |
그래서 |
| |
가장 간단한 가져오기는 그냥 드래그해서 실행해 보겠습니다. 아, 이미 다른 버전이 열려 있었거든요. 죄송하지만, 이전 버전을 닫고 시작하겠습니다. |
| |
그리고 로그를 한 번 더 지웁니다. |
| |
좋아요, 간단히 가져오기 |
| |
JMP 창으로 끌어서 놓으면 됩니다. 이제 369개의 배치가 있는 Components A 파일이 생겼습니다. 이제 데이터 정리 작업을 진행해 보겠습니다. |
| |
헤더 그래프입니다. 가장 먼저 보이는 건 시설 열에 FabTech라는 항목 하나, 값 하나만 있다는 겁니다. 그래서 아무런 변화도 없고, 흥미로운 것도 없습니다. 마우스 오른쪽 버튼을 클릭하고 열을 삭제해서 삭제하겠습니다. |
| |
그리고 이는 향상된 로그에서 그대로 포착됩니다. |
| |
좋아요, 또 뭐가 있을까요? 표 끝부분에 있는 이 폐기율 열이 정말 중요해서 표의 앞부분을 보고 싶다고 가정해 봅시다. 네 번째 위치로 옮기겠습니다. |
| |
열 패널에서 드래그해서 고객 번호 바로 뒤로 옮기면 됩니다. 됐습니다. |
| |
Mia는 이 습도 열이 주로 N/A로 인해 수입 시 잘못 표시된다고 언급했습니다. |
| |
문자 변수로 인식되는 알파벳 문자 때문에 문제가 발생합니다. 이 문제를 해결해 보겠습니다. 여기서 마우스 오른쪽 버튼을 클릭하여 열 정보로 이동하겠습니다. |
| |
데이터 유형을 문자에서 숫자로 변경하고, 모델링 유형을 명목에서 연속으로 변경합니다. 확인을 클릭합니다. 여기 로그를 클릭하면 네 단계가 캡처된 것을 확인할 수 있습니다. 계속 진행하겠습니다. |
| |
좋아요, 다음은 뭘까요? 연속형에서 명목형으로 변경해야 할 변수가 몇 개 있습니다. 배치 번호, 부품 번호, 그리고 공정입니다. 이 세 가지 변수를 선택한 상태에서 마우스 오른쪽 버튼을 클릭하고 연속형에서 명목형으로 변경하겠습니다. |
| |
그리고 그 모든 오류는 수정되었습니다. |
| |
그리고 다시, 우리는 그 세 단계가 로그에 기록되어 있는 것을 볼 수 있습니다. |
| |
좋아요, 또 뭐가 있을까요? 이 열, Pressure는 좀 더 보기 좋게 꾸며야 할 것 같아요. 저희 엔지니어들은 이 열 이름을 PSI로 표시하는 걸 선호하거든요. 그래서 이 열을 선택하고 PSI라고 입력해서 이름을 바꾸겠습니다. Tab 키를 눌러서 다른 곳으로 이동하면 됩니다. 이 내용도 로그에 기록됩니다. |
| |
공급업체. 미아가 몇 가지, 철자가 일치하지 않는 부분이 있다고 알려줬어요. 아마 값이 너무 많은 것 같아요. 문자 값을 수정해야 해요. 열에 잘못되거나 일치하지 않는 문자 값이 있을 때는 재코딩 도구를 생각해 보세요. |
| |
재코딩 도구는 이 문제를 해결하는 매우 효율적인 방법입니다. 공급업체를 마우스 오른쪽 버튼으로 클릭하고 재코딩으로 이동하세요. |
| |
이것들을 적절하게 그룹화해 보겠습니다. 빨간색 삼각형 옵션부터 시작하겠습니다. 모든 값을 제목 대문자로 변환해 보겠습니다. |
| |
공백도 잘라서 간격 불일치를 수정해 보겠습니다. 이렇게 하면 이미 몇 가지 문제가 해결되었습니다. 나머지는 모두 직접 수정하겠습니다. Andersons와 Coxes를 그룹화하겠습니다. |
| |
Hershes를 그룹화하세요. Trutna와 Worley는 이미 단일 범주로 옳습니다. 그리고 마지막으로 수정할 것은, 예를 들어 공백이나 누락으로 나열된 항목에 대해서는 명확한 설명을 제공하겠습니다. |
| |
여기에 라벨이 없습니다. |
| |
좋습니다. 그리고 재코딩을 클릭하면, |
| |
우리는 해당 수정 사항을 공급업체 2라는 새로운 열로 만들었습니다. |
| |
1, 2, 3, 4, 5, 6개의 카테고리가 수정되어 축소되었습니다. |
| |
좋은. |
| |
좋아요, 계산해 볼까요? 배치 크기와 폐기된 개수를 사용하여 수율을 계산해 보겠습니다. |
| |
맞아요. 네, 좀 중복되는 내용인 건 알겠습니다. 우리는 이미 스크랩률을 가지고 있고, 수율은 1에서 스크랩률을 뺀 값입니다. 하지만 논의를 위해, |
| |
계산입니다. 그래서 '스크랩된 숫자' 바로 뒤에 '수익률' 열을 삽입하고 싶습니다. 스크랩된 숫자를 강조 표시한 다음 '열' 메뉴로 가서 '새 열'을 선택합니다. |
| |
이걸 '수율'이라고 부르겠습니다. |
| |
그리고 선택된 열 뒤, 삭제된 숫자 뒤에 새로운 열을 삽입하고 수율을 계산하는 공식을 적용해보겠습니다. |
| |
좋은 유닛의 수가 필요합니다. 배치 크기에서 폐기된 유닛 수를 뺀 값입니다. |
| |
그래서 그것은 좋은 단위의 수이고 우리는 그 전체를 다음과 같이 나눌 것입니다. |
| |
배치 크기. |
| |
양품 단위의 수를 배치 크기로 나누면 수율을 계산할 수 있습니다. |
| |
그리고 확인을 클릭하세요. |
| |
우리의 새로운 |
| |
수율 열입니다. 스크랩률에서 1을 뺀 값을 볼 수 있습니다. 좋습니다. 일단 100%를 넘는 수율이 있다는 사실은 일단 무시하겠습니다. |
| |
네, 거의 다 끝났습니다. 몇 가지만 더 수정하면 됩니다. 프로세스가 두 개 있는 걸 확인했는데, 지금은 프로세스 1과 프로세스 2로만 표시되어 있습니다. |
| |
그다지 설명적이지도 않고, 별로 도움이 되지도 않네요. 좀 더 설명적인 라벨을 붙여 봅시다. 공정 1은 생산 공정이라고 부르고, 공정 2는 실험 공정이라고 부르겠습니다. 다시 코딩하는 대신 값 라벨을 붙여 보겠습니다. 열 정보로 들어가 볼게요. |
| |
그리고 1과 2에 값 라벨을 할당하겠습니다. |
| |
이 열의 하나는 생산을 나타냅니다. |
| |
그것을 추가하세요. |
| |
그리고 두 번째는 실험을 나타냅니다. |
| |
그것을 추가하세요. |
| |
확인을 클릭하세요. 좋습니다. 헤더 그래프에는 1과 2가 표시되지만, 데이터 테이블에는 프로덕션과 실험이 표시됩니다. |
| |
좋아요, 스크립트를 저장하기 전에 마지막 단계가 있습니다. 논쟁의 여지를 남기기 위해, 제가 데이터에만 관심이 있다고 가정해 봅시다... 진공이 꺼졌을 때만 분석을 진행하고 싶습니다. |
| |
좋아요, 그럼 데이터를 하위 집합으로 나누고 진공 기능이 꺼진 행만 있는 새 데이터 테이블을 만들겠습니다. 진공 기능이 꺼진 셀 중 하나를 마우스 오른쪽 버튼으로 클릭하면 됩니다. |
| |
그리고 일치하는 셀을 선택합니다. |
| |
이렇게 하면 vacuum이 꺼진 313개 행이 선택됩니다. 이제 테이블 하위 집합으로 이동하겠습니다. |
| |
vac_off라는 이름을 가진 새로운 데이터 테이블을 만듭니다. |
| |
확인을 클릭하세요. |
| |
좋습니다. 이것이 진공이 꺼진 곳의 데이터만 보여주는 313개 행으로 구성된 새로운 데이터 테이블입니다. |
| |
자, 이제 끝입니다. 모든 데이터 큐레이션을 마쳤으니, 이제 로그로 돌아가서 지금까지 수집한 데이터에 대해 좀 더 자세히 알아보겠습니다. |
| |
좋아요, 그 모든 단계와 제가 의도하지 않았던 몇 가지 단계를 여기 로그에 기록했습니다. |
| |
여기 보세요. 각 줄은 우리가 수행하는 단계 중 하나입니다. |
| |
그리고 몇 가지 불필요한 부분도 있는데, 예를 들어 어느 시점에서 행 선택을 지웠어요. 사실 그럴 필요는 없었는데... 스크립트에 넣을 필요는 전혀 없어요. |
| |
선택한 행을 지우는 중이니, 이제 제거해 보겠습니다. 해당 항목을 마우스 오른쪽 버튼으로 클릭하고 '지우기'를 눌러서 제거하겠습니다. 좋습니다. |
| |
좋아요, 메시지는 여기, JSL 코드는 여기. 원점과 결과에 주목해 주세요. 꽤 멋지네요. |
| |
우리가 단계를 밟을 때마다, 포인트 앤 클릭으로 동작을 수행할 때마다, 아시다시피, 그 동작을 수행하는 대상이 있고 그에 따라 결과가 발생합니다. 그것이 원점과 결과입니다. 예를 들어, 기능 열을 삭제했을 때... |
| |
음, 어쩌면 이건 나쁜 예일지도 모르겠네요... 대신 습도에 대한 열 정보를 변경해 봅시다. 원점, 즉 우리가 그 작업을 수행한 것 |
| |
Components A 테이블이 있었는데, 여기 데이터 테이블로 나열되어 있습니다. 마우스를 가져가면 "Components A를 맨 앞으로 가져오기"라고 나오는데, 그걸 클릭하면 Components A 테이블로 이동합니다. 아주 좋습니다. |
| |
그 결과, 습도 열에 다음과 같은 작업을 했습니다. 습도를 변경했습니다. 데이터 유형을 숫자형으로, 모델링 유형을 연속형으로 변경했습니다. 여기 아래를 보세요. |
| |
여기를 클릭하고 습도 열로 이동하면... 강조 표시되고 자동으로 선택됩니다. JMP가 습도 열을 자동으로 선택해 줍니다. |
| |
모든 곳에 녹색을 적용했지만, 마지막 결과 하나만 파란색으로 표시했습니다. 이는 여러 데이터 테이블에서 수행한 활동을 추적하는 데 도움이 됩니다. 이 모든 활동은 Components A 데이터 테이블에서 수행했습니다. |
| |
마지막 활동에서 Components A 데이터 테이블에 하위 집합을 적용했는데, 그 결과 vac_off라는 새 데이터 테이블이 만들어졌습니다. vac_off는 파란색으로 표시되어 있습니다. 네, 이 색상들을 사용하면 작업 내용을 쉽게 파악할 수 있습니다. |
| |
좋습니다. 여기 로그에서 보여드리고 싶은 마지막 기능은... 바로 그것입니다. |
| |
매우 긴 일련의 단계가 있고 그중 하나만 찾아야 할 때, 이 필터 상자를 사용하면 도움이 됩니다. 예를 들어 하위 집합을 찾고 싶다고 가정해 보겠습니다. 여기 있습니다. 하위 집합 데이터 테이블을 찾았으니, 필요한 코드로 바로 이동할 수 있습니다. |
| |
좋아요, 이게... 이게 필요한 전부입니다. 데이터 큐레이션 단계가 캡처되었습니다. 재현 가능한 데이터 큐레이션 스크립트를 만들려면 빨간색 삼각형으로 이동하여 새 스크립트 창에 스크립트를 저장하기만 하면 됩니다. |
| |
가져오기 단계, 열 삭제 단계, 폐기율 이동 단계. 이 모든 단계가 스크립트에 포함되어 있습니다. |
| |
스크립트를 읽는 데 도움이 되는 구문 색상이 있고, 각 단계에서 무엇을 하고 있었는지 정확히 알려주는 유용한 주석도 있습니다. |
| |
좋아요, 이게 전부입니다. 필요한 건 이게 전부고, 이걸 저장하겠습니다. 데스크톱에 '가져오기 및 정리'라는 이름으로 저장하겠습니다... '가져오기 및 구성 요소 관리'라고 부르겠습니다. |
| |
네, 이게 바로 재현 가능한 데이터 큐레이션 스크립트입니다. JMP 홈 창으로 돌아가서 새 스크립트를 제외한 모든 것을 닫으면, |
| |
데이터 큐레이션 단계를 다시 실행해야 하는 경우 다음과 같이 합니다. 방금 스크립트 파일을 열었고, 스크립트 실행 버튼을 클릭하면 실행할 수 있습니다. 데이터를 열고, 모든 정리 작업을 수행하고, 하위 집합을 생성하여 313개 행의 새 데이터 파일을 만듭니다. |
| |
이제 새로운 데이터로 이를 다시 실행해야 한다고 가정해 보겠습니다. |
| |
Components 파일의 다른 버전이 있습니다. Components B라고 합니다. 행이 50개 더 있어서 369개 행 대신 419개 행이 됩니다. 50개의 배치에 대해 같은 프로세스를 추가로 실행해서 데이터가 더 많아졌다고 가정해 보겠습니다. |
| |
이름이 Components B이고, 이 스크립트를 Components B에서 실행하고 싶습니다. 그런데 스크립트 전체에서 Components A를 여러 번 호출하는 것을 보실 수 있습니다. 따라서 Components A를 찾아서 Components B로 바꿔야 합니다. 자, 시작해 볼까요? "편집"을 클릭합니다. |
| |
찾다. |
| |
구성 요소 A를 찾아 구성 요소 B로 바꿉니다. 모두 바꿉니다. 15개의 항목이 바뀌었습니다. |
| |
여기와 여기에서 볼 수 있습니다. |
| |
이제 스크립트를 다시 실행하면 새 버전의 데이터가 표시됩니다. 행이 더 많아진 것을 볼 수 있는데, 실제로는 그렇지 않았습니다. 전에는 313개였는데, 지금은 358개입니다. |
| |
좋습니다. 새로운 데이터에 대해 실행할 수 있는 재현 가능한 데이터 큐레이션 스크립트입니다. |
| |
좋아요, 다시 한번 그 치트 시트를 소개합니다. 이 치트 시트는 강연 자료와 함께 저장되어 있으니, 직접 찾아보실 수 있습니다. 데이터 큐레이션을 포인트 앤 클릭 방식으로 진행하고, 재생 및 재현 가능한 멋진 데이터 큐레이션 스크립트를 만드는 방법을 알려드립니다. |
| |
우리가 만든 스크립트는 코딩을 전혀 요구하지 않았지만, 여러분이 사용할 수 있는 몇 가지 팁, 즉 네 가지 팁만 알려드리겠습니다. |
| |
스크립트를 조금 더 강화하고 싶습니다. 첫 번째 팁은 스크립트 시작 부분에 이 줄을 삽입하는 것입니다. 모든 스크립팅에 도움이 될 것입니다. 기본적으로 여기에 줄 이름을 삽입하기만 하면 됩니다. |
| |
이는 스크립트가 다른 스크립트와 상호 작용하는 것을 방지하기 위한 것입니다. 이를 네임스페이스 충돌이라고 하는데, 무슨 역할을 하는지 굳이 알 필요 없이 그냥 실행하면 됩니다. 좋은 방법이고, 좋은 프로그래밍 습관입니다. |
| |
두 번째 팁은 JSL 표현식 사이에 세미콜론이 있는지 확인하는 것입니다. |
| |
향상된 로그 기능이 자동으로 이 작업을 처리합니다. 모든 단계 사이에 필요한 세미콜론을 삽입합니다. 하지만 직접 수정하는 경우 세미콜론이 제대로 삽입되었는지 확인해야 합니다. 참고로, 유용한 정보입니다. |
| |
댓글을 추가하세요. |
| |
댓글은 프로그램에 메모를 남기고, 프로그램을 망치지 않도록 메모를 남기는 방법입니다. |
| |
JSL 인터프리터가 해석하지 않는 부분을 프로그램에 남겨두세요. 그리고 강화 로그에서 남겨둔 메모도 있습니다... 강화 로그의 액션 기록도 남겨두었지만, 원한다면 수정하거나 추가할 수 있습니다. 자, 이제 주석에 대한 주요 내용을 알려드리겠습니다. |
| |
일반적인 형식은 슬래시 두 개이고, 슬래시 뒤에 오는 모든 내용은 주석입니다. 따라서 줄의 시작이나 끝에 주석을 추가할 수 있습니다. 인터프리터는 이 X = 9 JSL 표현식을 실행하지만, 슬래시 뒤에 오는 모든 내용은 무시합니다. |
| |
주석이 길다면, 처음에 /*, 끝에 */를 사용하는 형식을 사용할 수 있습니다. 이렇게 하면 주석이 닫힙니다. 주석은 메모를 남기는 데 유용할 뿐만 아니라 JSL 스크립트를 디버깅하는 데에도 유용합니다. |
| |
코드 한 줄을 삭제하고 실행되지 않게 하려면, 두 개의 슬래시를 앞에 붙이면 되고, 더 많은 코드에 적용하려면 이 형식을 사용하면 됩니다. 주석 사용법을 알아두면 유용하죠. |
| |
마지막으로 알려드릴 팁은 데이터 테이블 참조를 일반화하는 것입니다. Components B라는 새 파일 이름에서 스크립트를 실행하기 위해 검색하고 바꿔야 했던 것을 기억하시나요? |
| |
스크립트에서 데이터 테이블의 인스턴스를 15개나 변경해야 했습니다. 15번씩 변경하는 대신 한 번에 한 번만 변경하면 된다면 얼마나 좋을까요? 그러면 스크립트를 더욱 강력하게 만들 수 있을 겁니다. |
| |
데이터 테이블 참조를 일반화하는 것입니다. 이름을 사용하는 대신 JSL 변수를 사용하여 테이블 이름을 저장합니다. 제가 말씀드릴 내용은 다음과 같습니다. 예를 들어 보겠습니다. |
| |
왼쪽에는 향상된 로그에서 작업 기록을 통해 생성된 코드가 있습니다. |
| |
빅 클래스 데이터 테이블을 엽니다. 연령 열에서 작업을 진행하고, 이를 연속형 모델링 유형으로 변경한 후 새로운 계산 열을 생성합니다. |
| |
열 때, 우리는 그것을 사용하여 age 열에서 변경을 수행하고, 여기에 그것을 사용합니다. |
| |
매우 간단합니다. 이것을 더욱 견고하고 일반화하려면 무엇을 해야 할까요? |
| |
세 가지 변경 사항이 필요합니다. |
| |
여기서 첫 번째 변경 사항은 이름을 지정하는 것입니다. 저는 BC를 선택했지만, 여러분은 원하는 대로 선택하시면 됩니다. DT는 자주 보게 될 겁니다. |
| |
따라서 스크립트의 나머지 부분에서는 BC라는 이름으로 Big Class 데이터 테이블을 참조하게 됩니다. 따라서 age를 변경하고 싶을 때는 |
| |
연령은 BC 데이터 테이블과 해당 데이터 테이블의 연령 열을 의미합니다. |
| |
여기 아래에서는 빅 클래스 데이터 테이블에 메시지를 보내고 있는데, 이것이 바로 이중 화살표 구문의 의미입니다. 이 구문을 일반화해서 새 이름을 사용해서 메시지를 보내도록 하는 겁니다. |
| |
데이터 테이블에. 이제 Big Class가 아닌 다른 이름의 새 데이터 테이블에 이 스크립트를 실행해야 하는 경우, 변경해야 할 사항은 다음과 같습니다. 스크립트에서 한 곳만 변경하면 됩니다. 찾기 및 바꾸기를 할 필요는 없습니다. |
| |
네 가지 팁을 살펴본 후, 큐레이션 스크립트를 한 단계 더 발전시킬 준비가 되었다면 몇 가지 단계를 안내해 드리겠습니다. 파일 선택기를 추가할 수도 있습니다. 코딩이 많이 필요하지 않습니다. |
| |
누군가가 이 스크립트를 실행할 때 스크립트를 수동으로 편집하지 않고도 실행하려는 파일로 바로 이동할 수 있도록 변경합니다. |
| |
좋은 아이디어네요. 스크립트를 조직 내 다른 사용자에게 배포하려면 JMP 추가 기능으로 묶어서 배포할 수 있습니다. 그러면 사용자가 JMP 메뉴에서 스크립트를 선택하기만 하면 바로 실행할 수 있습니다. |
| |
정말 편리합니다. 마지막으로, 네트워크 어딘가에 보관된 마스터 JMP 데이터 테이블을 업데이트하기 위해 이 큐레이션 스크립트를 일정에 따라 실행해야 하는 경우, Windows의 작업 스케줄러나 Mac OS의 자동화 기능을 사용하여 일정에 따라 실행할 수 있습니다. |
| |
요약하자면, 미아는 데이터를 탐색하고 반복하여 문제를 식별함으로써 데이터 큐레이션을 수행하는 방법에 대해 이야기했습니다. |
| |
해당 단계를 자동화하면 재현성, 효율성, 정확성, 작업 문서화라는 이점을 얻을 수 있습니다. |
| |
JMP 16에서 이를 수행하려면 평소처럼 가리키고 클릭하기만 하면 향상된 로그에서 발생하는 작업 기록에 데이터 큐레이션 단계가 캡처됩니다. |
| |
마지막으로, 향상된 로그에서 해당 JSL 코드를 내보내고 수정하여 재현 가능한 데이터 큐레이션 스크립트를 만들 수 있습니다. 이것으로 강연을 마치겠습니다. 시간 내주셔서 감사합니다. |