스피커 | 성적 증명서 |
| 루카스 | 좋아요, 와서 제 강연을 들어주신 모든 분들께 감사드립니다. 내 이름은 루카스 베벌린이에요. 저는 인텔의 통계학자입니다. |
| 그리고 오늘은 JMP를 사용하여 다양한 환경의 모델을 비교하는 방법에 대해 이야기하겠습니다. |
| 좋아요, 현재 JMP 15 Pro는 JMP가 보유한 최신이자 최고의 제품입니다. 모델을 적합시키려는 경우 JMP 15 Pro에는 이를 수행할 수 있는 다양한 도구가 있습니다. |
| Fit Model 플랫폼이 있습니다. 신경망 분할 플랫폼에는 신경망 플랫폼이 있습니다. 분류 및 회귀 트리를 원하는 경우. 비선형 모델링을 위한 비선형 플랫폼 외에 몇 가지가 더 있습니다. |
| 그래서 JMP 15 내에서는 12~13년에 나온 것 같지만 이 모델 비교 플랫폼은 비교에 사용할 수 있는 매우 멋진 도구입니다. |
| 모델은 JMP 내의 다양한 플랫폼에 적합합니다. 따라서 트리와 신경망이 있는데 어느 것이 더 나은지 확신할 수 없는 경우입니다. 좋아, 둘 사이를 앞뒤로 뒤집을 수 있습니다. 하지만 이제 이것으로, |
| 같은 화면에 모든 것이 있습니다. 매우 빠르고 쉽게 말할 수 있습니다. 이것이 저것보다 나은지 등등. |
| 즉, JMP는 많은 것에 적합할 수 있지만 안타깝게도 모든 것에 적합할 수는 없습니다. 따라서 맞지 않는 몇 가지 아이디어를 몇 가지만 제시해 보세요. 예를 들어, |
| 기계 학습과 AI를 많이 수행하는 것은 일반적으로 많은 활성화 기능이 필요하거나 많은 숨겨진 레이어 노드가 필요한 자동 인코더 또는 컨볼루션 신경망과 같은 것에 적합할 수 있습니다. |
| JMP에서 제공하는 것 이외의 다른 활성화 기능이 있으므로 JMP는 JMP 내에서 많은 기능을 수행할 수 없습니다. |
| 또 다른 하나는 투영 추적 회귀(Projection Pursuit Regression)라는 것입니다. 또 다른 하나는 다변량 적응형 회귀 스플라인이라고 합니다. 불행하게도 JMP가 할 수 없는 일이 몇 가지 있습니다. |
| R, Python, MATLAB. |
| 그 밖에도 몇 가지가 더 있는데, |
| 하지만 저는 이 세 가지에만 집중하겠습니다. 이제 여기서 논의할 아이디어는 C++, Java, Rust 또는 다른 언어에 적용하고 싶을 것입니다. |
| 생각해보면, 당신은 그것들을 많이 사용할 수 있을 것입니다. |
| 따라서 앞서 말했듯이 모델 비교 플랫폼을 사용하여 다른 소프트웨어와도 비교할 수 있습니다. 그럼 무엇이 필요할까요? |
| 따라서 필요한 두 가지 중요한 것은 모델을 맞추기 위해 사용하는 소프트웨어의 모델 예측입니다. |
| 그리고 일반적으로 모델 피팅을 수행할 때, 특히 대규모 모델의 경우 데이터를 훈련 검증 및/또는 테스트 세트로 분할할 수 있습니다. |
| 훈련, 검증, 테스트 등 모든 소프트웨어에 알려주는 것이 필요할 것입니다. 왜냐하면 적합성을 비교할 때 일관성을 원하기 때문입니다. |
| 좋습니다. 제가 이 강연에서 집중하기 위해 R, Python 및 MATLAB을 선택한 가장 큰 이유는 JMP와 스크립팅 언어가 실제로 자체 R 세션을 생성하고 여기에서 코드를 실행할 수 있다는 것입니다. |
| 따라서 여기 이 그림은 선형 회귀 모델을 일부 출력에 맞추려는 경우 매우 빠르게 표시됩니다. |
| 보스턴 주택 데이터 세트로 이동합니다. 나중에 해당 데이터 세트를 사용하여 더 많은 작업을 수행하겠습니다. |
| 그러나 R에서 선형 회귀 모델을 아주 빠르게 맞추고 예측 값을 뱉어내고 싶다면 그렇게 할 수 있습니다. 물론 JMP를 사용할 수도 있습니다. 하지만 아주 간단한 아이디어를 드리고자 합니다. |
| 그래서, |
| 한 가지 주목할 점은 R 3.6.3을 사용하고 있지만 JMP는 2.9보다 큰 버전이면 무엇이든 처리할 수 있다는 것입니다. |
| 그런 다음 마찬가지로 Python에서도 자신만의 Python 세션을 호출할 수 있습니다. 여기 그림은 제가 Python으로 선형 회귀에 적합하다는 것을 보여줍니다. 여기에서 모든 코드 줄을 단계별로 진행하지는 않지만 기본적인 아이디어는 얻을 수 있습니다. |
| 물론 Python을 사용하는 경우 Python 3.8.5의 최신 버전이라는 점에서 약간 주의해야 합니다. 하지만 Anaconda를 사용하여 설치하는 경우 JMP가 3.6보다 크면 통신하는 데 문제가 있으므로 |
| 이 데모에서는 3.6.5를 사용하고 있기 때문입니다. |
| 그리고 마지막으로 자체 MATLAB 세션도 만들 수 있습니다. |
| 그래서 저는 MATLAB 2019b를 사용하고 있습니다. 그러나 기본적으로 MATLAB 버전이 지난 7~8년 내에 출시되었다면 문제 없이 작동할 것입니다. |
| 좋습니다. 그러면 모든 것을 어떻게 하나로 묶을까요? 그래서 우리가 여기서 살펴보게 될 일종의 4단계 프로세스가 있습니다. 먼저, 우리는 각 모델을 적합하게 만들고 싶습니다. 따라서 우리는 각 소프트웨어에 데이터와 각 관측치가 있는 세트를 보낼 것입니다. |
| 모형을 적합하게 만든 후에는 해당 적합성과 예측을 출력하고 이를 JMP가 볼 수 있는 데이터 테이블에 추가하려고 합니다. |
| 따라서 제가 경고하는 것은 모델을 어디에 적합시켰는지 또는 모델을 어떻게 적합했는지 알 수 있는 항목의 이름을 지정하라는 것입니다. 두 가지 모두 나타나는 예가 있습니다. |
| 따라서 3단계에서는 모델에 따라 일부 모델 진단을 살펴보는 것이 좋습니다. 모델이 숫자에 따라 잘 맞는 것처럼 보인다고 해서 예를 들어 잔차 그림을 보면 |
| 가장 큰 관심 분야가 잘 맞지 않습니다. |
| 아니면 잔차 등에 문제가 있는 경우도 있습니다. 그래서 우리는 그런 종류의 것들을 출력하는 방법도 보여줄 것입니다. |
| 그런 다음 마지막으로 모델 비교 플랫폼을 사용하여 모든 것을 하나의 큰 테이블로 가져와서 앞뒤로 뒤집는 것보다 훨씬 쉽게 숫자를 비교할 것입니다. |
| 좋습니다. 이제 단계를 좀 더 자세히 살펴보겠습니다. 따라서 모델 피팅을 수행하는 첫 번째 단계에는 기본적으로 두 가지 옵션이 있습니다. 먼저 JSL을 통해 JMP에 선택한 소프트웨어를 호출하도록 지시할 수 있습니다. |
| 이에 맞는 데이터와 코드를 보냅니다. 그래서 사실 저는 잠시 이 일에서 벗어나 정확히 그 일을 하려고 합니다. |
| 여기 보시다시피 실제로 R을 호출하기 위한 코드가 있습니다. |
| 그런 다음 완료되면 Python을 호출하고 완료되면 MATLAB을 호출한 다음 모든 것을 하나로 묶습니다. 이제 여기에 있는 코드에 대해 조금 더 설명하겠습니다. 실행하는 데는 3~4분 정도 걸릴 것입니다. 그래서 지금 그렇게 하려고 합니다. |
| 그리고 준비가 되면 그에게 다시 돌아올 것입니다. |
| 따라서 다른 옵션은 검증을 통해 데이터 세트를 만드는 것입니다. 글쎄, 우리는 얼마나 많은지에 따라 검증 열 및/또는 테스트 열을 사용하여 데이터 세트를 만듭니다. |
| 세트가 데이터를 분할하고 있었습니다. 우리는 실행해야 하는 모든 소프트웨어에서 실행되도록 예정되어 있으며, 물론 필요한 모든 소프트웨어에서 출력됩니다. |
| 물론 몇 가지 경고가 있습니다. 사용하고 있는 소프트웨어가 실제로 모델에 맞는 데 필요한 기능을 갖추고 있는지 확인하십시오. |
| 모델을 사물과 비교하기 전에 피팅이 완료되었는지 확인하세요. |
| 출력 형식이 JMP에서 실제로 읽을 수 있는 형식인지 확인하세요. 다행히 JMP는 꽤 많은 내용을 읽을 수 있으므로 이는 네 가지 경고 중 가장 큰 내용은 아닙니다. |
| 하지만 앞서 경고한 것처럼 각 모델의 예측이 원본 데이터 세트의 올바른 관찰과 일치하는지 확인하세요. |
| 이것이 훈련이라면, 훈련 관찰이라면 JMP에 맞추면, |
| 어떤 소프트웨어를 사용하든 이를 적용할 때 훈련 관찰이 되는 것이 좋습니다. JMP에서의 검증이라면 다른 곳에서도 검증됩니다. JMP에서의 테스트이고 다른 곳에서도 테스트될 것입니다. |
| 따라서 모든 것이 올바르게 일치하는지 확인하세요. 우리가 마지막으로 확인하고 싶은 것은 테스트 세트를 보고 "아, 이게 훨씬 더 적합해"라고 말하는 것이기 때문입니다. 글쎄, 그것은 그에 맞는 관측치가 서로 다르게 가중치를 부여받았고 실제 특이치가 없었기 때문입니다. 그러면 결국 생각이 왜곡되는 것입니다. 그래서 |
| 주의 사항이 있습니다. 실례합니다. 주의 사항이 있습니다. |
| 좋아요. 제가 언급했듯이 현재 백그라운드에서 실행 중인 예가 있습니다. 그래서 저는 제가 하고 있는 일에 대해 조금 더 자세히 설명하고 싶습니다. 그래서 |
| 저는 R, Python, MATLAB에 신경망을 적용할 예정입니다. 따라서 이를 수행하려면 R 내에서 기본 설치에 포함된 두 개의 패키지, 즉 Keras 패키지와 Tensorflow 패키지를 R에 설치해야 합니다. |
| numpy, 팬더, matplotlib. |
| 일부 계산을 꽤 쉽게 수행하기에는 너무 복잡합니다. 팬더, 데이터를 처리하는 팬더...일부 데이터 조작; matplotlib는 일부 플롯을 생성하는 데 매우 간단해야 합니다. 그런 다음 MATLAB에서는 딥러닝 도구 상자를 사용하는데, 액세스 권한이 있는지 여부는 알 수 없습니다. |
| 좋아요. 따라서 2단계에서는 JMP 데이터 테이블에 예측을 추가하려고 합니다. 따라서 JMP를 사용하여 소프트웨어를 호출하는 경우 JSL 코드를 사용하여 해당 예측을 검색하고 이를 데이터 테이블에 추가한 다음 나중에 비교할 수 있습니다. |
| 따라서 할 수 있는 다른 방법은 소프트웨어가 자체적으로 실행되어 출력을 저장하는 것입니다. JMP에게 신속하게 출력 파일을 가져온 다음 몇 가지 조작을 수행하여 예측을 가지고 있는 데이터 테이블에 가져오라고 알릴 수 있습니다. 결과를 저장합니다. |
| 이제 진단 플롯도 읽을 수 있습니다. 이 경우 일반적으로 수행할 작업은 해당 진단 플롯을 그래픽 파일로 저장하는 것입니다. 그래서 저는 PNG 파일이 될 것입니다. 하지만 물론, 어느 쪽이든 |
| 사용할 수 있는 그래픽. 이제 JMP가 모든 항목을 처리할 수는 없지만 jpg와 일부를 매핑하는 PNG에는 일반적인 항목이 포함되어 있다고 생각합니다. |
| 그래서 두 번째 참고 사항은 모델 비교 플랫폼에 이것을 사용하는 것입니다. 그러나 귀하에게 적합한 모델이 무엇인지, 어디에 적합한지 식별하는 데 도움이 됩니다. |
| 일반적으로 추가하는 각 예측 열에 대해 다음 속성을 추가하는 것이 좋습니다. 여기에서 볼 수 있듯이 관심 있는 데이터 테이블을 보내고 있는데 이 속성을 예측이라고 합니다. |
| 그래서 여기에는 사물을 예측하는 데 사용하는 것이 무엇이든 있습니다(이제 여기 가치는 아마도 최선의 선택이 아닐 것입니다). |
| 하지만 이 제작자의 경우 이 모델을 실제로 만드는 데 어떤 소프트웨어를 사용했는지 알 수 있습니다. 그래서 여기서는 R을 사용했습니다. R이 표시되어 실제로 화면에 맞도록 표시됩니다. Python과 MATLAB은 조금 길었지만 여기에 원하는 문자열을 넣을 수 있습니다. |
| 곧 여기에서 코드를 좀 더 자세히 살펴볼 때 해당 내용을 확인하게 될 것입니다. |
| 그래서 나중에 R 내에서 여러 모델을 맞출 것이기 때문에 이것은 유용합니다. 따라서 열 이름을 올바르게 선택하고 R이 생성한 열 이름이 여러 개 있는 경우에도 실제로 보고 있는 모델이 무엇인지 알 수 있습니다. |
| 좋아요, 이것이 일반적인 모델 비교 대화 상자의 모습입니다. |
| 그래서 제가 주목하고 싶은 점은 모든 모델 피팅이 끝난 후 점을 찍고 클릭하면 대략적으로 이런 모습이 된다는 것입니다. 따라서 여러 예측 변수가 있음을 알 수 있습니다. 그래서 저는 MATLAB, Python, R을 위한 신경망을 가지고 있습니다. |
| 다양한 예측 형태; 저는 몇 가지 사항을 충족하기 위해 JMP를 사용했습니다. |
| 이제 사람들이 하는 일은 종종 이 유효성 검사 열을 그룹으로 배치하는 것입니다. |
| 훈련 검증과 테스트를 그룹화합니다. 실제로 여기 By 문에 출력을 추가하면 출력이 조금 더 좋아집니다. 그래서 여기서는 잠시 후에 보여드리겠습니다. 하지만 둘 중 하나를 넣을 수 있습니다. |
| 하지만 나는 길고 짧은 출력이 더 나은 방식을 좋아합니다. |
| 그래서 이것이 지금 확실히 알 수 있는 가장 큰 이유입니다. 이 모든 것이 훈련입니다. |
| 이것들은 모두 검증(헤더로 볼 수 없음)이고 모두 테스트입니다. |
| 유효성 검사를 그룹 변수로 사용하면 21개의 항목이 포함된 하나의 큰 테이블이 생성됩니다. 이제 추가 열이 있습니다. Training Validation Test 라고 나오네요. 제 경우에는 012 인데 |
| 이렇게 단어를 사용하면 어렵게 생각할 필요가 없습니다. 012가 무엇을 의미하는지 누구에게도 설명할 필요가 없습니다. 그래서 제가 그런 선택을 하게 된 것입니다. |
| 좋습니다. 예를 들어 여기서는 전형적인 보스턴 주택 데이터 세트를 사용하겠습니다. 이제 이것이 JMP에 포함되었습니다. 그래서 프레젠테이션에 파일로 포함하지 않은 이유도 있습니다. JMP가 있다면 이미 갖고 있는 것이기 때문입니다. |
| 그래서 해리슨과 루빈펠드는 주택의 중간 가치에 대한 몇 가지 예측 변수를 가지고 있었습니다. 예를 들어 1인당 범죄율, 도시당 비소매업 면적 비율, |
| 구입하려는 물건의 평균 방 수, 마을별 학생 대 교사 비율(따라서 교사가 많고 학생이 많지 않다면 일반적으로 더 나은 교육을 의미하는 것은 많은 사람들이 |
| 발견) 및 기타 여러 가지. 여기서는 13가지를 모두 다루려고 하지는 않을 것입니다. |
| 좋습니다. 여기서 제가 본 모델에 대한 배경 지식을 조금 말씀드리겠습니다. 그런 다음 JSL 코드를 자세히 살펴보고 모든 것을 어떻게 맞추는지 살펴보겠습니다. |
| 그래서 몇몇 모델을 살펴봤습니다. 먼저, 전형적인 선형 회귀 모델입니다. 여기에서는 간단한 선형 회귀를 볼 수 있습니다. 저는 세율에 따라 중앙값을 맞추었습니다. |
| 하지만 물론 다중 선형 회귀를 사용하여 모두 사용할 것입니다. |
| 그래서, |
| 그러나 13개의 서로 다른 예측 변수가 있고 그 중 일부가 서로 상관 관계가 있을 수 있다는 것을 알고 있으므로 몇 가지 다른 유형의 회귀 분석을 살펴볼 가치가 있다고 결정했습니다. |
| 그 중 하나가 브리지 회귀(Bridge Regression)라는 것입니다. 그래서 실제로 모든 것은 기본적으로 다음과 같은 제약 조건이 추가된 선형 회귀입니다. |
| 내 매개변수의 제곱 값은 일부 상수보다 클 수 없습니다. |
| 저는... 실제로 이것을 람다의 일부 값이 C의 일부 값과 일치하는 최적화 문제로 다시 작성할 수 있다는 것이 밝혀졌습니다. |
| 그리고 저는 여러분이 보아오던 일반적인 최소 제곱법과 달리 이 추가 벌점 항을 사용하여 이를 최소화하려고 합니다. |
| 이제 이것을 수축 방법이라고 합니다. 왜냐하면 당연히 이것을 점점 더 작게 만들면 이 모든 것을 0에 점점 더 가깝게 밀어넣기 때문입니다. 물론, 얼마나 제한적이기를 원하는지 생각해 볼 필요가 있습니다. |
| 이제 수축으로 인해 모든 사람이 천천히 0을 향해 나아가게 됩니다. 그러나 다른 유형의 처벌 용어를 사용하면 실제로 일부 용어를 완전히 제거할 수 있습니다. |
| 그리고 올가미라는 것을 사용할 수 있습니다. 여기의 제약은 매개변수 추정값의 제곱 대신에 매개변수 추정값의 절대값의 합을 취하는 것입니다. |
| 그리고 그 결과, 실제로 일어날 일은 매우 약한 사람들이 실제로 매개변수 추정치를 0으로 설정한다는 것입니다. |
| 중요하지 않은 용어는 제거하세요. |
| 따라서 올가미 및 능선 회귀가 수행하는 작업에 대해 약간의 시각적 정보를 제공합니다. 따라서 능선 회귀의 경우 여기 원은 페널티 항을 나타냅니다. |
| 그리고 여기서 우리는 매개변수 공간을 보고 있습니다. 따라서 실제 최소 제곱 추정값은 여기에 있습니다. 추가 제약이 있기 때문에 우리는 거기에 도달하지 못했습니다. |
| 그래서 결국 우리는 어디가...기본적으로 원에 닿는 최소값을 어디서 얻을 수 있는지 알아냅니다. 이것이 바로 능선 회귀 매개변수 추정치입니다. |
| 올가미의 경우 그림과 비슷하지만 절대값으로 보면 원이 아니라 다이아몬드에 가깝습니다. 이제 이것은 2차원입니다. 물론 우리는 초구체와 모든 모양에 대해 알아볼 것입니다. |
| 하지만 여기를 보시면 다이아몬드 끝 부분에 바로 닿는 것을 알 수 있습니다. 따라서 이 경우 베타 1은 실제로 0입니다. 이것이 용어를 제거하는 방법입니다. |
| 자, 우리가 살펴볼 또 다른 것은 회귀 트리(regression tree)라는 것입니다. 이제 JMP는 파티션 플랫폼을 사용하여 이러한 작업을 수행합니다. 그래서 이것이 무엇을 보여주는지에 대한 매우 간단한 데모를 제공하기 위해, 그 안에 모든 데이터가 있습니다. |
| 그래서 제가 스스로에게 물어볼 첫 번째 질문은 집에 방이 몇 개 있느냐는 것입니다. 방의 0.943개를 가질 수 없다는 것을 알고 있으므로 기본적으로 |
| 방이 6개 이하입니다. 그러니 나무의 이 부분으로 내려오세요. 나무의 이 부분으로 내려오지 맙시다. 이제 방이 7개 이상이면 즉시 중앙값을 예측하게 됩니다. |
| 값은 37이 됩니다. 수만 달러 단위이므로 370,000달러를 벌어보세요. |
| 7보다 작다면 제가 물어본 다음 질문은 'lstat의 크기는 얼마나 됩니까?'입니다. |
| 따라서 그것이 14.43보다 크거나 같으면 이 노드를 보면 갑자기 내 주택 중앙값이 약 15만 달러로 추정되고 여기로 오면 약 23만 3천 달러가 될 것입니다. |
| 따라서 회귀 트리가 실제로 수행하는 작업은 입력 공간을 여러 영역으로 분할하는 것입니다. 그리고 우리는 해당 영역 내의 모든 값에 대해 동일한 예측을 제공합니다. |
| 여기서 볼 수 있듯이 분할했습니다. 이제 이 경우에는 그리기가 더 쉽기 때문에 2차원을 사용합니다. |
| 여기 이 트리를 볼 수 있습니다. 여기서 처음으로 x1을 살펴보겠습니다. 이제 여기 x2를 보고 x1에 대해 또 다른 질문을 하고 x2에 대해 또 다른 질문을 하세요. 이것이 제가 입력 공간을 분할하는 방식으로 끝나는 것입니다. |
| 이제 이 5개 각각은 예측 값을 가지게 됩니다. 그리고 그것은 본질적으로 이것이 보이는 모습입니다. 나는 이것을 위에서 바라본다. 나는 정확히 이것을 얻을 것이다. 하지만 여기에서 볼 수 있듯이 |
| 다섯 가지 영역 중 어느 영역이 맞는지에 따라 예측이 조금씩 다릅니다. |
| 이제 이 중 하나를 정확히 맞추는 방법에 대해 너무 자세히 설명하지는 않겠습니다. |
| James, Witten, Tibshirani 및 Friedman이 약간의 정보를 제공합니다. 레오 ??? 당신이 거기를 볼 수 있도록 그것에 중요한 책을 썼습니다. |
| 다음으로는 요즘 머신러닝 등에서 많이 사용되고 있는 신경망에 대해 말씀드리겠습니다. 그래서 이런 종류의 신경망이 어떻게 생겼는지 시각적으로 보여줍니다. 따라서 여기서 이 시각적 개체는 전달할 때 5개와 13개의 입력을 사용합니다. |
| 이것들...이 숨겨진 레이어에. 그리고 이들 각각은 활성화 함수를 통해 변환됩니다. |
| 그리고 각 활성화 함수에 대해 출력을 얻고 우리는 다음을 사용합니다... |
| 종종 중간값을 예측하기 위해 이러한 출력의 선형 회귀를 사용합니다. |
| 알았어, 그러니까 |
| 실제로 신경망은 결국 비선형 모델입니다. 실제로 신경망이라고 불리는 이유는 일반적으로 뉴런이 인간 두뇌 내에서 작동하는 것으로 보는 방식을 표현하기 때문입니다. |
| 따라서 각 입력은 숨겨진 레이어의 노드로 전달될 수 있습니다. 히든 레이어에서는 입력이 활성화 함수를 통해 푸시되고 일부 출력이 계산되며 각 출력은 다른 히든 레이어의 노드로 전달되거나 네트워크의 출력이 될 수 있습니다. |
| 이제 JMP 내에서는 숨겨진 레이어가 두 개만 허용됩니다. |
| 사실 신경망을 만드는 데 있어서 20개를 가질 수 없다는 말은 없습니다. |
| 우리는 지금 걱정하고 있습니다. 사실, 어떤 연속 함수라도 근사화할 수 있다는 통계 이론이 있습니다. |
| 두 개의 숨겨진 레이어가 있는 몇 가지 경계 조건이 주어졌습니다. 이것이 바로 JMP가 그런 결정을 내린 이유일 것입니다. |
| 선형, 쌍곡선 탄젠트 및 가우스 방사형 기준. 그래서 사실, |
| 여기 이 노드에서 여기 작은 곡선을 확인하세요. 나는 그것이 쌍곡선 탄젠트 함수를 위한 것이라고 믿습니다. 선형은 위로 올라가는 직선이 될 것입니다. 내 생각에 가우스 방사형 기준은 정규 곡선처럼 보일 것입니다. |
| 그것이 바로 신경망 플랫폼입니다. 그래서 우리가 마지막으로 살펴볼 것은 투영 추적 회귀라는 것입니다. 저는 JMP가 할 수 없는 일을 끌어내고 싶었습니다. 여기서 예를 들어보겠습니다. |
| 음, 투영 추적 회귀는 원래 스탠포드의 Jerome Friedman과 Steutzle이 제안한 모델이었습니다. 그들의 모델은 예측을 수행합니다. y가 베타 i, f sub i의 합과 입력의 선형 변환과 같은 형식으로 예측합니다. |
| 실제로 이것은 신경망과 다소 유사합니다. 여기에는 k개의 노드가 있고 각 노드에는 활성화 함수 fi가 있는 하나의 숨겨진 레이어가 있습니다. |
| 엘. 투영 추구 회귀를 통해 우리는 실제로 이러한 f sub i도 추정할 것입니다. |
| 일반적으로 그들은 일종의 더 매끄러워지거나 스플라인 핏이 될 것입니다. 일반적으로 f sub i를 능선 함수라고 합니다. 이제 알파, 베타, 그리고 최적화해야 할 F가 있습니다. 따라서 일반적으로 단계적 피팅이 수행됩니다. 이 시점에서는 세부 사항에 대해 너무 깊이 다루지는 않겠습니다. |
| 좋아, 그래서 나는 내 모든 모델을 살펴보았습니다. |
| 이제 몇 가지 결과를 보여드리겠습니다. 모든 것이 좋아 보이길 바랍니다. JMP를 시작하기 전에 제가 주목해야 할 한 가지는 |
| R, Python for Keras에서 신경망의 시드를 설정하는 것은 정말 어렵습니다. 따라서 내 코드를 가져와 실행하면 내가 얻은 것과 정확히 일치하지 않을 수도 있지만 거의 비슷할 것입니다. 그래서 이렇게 말했습니다. |
| 우리가 여기서 무엇을 얻었는지 봅시다. 그래서 이것이 제가 얻은 결과였습니다. 이제 불행하게도 일이 완벽하게 진행된 것 같지는 않습니다. |
| 그래서, |
| 루카스 | 여기에 내가 뭘 갖고 있지? 그래서 저는 교육을 받고 검증을 받고 테스트를 받습니다. 그래서 우리는 이러한 모델 중 하나가 잘 맞지 않는다는 것을 매우 빨리 알 수 있습니다. 불행히도 R 내의 신경망에는 끔찍한 일이 일어났습니다. |
| 시작하려면 입력 공간에서 잘못된 지점을 포착해야 합니다. 그래서 그것은 아주 좋은 모델에 맞지 않았습니다. |
| 불행하게도 비선형 모델의 시작 매개변수는 중요합니다. 어떤 경우에는 우리는 그들에게 조금씩 물립니다. |
| 하지만 다른 모든 것을 살펴보면 다른 모든 것이 꽤 잘 맞는 것 같습니다. 이제 괜찮은 점은 우리가 그것에 대해 논쟁을 벌일 수 있지만 R 제곱이 0.5보다 높은 것으로 보입니다. 루트 평균이 표시됩니다. |
| 여기의 제곱 오차는 약 5 정도이며 평균 절대 오차도 3개 범위에 있습니다. 이제 훈련에서는 투영 추적 회귀가 가장 좋은 것 같습니다. |
| 검증 데이터 세트로 내려가면 여전히 R처럼 보입니다. |
| 프로젝션 추구가 가장 잘되었습니다. 하지만 테스트 데이터 세트를 보면 갑자기 R의 신경망을 무시한다고 가정할 때 투영 추적 회귀가 두 번째로 최악인 것으로 나타났습니다. |
| 종종 이와 같은 프레임워크에서는 모델 적합성을 결정하기 위해 어떤 방식, 모양 또는 형식으로도 사용되지 않았기 때문에 가장 가까운 테스트 데이터 세트를 살펴보게 됩니다. |
| 그리고 우리는 그것을 바탕으로 다음과 같이 봅니다. |
| JMP의 능선 회귀가 가장 적합합니다. |
| 여기에서 볼 수 있습니다. R 제곱은 이전에 .71이었고 이전에는 약 .73이었고 여기에서는 약 .73이므로 지속적으로 적합하다는 것을 알 수 있습니다. |
| 세 가지 데이터 세트 모두에서 동일한 내용이 적용됩니다. 따라서 내가 현재 보고 있는 것만을 토대로 결정을 내려야 한다면 아마도 다음과 같은 결정을 내릴 것입니다. |
| 능선 회귀. 즉, 여기 아래에는 수많은 진단 도구와 기타 등등이 있습니다. 따라서 R의 신경망에 무슨 일이 일어났는지 살펴보고 싶다면, |
| 아주 빨리 알 수 있어요. 거기에서 불과 몇 걸음 떨어진 곳에서 무슨 일이 일어났어요. 보시다시피, 거의 모든 것이 220,000개로 예측되기 때문에 피팅 작업이 매우 형편없습니다. |
| 따라서 우리는 이것을 피팅하는 동안 문제가 발생했다는 것을 알고 있습니다. |
| 그래서 우리는 능선 회귀가 가장 좋은 것처럼 보이는 것을 보았습니다. 그럼 어떤 내용이 나오는지 살펴보겠습니다. 그럼 잠시 후에 제 JSL 코드를 보여드리겠습니다. |
| 에서는 이 모든 작업을 수행한 방법을 보여주지만, 음, 여기서는 능선 회귀 분석의 매개변수 추정치를 볼 수 있습니다. 능선 진단 도표를 볼 수 있으므로 원래 추정치에서 상황이 너무 많이 줄어들지는 않았습니다. |
| 하지 않은 것과 같은 로그를 사용하여 유효성 검사 테스트를 통해 확인할 수 있습니다. |
| 그리고 여기 오른쪽에는 본질적으로 잔차 플롯이 있습니다. 이는 예측에 의한 실제입니다. |
| 훈련을 통해 알 수 있듯이 비용이 많이 들고 잘 예측되지 않은 몇 가지가 있었던 것 같습니다. 여기서는 테스트 세트보다 적은 수를 볼 수 있으므로 실제로 문제가 너무 많은 것 같지는 않습니다. 여기에는 약간 이상한 점이 몇 가지 있지만 일반적으로 볼 수 있습니다. |
| 가격이 낮은 주택에 있을 때는 세 가지 데이터 세트 모두 상당히 잘 들어맞습니다. 다시 한번, 우리는 이것에 무슨 일이 일어났는지 자문하고 싶을 수도 있지만, |
| 현재로서는 이것이 가장 좋은 것 같습니다. 그래서 우리는 다른 사람들에게서 볼 수 있습니다. |
| 여기를 보아라. 그럼 잠시 MATLAB을 살펴보겠습니다. |
| 따라서 여기에서도 훈련 테스트 검증을 볼 수 있습니다. 그래서 여기서 우리는 뱉어내고 있습니다...MATLAB은 진단의 한 가지를 뱉어냈는데, 이를 완료하는 데 몇 시대가 걸렸다는 것을 알 수 있습니다. |
| 하지만 고맙게도 MATLAB은 우리가 알 수 있듯이 매우 빠르게 실행됩니다. |
| 그리고 실제는 여기서 예측됩니다. |
| 우리는 이 모든 것을 볼 수 있습니다. |
| 좋습니다. 이제 몇 분 동안 코드를 살펴보겠습니다. |
| 물론 몇 가지 참고 사항은 이 모든 것을 실제로 실행할 수 있도록 설치되었는지 확인하는 것입니다. 그렇지 않으면 JMP는 비참하게 실패할 것이고 예측을 내뱉지 않고 예측을 찾을 수 없기 때문에 실패할 것입니다. |
| 따라서 JMP에는 코드를 사용하여 검증 열을 생성하는 기능이 있습니다. 그래서 저는 60 20 20을 선택했습니다. 저는 여러분이 제가 사용하는 것과 동일한 훈련 검증 테스트 세트를 사용할 수 있도록 여기서 무작위 시드를 선택했습니다. |
| 그래서 실제로 지금 당장 제가 하는 일은 훈련, 검증, 테스트 중 무엇인지 저장하는 것입니다. 실제로 해당 열을 잠시 삭제하겠습니다. |
| 여기서 그렇게 하는 이유는 데이터 세트를 R, Python 및 MATLAB으로 보내고 그 안에 있는 모든 것이 출력이거나 모든 입력일 때 코딩하기가 더 쉽기 때문입니다. |
| 그래서 나는 그렇지 않은 유효성 검사 열을 원하지 않았고 그렇게 하는 것이 조금 더 어려워졌습니다. 그래서 제가 한 일은 데이터 세트를 보내는 것이었습니다. |
| 훈련, 검증, 테스트 행을 보낸 다음 R 코드를 호출하여 실행합니다. 이제 실제로 할 수 있습니다 |
| 실제 R 코드 자체를 여기에 넣으세요. 영원히 스크롤할 필요가 없도록 여기에 한 줄만 쓰기로 결정했습니다. 하지만 당신을 막을 수 있는 것은 아무것도 없습니다. 프레젠테이션 앞부분에서 본 것과 같이 코드 몇 줄만 있으면 여기에 바로 붙여넣을 수 있습니다. |
| 일단 완료되면...이 코드가 뱉어집니다. |
| 진단 사진입니다. 6~7번의 반복 후에 중지되는 것을 확인했습니다. 이것이 종료되었다고 가정해 보겠습니다. |
| 그리고 이 스크립트의 능선 회귀에도 적합하므로 두 개의 그림을 얻을 수 있습니다. 그래서 그 것도 뱉어내고 아웃라인 박스와 함께 저장했습니다. 이제 이것들은 모두 모든 코드의 끝에 합쳐집니다. |
| 그런 다음 출력을 얻었고 잠시 후에 이를 여기 데이터 테이블에 추가하겠습니다. |
| 좋습니다. 여기에 약간의 코드를 제공합니다. 600만 개의 관측치가 있고 실제로 모델을 맞추는 데 24시간이 걸린다고 가정하면 아마도 JMP 내에서 실행하고 싶지 않을 것입니다. |
| 따라서 여기에서 수행할 수 있는 약간의 코드로서 다음과 같이 말할 수 있습니다. |
| 좋아요, 제가 관심 있는 데이터 테이블을 열겠습니다. R에게 그동안 다른 곳에서 실행하라고 지시할 것입니다. 시스템에서 '안녕하세요, 끝났습니다'라는 녹색 표시등이 켜지면 '좋아, 그럼 출력을 열고 가져오세요'라고 말할 수 있습니다. 그것을 안으로 |
| 내 데이터 테이블. 그래서 이것은 당신이 그 일을 할 수 있는 한 가지 방법이 될 것입니다. 물론 해당 사진 파일을 어딘가에 저장하고 이 코드도 사용하고 싶을 것입니다. 하지만 이것은 완전히 동일한 코드가 될 것입니다. |
| 좋습니다. Python의 경우 매우 유사할 것입니다. 이것저것은 패스하겠습니다. 일부 Python 코드를 실행하고 진단 플롯을 작성하고 예측을 작성해 보세요. |
| 그리고 Python 코드 몇 개를 보여드리면 JMP에서 했던 것과 매우 유사하다는 것을 알 수 있습니다. 이 경우에는 일부 CSV 파일을 열어 보겠습니다. 더 이상 필요하지 않으므로 열을 복사하고 닫습니다. |
| 그런 다음 MATLAB은 다시 똑같은 게임을 합니다. 자산을 관리하려면 MATLAB 스크립트를 실행하세요. 여기서 내뱉은 PNG 파일을 얻습니다. 필요한 곳에 저장하고 예측을 저장하세요. 그리고 꼭 잡아야 한다면 |
| 여기에서 실행하는 대신 약간의 샘플 코드를 사용하면 됩니다. |
| 자, 이제 R, Python 및 Matlab 호출이 완료되었으므로 JMP에서 사용할 수 있도록 검증 열을 다시 가져옵니다. 그래서 나는 어느 것이 어느 것인지 기억하기 때문에. |
| 따라서 기본적으로 JMP는 우리가 사용할 검증 열 내의 값을 확인합니다. 가장 작은 값은 훈련이고, 그 다음으로 큰 값은 검증, 가장 큰 값은 테스트입니다. 이제 K 접기 교차 검증을 수행하면 그것이 어느 접기인지 알려줄 것입니다. 그래서 012345678 등을 통해 진행됩니다. |
| 그럼 이걸 만들어 보세요. 그런 다음 여기에 이것을 생성했습니다. 그러면 012 대신 실제로 출력에 훈련, 검증 및 테스트가 표시됩니다. |
| 이해하다. 따라서 이전에 JMP를 사용해 본 적이 없는 사람에게 012가 무엇을 의미하는지 알 수는 없지만 훈련, 검증 및 테스트가 무엇인지는 알아야 합니다. |
| 자, 이제 데이터 테이블에 예측을 추가하기 시작합니다. 음, 여기 제가 강연 초반에 언급했던 집합 속성이 있습니다. |
| 그래서 제 작성자의 MATLAB에 열 이름을 지정했습니다. 그래서 MATLAB에 대한 신경망 예측이라는 것을 알고 있습니다. 그래서 반드시 창작자가 필요하지는 않을 수도 있지만, 이름을 붙이는 것이 조금 엉성한 경우를 대비해 |
| 미안합니다. |
| 따라서 우리는 모든 투영 추적 회귀, 신경망 등을 얻을 수 있습니다. |
| 그런 다음 저는 JMP에서 능선 회귀, 올가미, 선형 회귀 분석을 적합하다고 언급했습니다. |
| 그래서 여기서 다 했어요. 그래서 여기서는 적합 모델, 일반화 회귀를 수행합니다. 이 모든 것을 뱉어내세요. |
| 내 예측 공식을 사용해 보세요. |
| 마지막에 전체 출력에 대해 예측하여 실제 결과를 플롯합니다. |
| 그리고 신경망을 맞추겠습니다. 유효성 검사 열이라고 말할 수 있습니까? 공변량을 전송하는데, 일반적으로 신경망은 일반적으로 출력이 무엇이든 상관없이 0을 중심으로 크기를 조정할 때 조금 더 잘 맞는 경향이 있습니다. |
| 첫 번째 숨겨진 레이어에는 세 개의 노드가 있습니다. 두 번째 숨겨진 레이어에는 두 개의 노드가 있습니다. 여기서는 둘 다 선형 활성화 함수입니다. 위의 세 가지에 대해서는 제한된 선형 단위 활성화 기능을 사용하므로 약간 다릅니다. |
| 하지만 나는 그것들이 상관없이 거의 똑같은 것 같다는 것을 알았습니다. |
| 5. 이것이 의미하는 바는, 저는 5개의 서로 다른 시작 값 세트를 시도할 것이며, 어느 것이 가장 좋은 것을 유지할 것이라는 것입니다. |
| 내 코드에서 알 수 있듯이 아마도 R로 그렇게 했어야 했을 것입니다. 그것은 일종의 4개의 루프를 수행하고, 그 중 여러 개를 수행하고, 가장 잘 하는 것을 뱉어냅니다. 그래서 앞으로의 작업을 위해 제가 갈 곳은 바로 그곳입니다. |
| 그런 다음 해당 항목을 저장하고 이제 모델을 비교할 준비가 되었습니다. 이제 모델 비교에 새로운 열을 모두 가져옵니다. |
| 조금 스크롤하세요. 그래서 여기서는 이전에 언급한 대로 유효성 검사를 수행하고 있습니다. |
| 그래서 마지막으로 제가 원하는 대로 보이도록 약간의 코딩을 하고 있습니다. |
| 그래서 저는 JMP에서 말하는 일반적인 내용 대신 교육 진단, 검증 진단, 테스트 진단 등의 개요 상자를 얻습니다. |
| 이 진단 플롯을 얻을 거 야. |
| 이제 여기서는 핸들을 잡는 데 필요한 출력의 일부만 원한다고 말하고 있습니다. |
| 모든 잔차 플롯이 즉시 표시되는 것은 아니기 때문에 일부 잔차 플롯을 매우 빠르게 만들겠습니다. 특히 MATLAB, Python 및 R의 잔차 플롯은 더욱 그렇습니다. |
| 제목을 설정한 다음 여기서는 크고 오래된 테이블이나 크고 오래된 대화를 만듭니다. |
| 그런 다음 모든 것을 일기로 기록합니다. |
| 그래야 깔끔하고 깨끗해요. 많은 물건을 닫아서 걱정할 필요가 없습니다. 그리고 마지막에 제가 하고 싶었던 일은 이 중 하나를 열 때였습니다. |
| 그 아래의 다른 모든 것은 즉시 열려 있습니다. |
| 6~7가지 다른 항목을 클릭해야 합니다. 보시다시피 여기와 여기를 클릭해야 합니다. |
| 여기 3개가 더 있습니다. 하나 더 있는 것 같아요. 죄송합니다. 하지만 이렇게 하면 이들 중 하나를 클릭할 필요가 없으며 자동으로 열립니다. |
| 이것이 바로 이 코드의 마지막 부분이 하는 일입니다. |
| 좋아요. |
| 루카스 | 따라서 이것은 출력과 라이브 실행이 다릅니다. 그러나 이것이 보일 수도 있는 곳입니다. |
| 제가 언급한 것처럼 코드에서 여러분이 본 것과 우리가 본 것과 다른 것을 본 것입니다. |
| 리차드 |
| 루카스 | 아니요. 따라서 모든 것을 마무리하면 모델 비교 플랫폼은 한 곳에서 여러 모델의 예측 능력을 비교할 수 있는 매우 훌륭한 도구입니다. 여러 가지 일 사이를 왔다 갔다 할 필요가 없습니다. 바로 눈앞의 모든 것을 바라볼 수 있습니다. |
| JMP에 맞지 않는 모델을 맞추거나 JMP에 맞지 않는 모델을 비교하는 데에도 유연성을 사용할 수 있습니다. 그래서 |
| 이를 통해 피팅하는 데 오랜 시간이 걸리는 매우 큰 모델을 피팅해야 하는 경우 적합하도록 지시할 수 있습니다. JMP에서 모든 것을 가져오고 모든 결과를 매우 쉽게 확인하여 다음 단계를 결정하세요. |
| 시간을 내주셔서 감사합니다. |