| 揚聲器 |
抄本 |
| 盧卡斯 |
好的,感謝大家來聽我的演講。我叫盧卡斯‧貝弗林,是英特爾的統計員。 |
| |
今天我將討論如何使用 JMP 比較來自不同環境的模型。 |
| |
好的,目前 JMP 15 Pro 是 JMP 推出的最新、最好的版本,如果您想適應模型,他們有幾種不同的工具可以做到這一點。 |
| |
這裡有擬合模型平台。這裡有神經網路分割平台。如果你想要分類樹和迴歸樹,這裡有神經網路平台。還有非線性平台,用於非線性建模,還有其他幾個。 |
| |
因此,我認為 JMP 15 是在 12 或 13 中推出的,但這個模型比較平台是一個非常靈巧的工具,你可以用它來比較 |
| |
在 JMP 中,您可以從不同平台進行模型擬合。如果您有一個樹狀圖和一個神經網絡,但不確定哪個更好,您可以自由切換。但是現在, |
| |
所有內容都在同一個螢幕上。你可以快速輕鬆地判斷這個比那個更好,等等。 |
| |
話雖如此,JMP 可以適應很多情況,但遺憾的是,它無法適應所有情況。所以,我只能列舉一些無法適應的情況。例如, |
| |
那些進行大量機器學習和人工智慧的人可能會適合自動編碼器或卷積神經網路之類的東西,這些網路通常需要大量的激活函數,或者說,大量的隱藏層節點, |
| |
除了 JMP 提供的激活函數之外,還有其他激活函數,因此 JMP 無法在 JMP 內部完成許多功能。 |
| |
另一個是投影尋蹤回歸。還有一個是多元自適應迴歸樣條函數。遺憾的是,JMP 有一些功能無法實現。 |
| |
R、Python 和 MATLAB。 |
| |
還有很多, |
| |
但我主要關注這三個。既然如此,我在這裡要討論的想法,你想用 C++、Java、Rust 或其他任何語言來實現它們。 |
| |
想到這裡,您應該能夠使用其中的許多。 |
| |
所以,正如我之前所說,我們也可以使用模型比較平台來與其他軟體進行比較。那你需要什麼呢? |
| |
因此,您需要的兩件大事是您用來擬合模型的任何軟體的模型預測。 |
| |
通常,當我們進行模型擬合時,特別是對於較大的模型,您可以將資料分成訓練驗證和/或測試集。 |
| |
您將需要一些東西來告訴所有軟體哪些是訓練,哪些是驗證,哪些是測試,因為您希望在比較適合度時它們是一致的。 |
| |
好的,所以我選擇 R、Python 和 MATLAB 作為本次演講的重點的最大原因是,事實證明 JMP 和腳本語言實際上可以創建自己的 R 會話並從中運行程式碼。 |
| |
所以這張圖片可以快速顯示如果我想用線性迴歸模型擬合某個輸出 |
| |
說到波士頓住房資料集。我稍後會用這個資料集做更多工作。 |
| |
但是,如果你想在 R 中快速擬合線性迴歸模型並得出預測值,你也可以這樣做。當然,你也可以用 JMP 來實作。我只是想提供一個非常簡單的思路。 |
| |
所以, |
| |
需要注意的一點是,我使用的是 R 3.6.3,但只要大於 2.9,JMP 就可以處理任何內容。 |
| |
類似地,Python,你可以呼叫你自己的 Python 會話。這張圖片展示了我用 Python 擬合線性迴歸。我不會在這裡逐行講解所有程式碼,但你應該已經了解了基本想法。 |
| |
當然,使用 Python 時要小心一點,因為最新版本是 Python 3.8.5。但如果你使用 Anaconda 安裝,當版本高於 3.6 時,JMP 會遇到問題,所以 |
| |
因為我在這個演示中使用 3.6.5。 |
| |
最後,我們也可以建立自己的 MATLAB 會話。 |
| |
所以我在這裡使用的是 MATLAB 2019b。不過基本上,只要你的 MATLAB 版本是最近七、八年發布的,它應該都能正常運作。 |
| |
好的,那我們要如何把所有東西連結在一起呢?實際上,我們這裡要講一個四步驟流程。首先,我們要擬合每個模型。我們會將資料以及每個觀測值所在的集合傳送給每個軟體。 |
| |
一旦我們擬合了模型,我們就想輸出這些擬合結果及其預測,並將它們添加到 JMP 可以查看的資料表中。 |
| |
所以當然,我的警告是,一定要確保你命名的東西能夠說明你在哪裡擬合了模型,或者你是如何擬合模型的。我接下來會舉出這兩個面向的例子。 |
| |
所以第三步,根據模型,你可能需要查看一些模型診斷。僅僅因為一個模型擬合得很好……根據數值來看,它似乎擬合得很好,例如,看一下你的殘差圖,你可能會很快發現 |
| |
最感興趣的領域不太適合。 |
| |
或者殘差有問題等等。所以我們也會示範如何輸出這類資料。 |
| |
最後,我們將使用模型比較平台,將所有內容放到一個大表中來比較數字,這比來回翻轉要容易得多。 |
| |
好的,我們現在將步驟分解得更詳細一些。第一步,也就是進行模型擬合,我們基本上有兩個選擇。首先,我們可以透過 JSL 告訴 JMP 調用你選擇的軟體。 |
| |
把數據和代碼發送給它,讓它適應。所以,實際上,我會暫時放下這個,直接去做這件事。 |
| |
所以你在這裡看到,我有一些用於實際調用 R 的程式碼。 |
| |
完成後,我會呼叫 Python,完成後,我會呼叫 MATLAB,然後把所有東西整合在一起。我稍後會詳細介紹一下程式碼,但運行起來大概需要三到四分鐘。我現在就來運行一下。 |
| |
當我們準備好了,我們就會回到祂身邊。 |
| |
所以我們的另一個選擇是建立一個包含驗證的資料集。我們建立一個包含驗證列和/或測試列的資料集,具體取決於有多少 |
| |
資料集被拆分成不同的資料集。我們計劃在需要的軟體上運行,當然,輸出結果也是我們需要的。 |
| |
當然,還有一些警告。確保你…無論你使用的軟體,都具備擬合模型所需的功能。 |
| |
在嘗試將模型與事物進行比較之前,請確保模型已完成擬合。 |
| |
確保輸出格式是 JMP 能夠讀取的。值得慶幸的是,JMP 可以讀取相當多的內容,所以這並非四個警告中最大的一個。 |
| |
但正如我之前警告過的那樣,請確保每個模型的預測與原始資料集的正確觀察相對應。 |
| |
所以這又回到了問題:如果這是訓練,如果這是訓練觀察,當你在 JMP 中擬合它時, |
| |
無論你用什麼軟體進行擬合,它最好是一個訓練觀察值。如果在 JMP 中驗證,那麼在其他地方也驗證。如果在 JMP 中測試,那麼在其他地方也測試。 |
| |
所以一定要確保所有資料都對應正確,因為我們最不想看到的就是看著測試集說:「哦,這個擬合得好多了。」 嗯,這是因為擬合的觀測值權重不同,而且沒有任何真正的異常值。這最終會扭曲你的思維。所以 |
| |
我要提醒一下,對不起,我要提醒一下。 |
| |
好的。正如我之前提到的,我目前正在後台運行一個範例。我想稍微詳細地介紹一下我正在做的事情。 |
| |
看來我要用 R、Python 和 MATLAB 來擬合神經網路。所以如果我想在 R 中實現這個功能,我需要在 R 已有的基礎軟體包之上安裝兩個軟體包,分別是 Keras 軟體包和 Tensorflow 軟體包。 |
| |
numpy、pandas 和 matplotlib。 |
| |
所以,numpy 可以很容易地進行一些計算;pandas 可以用來處理資料…一些資料操作;matplotlib 用來繪製圖表應該也很簡單。然後在 MATLAB 中,我使用深度學習工具箱,無論你是否可以使用它。 |
| |
好的。第二步,我們要將預測結果加入 JMP 資料表中。如果您使用 JMP 呼叫軟體,您可以使用 JSL 程式碼檢索這些預測結果並將其新增至資料表中,以便稍後進行比較。 |
| |
那麼您可以採取的另一種方法是讓軟體自行運行並保存輸出,您可以快速告訴 JMP,去拉取該輸出文件,然後進行一些操作,將預測結果帶入儲存結果的資料表中。 |
| |
現在我們也可以讀取診斷圖了。在這種情況下,我通常會將這些診斷圖儲存為圖形檔案。對我來說,它會是 PNG 檔案。當然,無論哪種格式 |
| |
您可以使用的圖形。 JMP 無法處理所有類型的圖像,但我相信 PNG 可以映射 jpg 和其他一些圖像……它們已經涵蓋了您常用的圖像。 |
| |
所以第二個注意事項我使用它作為模型比較平台,但為了幫助識別你...你適合什麼模型以及你適合在哪裡, |
| |
我通常建議為新增的每個預測列新增以下屬性。因此,我們在這裡看到,我們正在發送感興趣的數據表,這個屬性稱為「預測」。 |
| |
所以,無論你用什麼來預測事物(現在的價值可能不是最好的選擇),但是 |
| |
但是有了這個創建器,它就會告訴我,我到底用了什麼軟體來創建這個模型。所以這裡我用的是 R。它會顯示 R,這樣它就能在螢幕上顯示出來。 Python 和 MATLAB 有點太長了,不過我們可以在這裡輸入任何我們想要的字串。 |
| |
當我在這裡更詳細地介紹程式碼時,您就會看到這些。 |
| |
這很方便,因為我稍後還要在 R 中擬合多個模型。所以,如果我正確選擇列名,並且有多個由 R 創建的模型,我仍然知道我實際查看的是哪個模型。 |
| |
好的,這就是典型的模型比較對話框的樣子。 |
| |
我要指出的一點是,這大概就是我在所有模型擬合結束時點擊一下的樣子。你可以看到我有幾個預測變數。我有 MATLAB、Python 和 R 的神經網路。 |
| |
各種預測形式;我曾經使用 JMP 來適應某些東西。 |
| |
現在,人們通常會把驗證列放在一組, |
| |
這樣它就能把訓練、驗證和測試分組。實際上,我更喜歡把它放在這裡的 By 語句中。我稍後會在這裡展示。不過,你也可以把它放在 |
| |
但總而言之,我更喜歡這種方式的輸出。 |
| |
所以這就是為什麼現在我可以清楚地看到,這些都是訓練, |
| |
這些都是驗證(不應該透過標題看到)並且這些都是測試。 |
| |
如果你使用驗證集作為群組變量,你會得到一個包含 21 個條目的大表。現在會多出一列,上面寫著“訓練集驗證集測試集”,或者在我的情況下是 012,但是 |
| |
這樣,我就不用費力思考了。我不用向任何人解釋「012」是什麼意思等等。所以我才做出了那個選擇。 |
| |
好的,在我要分解的例子中,我將使用經典的波士頓住房資料集。這個資料集包含在 JMP 中。這就是為什麼我沒有在簡報中將其作為文件包含的原因,因為如果您有 JMP,您就已經擁有它了。 |
| |
因此,哈里森和魯賓菲爾德對房屋中位數有幾個預測指標,例如人均犯罪率、每個城鎮非零售商業用地面積比例, |
| |
無論你想買什麼,平均房間數,按城鎮劃分的師生比例(所以如果有很多老師,而學生人數不多,這通常意味著更好的教育,這是很多人 |
| |
(已找到)以及其他幾個。我不會在這裡嘗試全部介紹這 13 個。 |
| |
好的,我先簡單介紹一下我之前研究過的模型的背景。然後我會深入研究 JSL 程式碼以及我是如何把所有東西都擬合起來的。 |
| |
我研究過一些模型。首先是典型的線性迴歸模型。這裡你看到的是一個簡單的線性迴歸模型。我只是用中位數來擬合稅率。 |
| |
但我當然會使用多元線性迴歸並全部使用它們。 |
| |
所以, |
| |
但由於有 13 個不同的預測因子,並且知道其中一些可能相互關聯,我決定也許值得研究其他幾種類型的迴歸。 |
| |
其中一種叫做橋式迴歸。它其實就是線性迴歸,本質上增加了一個約束條件, |
| |
我的參數的平方值不能大於某個常數。 |
| |
我可以……事實證明我實際上可以將其重寫為一個最佳化問題,其中 lambda 的某個值對應於 C 的某個值。 |
| |
因此我只是嘗試使用這個額外的懲罰項來最小化它,而不是您習慣看到的典型最小二乘法。 |
| |
這被稱為收縮法,因為隨著我把它變得越來越小,所有這些值都會越來越接近零。所以,當然,我需要思考一下,我希望它有多嚴格。 |
| |
現在有了收縮,它會慢慢地把所有變數推向零。但有了另一種懲罰項,我實際上可以完全消除一些懲罰項。 |
| |
我可以使用一種叫做套索的方法。所以這裡的限制是,好的,我不取參數估計值的平方,而是取這些參數估計值的絕對值總和。 |
| |
因此,實際上會發生的是,那些非常弱的參數估計值實際上會被設定為零,這有點像 |
| |
如果你願意的話,可以消除不重要的術語。 |
| |
為了直觀地展示套索和嶺回歸的作用,對於嶺回歸,這裡的圓圈代表懲罰項。 |
| |
這裡我們考察的是參數空間。真正的最小二乘估計應該在這裡。但我們還沒有完全達到這個目的,因為我們還有額外的限制。 |
| |
所以最後,我們找到…基本上,我們在哪裡得到與圓接觸的最小值。這就是我們的嶺迴歸參數估計值。 |
| |
對於套索,畫法類似,但現在你可以看到,有了絕對值,它更像一個菱形,而不是圓形。請注意,這是二維的,當然,我們接下來會討論超球體以及所有這些形狀。 |
| |
但你可以看到,它正好與菱形的尖端相接。所以在這種情況下,β1 其實等於零。這就是它消去項的方式。 |
| |
好的,我們要研究的另一件事是所謂的迴歸樹。 JMP 使用分割平台來實現這些功能。為了快速示範它的作用,我把所有數據都放在這裡。 |
| |
所以我問自己的第一個問題是,這棟房子有多少個房間,我知道我的房間不可能只有 0.943 個,所以基本上, |
| |
我有六個或更少的房間。所以,先從樹的這部分開始,不要從樹的這部分開始。現在,如果我有七個或更多的房間,這立即告訴我,我將預測我的中位數 |
| |
值為 37。請記住,這是數萬美元,因此為 370,000 美元。 |
| |
如果小於七,那麼我接下來要問的問題是,lstat 有多大? |
| |
因此,如果它大於或等於 14.43,我會查看這個節點,突然間我的中位數住房估計約為 150 萬美元,如果我來到這裡,它將約為 233 萬美元。 |
| |
回歸樹的真正作用是將輸入空間分成不同的區域。我們對該區域內的每個值都給出相同的預測。 |
| |
所以你可以看到我在這裡進行了分區...現在在這種情況下,我採用二維的,因為它更容易繪製... |
| |
所以你可以看到這棵樹,我先看 x1。現在看 x2,然後問關於 x1 的另一個問題,再問關於 x2 的另一個問題,這就是我最終劃分輸入空間的方法。 |
| |
現在這五個中的每一個都會有一個預測值。基本上就是這樣。我從上面看。我會得到這個。但你可以看到 |
| |
根據五個區域中哪個區域正確,預測會略有不同。 |
| |
現在,我不會詳細講解如何安裝這些,但是 |
| |
James、Witten、Tibshirani 和 Friedman 給了一些幫助;Leo ??? 寫了一本關於它的開創性著作,你可以去那裡看看。 |
| |
接下來,我將討論神經網絡,它如今在機器學習等領域被廣泛使用。這張圖展示了神經網路的大致結構。圖中,我們只使用了 5 個輸入,並在傳遞它們時使用了 13 個輸入。 |
| |
到這些……這個隱藏層。每一個都透過激活函數進行轉換。 |
| |
對於每個激活函數,您都會得到一個輸出,我們將使用... |
| |
通常,我們只需使用這些輸出的線性迴歸來預測中位數。 |
| |
好的,那麼 |
| |
實際上,神經網路從根本上來說是一種非線性模型,它們之所以被稱為神經網絡,是因為它們的表現形式通常是我們看待神經元在人腦中運作的方式。 |
| |
因此,每個輸入都可以傳遞到隱藏層的節點。在隱藏層,你的輸入會被推送到激活函數,並計算出一些輸出,每個輸出可以傳遞到另一個隱藏層的節點,或作為網路的輸出。 |
| |
現在在 JMP 中,您只允許使用兩個隱藏層。 |
| |
說實話,就創建神經網路而言,沒有什麼規定說你不能擁有 20 |
| |
我們現在關心的是。說實話,有些統計理論表明,我們可以近似任何連續函數, |
| |
給定一些邊界條件,並設定兩個隱藏層。這很可能就是 JMP 做出這項決定的原因。 |
| |
線性、雙曲正切和高斯徑向基底。所以事實上, |
| |
在這些節點上,請注意這裡的小曲線。我相信那是雙曲正切函數;線性函數是一條向上的直線;而高斯徑向基底函數,我相信看起來更像正態曲線。 |
| |
這就是神經網路平台。我們最後要看的是投影尋蹤回歸。我想舉個JMP做不到的例子。 |
| |
嗯,投影尋蹤回歸最初是由史丹佛大學的傑羅姆·弗里德曼和施圖茨勒提出的模型。他們的模型進行預測…其預測形式為 y 等於 beta i、f sub i 和輸入的線性變換總和。 |
| |
這其實有點類似神經網路。這裡有一個隱藏層,有 k 個節點,每個節點的活化函數為 fi |
| |
L. 事實證明,透過投影尋蹤回歸,我們實際上也要估計這些 f sub i。 |
| |
通常,它們會採用某種平滑函數或樣條函數擬合。通常,f 和 i 被稱為脊函數。現在我們有了 alpha 值、beta 值和需要最佳化的 F 值。所以,通常來說,這是一個分階段的擬合過程。我現在不會深入探討細節。 |
| |
好的,我已經了解我所有的模型了。 |
| |
現在我要展示一些輸出,希望一切看起來都不錯。在開始使用 JMP 之前,我要注意的是 |
| |
在 R 中為神經網路設定種子非常困難,在 Python 中為 Keras 設定種子則非常困難。所以請注意,如果你運行我的程式碼,你得到的結果可能與我得到的不一樣,但應該會很接近。所以, |
| |
讓我們看看我們得到了什麼。這就是我得到的輸出。不幸的是,現在一切似乎都不完美。 |
| |
所以, |
| 盧卡斯 |
我這裡有什麼?我有訓練集、驗證集和測試集。所以我們很快就發現其中一個模型擬合得不好。不幸的是,R 中的神經網路發生了可怕的事情。 |
| |
它肯定是在輸入空間中抓到了一個不好的起點之類的。所以它沒能擬合出一個很好的模型。 |
| |
因此不幸的是,非線性模型的起始參數很重要;在某些情況下,我們會受到它們的困擾。 |
| |
但如果我們看看其他所有因素,似乎都擬合得相當好。至於什麼是“相當好”,我們可以爭論,但我看到的R平方比0.5高1個。我看到的是根均值 |
| |
這裡的平方誤差大約在5左右,甚至我們的平均絕對誤差也在3左右。現在就訓練而言,看起來投影尋蹤回歸表現最好。 |
| |
如果我使用驗證資料集,它仍然看起來像 R |
| |
投影尋蹤表現最好。但如果我們看一下測試資料集,突然之間,投影尋蹤回歸就排在第二位了(假設我們忽略 R 的神經網路),排名倒數第二。 |
| |
通常在這樣的框架中,我們會最密切地關注測試資料集,因為它沒有以任何方式、形狀或形式用於確定模型擬合度。 |
| |
根據這一點,我們可以看出, |
| |
JMP 的嶺迴歸擬合效果最佳。 |
| |
我們可以看到,這裡的 R 平方是 0.71,之前是 0.73,這裡也是 0.73,所以我們可以看到它總是擬合的 |
| |
三個數據集都得出了相同的結論。所以,如果我被迫做出決定,僅根據我目前看到的情況,我可能會選擇 |
| |
嶺回歸。也就是說,我們這裡有一大堆診斷之類的東西。所以,如果我想看看 R 的神經網路發生了什麼, |
| |
我很快就發現,剛進去幾步就發生了一些事情。如你所見,它的擬合效果非常糟糕,因為幾乎所有東西的預測值都是22萬左右。 |
| |
所以我們知道在安裝過程中出了問題。 |
| |
我們看到嶺回歸看起來是最好的。讓我們來看看它的結果。我一會兒會快速展示我的 JSL 程式碼 |
| |
展示了我是如何做到這一切的,嗯,我們可以看到這是嶺回歸的參數估計值。我們可以看到嶺診斷圖,所以數據與原始估計值相比並沒有縮小太多。 |
| |
您可以從帶有日誌的驗證測試中看到諸如“沒有”之類的內容。 |
| |
右邊是殘差圖,這些是實際值和預測值的乘積。 |
| |
從訓練集可以看出,似乎有些代價較高的點預測得不好。這裡出現的點比測試集少,看起來我們並沒有遇到太多麻煩。這裡有幾個點有點奇怪,但總體來說,我們可以看出 |
| |
當我們在價格較低的房屋時,這三個數據集都相當吻合。同樣,我們可能想問自己,這些數據集發生了什麼,但是, |
| |
目前看來,這似乎是最好的。所以我們可以參考一下其他的。 |
| |
看這裡。我們先來看看 MATLAB。 |
| |
你也可以在這裡看到訓練測試驗證。這裡我們輸出…MATLAB 輸出了一個診斷結果,你可以看到它花了幾個 epoch 完成。 |
| |
但值得慶幸的是,正如我們所見,MATLAB 運行速度非常快。 |
| |
然後實際情況就在這裡預測。 |
| |
這一切都是我們可以看到的。 |
| |
好的,我現在要花幾分鐘來看程式碼。 |
| |
當然,有幾點需要注意,確保安裝了所有東西,這樣你才能真正運行所有這些,因為如果沒有,JMP 就會慘敗,不會吐出預測,然後它會失敗,因為它找不到預測。 |
| |
JMP 能夠使用程式碼建立驗證列。所以我選了 60 20 20。我在這裡選擇了隨機種子,這樣您就可以使用與我相同的訓練驗證測試集。 |
| |
所以實際上,目前我最終要做的是保存訓練、驗證和測試的資料。我實際上會暫時刪除那一列。 |
| |
我在這裡這樣做的原因是因為我要將資料集發送到 R、Python 和 MATLAB,並且當其中的所有內容都是輸出或所有輸入時,編碼會更容易。 |
| |
所以我不想要一個不屬於任何類別的驗證列,這樣一來,驗證起來就有點困難了。所以我最終的做法是,把資料集發送給它, |
| |
我發送了訓練、驗證和測試的行,然後我調用 R 程式碼來運行它。現在你就可以真正地 |
| |
把實際的 R 程式碼放在這裡。我選擇只在這裡寫一行,這樣就不用一直捲了。不過你也不必擔心。如果只有幾行程式碼,就像你之前在簡報中看到的那樣,我會直接把它貼到這裡。 |
| |
一旦完成,就會發現......這段程式碼吐出了 |
| |
診斷圖片。我們看到它在六、七次迭代之後就停止了,我們可以這麼說。 |
| |
並且在這個腳本中擬合了嶺迴歸,所以我們得到了兩張圖片。所以我把那一張也導出出來,儲存並加上了輪廓框。現在,這些都放在了所有程式碼的末尾。 |
| |
然後我得到輸出,稍後我會將它們添加到此處的數據表中。 |
| |
好的,我在這裡給出一些代碼。假設你有 600 萬個觀測值,需要 24 小時才能真正擬合模型,你可能不會想在 JMP 中運行它。 |
| |
因此,你可以從這裡寫一小段程式碼,你可以說,嘿,我 |
| |
好的,我只需要打開我關心的數據表。我會告訴 R 暫時在其他地方運行它,一旦我的系統發出綠燈,表示它完成了,我就可以說,好的,去打開它的輸出,把它導入 |
| |
我的數據表。所以,這是你可以實現其中一部分功能的方法。當然,你也想把這些圖片檔案存到某個地方,然後使用這段程式碼。但這部分程式碼完全一樣。 |
| |
好的,對於 Python 來說,它非常類似。我會把這些東西傳給它。運行一些 Python 程式碼,輸出診斷圖和預測結果。 |
| |
我給了一些 Python 程式碼,你看,它和我們在 JMP 中做的非常非常相似。在這種情況下,我只需要開啟一個 CSV 檔案。複製列進去然後關閉它,因為我不再需要它了。 |
| |
然後再用 MATLAB 運行同樣的遊戲。處理好資源後,執行 MATLAB 腳本。我得到了我之前導出的 PNG 檔案。把它保存到我需要的地方,保存預測結果。如果你需要的話,可以取得它。 |
| |
您不需要從這裡運行它,只需使用一點範例程式碼即可。 |
| |
好的,現在我已經呼叫完了 R、Python 和 Matlab,我把驗證列帶回來,以便 JMP 可以使用它。這樣我就記住了哪個是哪個了。 |
| |
因此,預設情況下,JMP 會查看我們將要使用的驗證列中的值。最小值是訓練集,次大值是驗證集,最大值是測試集。現在,如果您進行 K 折交叉驗證,它會告訴您是哪一折。因此,它會遍歷 012345678 等等。 |
| |
然後創建這個。然後我又在這裡創建了這個,這樣我的輸出就會顯示訓練、驗證和測試,而不是 012,這樣會更清晰一些。 |
| |
明白。所以,如果我要向一個從未運行過 JMP 的人演示,他們不會知道 012 是什麼意思,但他們應該知道訓練、驗證和測試是什麼。 |
| |
好的,現在我開始將預測新增到我的資料表中。嗯,這就是我之前演講中提到的那個 set 屬性。 |
| |
所以我的創建者MATLAB,我已經指定了列名,所以,我知道這是MATLAB的神經網路預測。所以我可能不一定需要創建者,但萬一我在命名上有點馬虎 |
| |
很抱歉。 |
| |
因此我們可以得到所有的投影尋蹤回歸、神經網路等等。 |
| |
然後我還注意到,嘿,我在 JMP 中擬合了嶺迴歸、套索、線性迴歸。 |
| |
我在這裡做了所有這些。我在這裡做了我的擬合模型,我的廣義回歸。把這些都吐出來。 |
| |
支持我的預測公式。 |
| |
最後繪製我的實際結果和預測結果,以獲得完整的輸出。 |
| |
我要擬合我的神經網路。驗證列呢?我遷移了協變數。通常情況下,當我們在零附近縮放變數時,神經網路的擬合效果會更好一些,而不是像通常的輸出那樣。 |
| |
我的第一個隱藏層有三個節點。第二個隱藏層有兩個節點。這裡它們都是線性激活函數。結果發現,對於上面的三個隱藏層,我使用了受限線性單元激活函數,因此略有不同。 |
| |
但我發現,不管怎樣,它們似乎都差不多適合。 |
| |
5. 這意味著,嘿,我要嘗試五組不同的起始值,無論哪一組效果最好,我都會保留它。 |
| |
從我的程式碼中可以看出,我可能應該用 R 來實現這一點。它做了類似四循環的操作,做了好幾個,最後選出效果最好的。所以,對於未來的工作,我會選擇這個方法。 |
| |
然後我把這些東西保存起來,就可以進行模型比較了。現在我把所有這些新列都放進模型比較中。 |
| |
稍微滾動一下。正如我之前提到的,這裡我正在執行驗證。 |
| |
最後,我只需進行一點編碼,讓它看起來像我想要的那樣。 |
| |
所以我得到了這些大綱框,只是為了說明訓練診斷、驗證診斷、測試診斷,而不是 JMP 通常說的話。 |
| |
我要得到這些診斷圖。 |
| |
現在,我只是說,我只想抓住其中的一部分輸出。 |
| |
我將快速製作一些殘差圖,因為並非所有圖都能立即吐出這些圖,特別是來自 MATLAB、Python 和 R 的圖。 |
| |
設定這些標題,然後我在這裡建立大舊表或大舊對話框。 |
| |
然後我把一切都記錄下來。 |
| |
這樣既美觀又整齊。把一堆東西都關起來,我就不用擔心了。最後我做的是,當我打開其中一個的時候, |
| |
下面的所有其他內容都會立即打開,而不是 |
| |
我必須點選六、七個不同的選項。你可以看到,我必須點擊這裡和這裡, |
| |
這邊還有三個。我猜是多了一個。抱歉。不過這樣我就不用點擊它們了,它們會自動打開。 |
| |
這就是最後一部分程式碼的作用。 |
| |
好的。 |
| 盧卡斯 |
這只是輸出和即時運行的不同版本。但它也可能看起來像這樣。 |
| |
正如我所提到的,在程式碼中,你看到了,你看到了其他的東西,這就是我們所看到的。 |
| |
理查 |
| 盧卡斯 |
不。總而言之,模型比較平台真的是一個非常好的工具,可以在一個地方比較多個模型的預測能力。你不必在各種工具之間來回切換。你只需查看眼前的一切即可。 |
| |
這種靈活性甚至可以用於擬合 JMP 中無法擬合的模型,或比較 JMP 中無法擬合的模型。 |
| |
有了它,如果我們需要擬合非常大的模型,而這些模型需要很長時間才能擬合,我們就可以告訴它們進行擬合。將所有內容匯入 JMP,然後輕鬆查看所有結果,以確定下一步。 |
| |
最後,感謝您抽空。 |