|
揚聲器
|
成績單
|
| 拉斯·沃爾芬格 |
好的。嗯,大家好。 |
| |
歡迎來到我位於北卡羅來納州霍利斯普林斯的家。 |
| |
隨著 Covid 的瘋狂蔓延,這是一種在線舉辦虛擬會議的新體驗,但我很高興今天與您交談,並提供有關我們為 JMP Pro 提供的全新添加的教程 |
| |
它實現了流行的 XGBoost 功能。 |
| |
因此,今天在本教程中,我將向您介紹我們已經擁有的內容。我這裡有一本 JMP 期刊 |
| |
這將在會議材料中提供。如果你願意自己遵守的話,我會鼓勵你去做, |
| |
現在您可以暫停視訊並轉到會議資料,以獲取此期刊。您可以在您自己的 JMP Pro 版本中開啟它, |
| |
並且還有一個安裝連結。你必須安裝一個插件,如果你繼續安裝它,你將能夠在家中重現我在這裡所做的一切,甚至做一些你自己的遊戲。因此,如果可以的話,我鼓勵您這樣做。 |
| |
我確實有我的狗查理,他就在後台。我希望他不要做出任何令人尷尬的事。他現在看起來不太興奮,但他和我一樣熱愛 XGBoost,所以讓我們開始吧。 |
| |
XGBoost 是一個非常令人難以置信的開源 C++ 函式庫,已經存在了好幾年了。 |
| |
最初的理論實際上是由 20 世紀 90 年代的幾位著名統計學家提出的,但後來華盛頓大學團隊採納了這些想法並實施了它。 |
| |
我認為它真正發揮作用的地方是在一些 Kaggle 比賽的背景下。 |
| |
它從哪裡開始……一旦人們開始使用它並且它可用,它實際上就開始贏得過去幾年 Kaggle 舉辦的幾乎所有表格競賽。 |
| |
實際上,現在網上有數百個示例,如果您想進行一些搜索,您會找到它們。 |
| |
因此,我認為這可以說是目前世界上最受歡迎、也許最強大的表格資料預測建模方法。 |
| |
當然,存在競爭對手,對於任何特定的數據集,您可能會看到一些差異,但總體而言,這是非常令人印象深刻的。 |
| |
事實上,現在有一些具有競爭力的軟體包可以完成與 Microsoft 的 LightGBM 和 Yandex 的 Catboost 非常相似的功能。我們今天不會深入討論它們,但非常相似。 |
| |
呃,既然我們今天沒有太多時間,我不想過多闡述動機。但同樣,如果您想更仔細地研究它們,您可以閱讀這本日記。 |
| |
我想做的是向您介紹這本雜誌的亮點,特別是給您一些現場演示,以便您了解這裡的內容。 |
| |
然後,隨著時間的推移,您將可以自由地自行探索和嘗試這些事情。您將需要...您需要 JMP Pro 15 的功能副本 |
| |
最早,但如果你能得到 JMP 16 的早期採用者,官方的 JMP 16 要到明年 2021 年才會發貨, |
| |
但您現在就可以獲得早期採用者版本,我們正在那裡進行增強。所以我鼓勵您獲得最新的 JMP 16 Pro 早期採用者 |
| |
為了獲得此功能的最新功能。現在,這是 JMP Pro 的一種不尋常的新框架設定。 |
| |
我們在 Pro 中編寫了大量 C++ 程式碼,以便整合以獲得 XGBoost C++ API。這就是為什麼......我們大部分的工作都是用 C++ 完成的 |
| |
但是附帶一個附加程序,它會安裝動態庫並為您進行一些選單更新,所以您需要...您需要 Pro 並且需要安裝附加程序才能運行它。 |
| |
因此,如果可以的話,請抓住 JMP 16 pro 早期採用者,以獲得最新的東西,這就是我今天要展示的內容。 |
| |
讓我們直接來做一個例子。這是一個剛剛引起我注意的全新的。它的背後有一個非常有趣的故事。 |
| |
這些數據背後的研究人員是一位名叫 Jaivime Evarito 的教授。環境科學家專家、博士、教授、助理教授 |
| |
他現在在荷蘭烏得勒支大學,在他的許可下,他善意地提供了這些數據及其背後的故事,以幫助那些對這些數據感到如此……有點戲劇化的人。我讓他成為他的同事傑弗裡·麥克唐納 |
| |
收集了所有這些數據。這些是數據。目的是研究世界各地森林砍伐地區的水流徑流。 |
| |
你可以看到,我們這裡有 163 個地方,其中大部分在美國,然後是世界各地,他們能夠收集的不同地方 |
| |
樹木被砍伐的區域,然後他們進行了一些關鍵的測量 |
| |
就水徑流發生的情況而言。而這種研究對於研究樹木砍伐和森林砍伐對環境的影響以及氣候變遷非常重要,所以非常及時。 |
| |
當時 Jaivime 很高興,他們能夠在《自然》雜誌上發表論文,這是世界頂級科學雜誌之一,這真是一篇很棒的文章。 |
| |
他有經驗才能把它放進去。不幸的是,接下來發生的事情儘管有一個競爭實驗室對他們在本文中所做的事情非常批評。 |
| |
結果經過一番來回爭論,這篇論文最後被撤回了, |
| |
對於 Jaivime 來說,這顯然是一次非常艱難的經歷。我的意思是,他非常慷慨地分享了一個故事和希望。 |
| |
以避免這種情況。事實證明,這場爭議的根源還有很多其他的事情,但批評者的主要抱怨是… |
| |
我可能已經做了增強樹分析。這是一個非常簡單的模型。只有......我們可能只有少數預測因素,每個預測因素都很重要,但是他們的主要目標之一是確定哪些是最重要的。 |
| |
他使用單一保留驗證集運行了增強樹模型,並發布了大約 0.7 的驗證保留。一切看起來都還好, |
| |
但隨後批評者出現了,他們用不同的保留集重新分析了數據,並得到了驗證保留 R 方 |
| |
小於.1。這是一個相當巨大的改變。他們從 0.7 降到小於 0.1,而這個,這個被使用了,批評家們真的跳過了這個,並試圖真正抹黑正在發生的事情。 |
| |
現在,Jaivime,此時,Jaivime,這件事發生在去年,該論文於 2020 年早些時候被撤回... |
| |
Jaivime 今年夏天與我分享了數據,我的想法是進行更嚴格的交叉驗證分析,並實際進行重複的 K 折, |
| |
而不是僅僅一個堅持,為了試圖弄清楚兩個不同堅持之間的差異的真相。我所做的,我們有了新的慣例 |
| |
隨附的 XGBoost 新增可建立 K 折疊列。如果您會在此處看到資料集,那麼它們是我創建的。由於時間關係,我們不會討論如何做到這一點。但是還有 |
| |
現在有一個新模組,帶有名為 make K Fold columns 的標題,可以讓您做到這一點。我以分層的方式做到了這一點。有趣的是,它在幕後調用了 JMP DOE。 |
| |
這樣做的好處是你實際上可以創建正交折疊,這並不是很常見。下面我就來快速的進行一下分配。 |
| |
這就是 Jaivime 最初所做的堅持設置,他確實進行了分層,我認為這是一個好主意,因為反應有點傾斜。然後這是評論家使用的堅持集, |
| |
然後這是我最終使用的折疊。我做了三個不同的計劃。然後我想在這裡指出的是這些折疊是很好的正交, |
| |
我們透過使用三個正交集進行三次 K 折疊來獲得最大的資訊增益。 |
| |
所以,事實證明,因為他已經在使用提升樹,所以接下來要嘗試的是 XGBoost 添加。所以我很高興了解這個數據集並在這裡討論它。 |
| |
現在發生了什麼事......讓我在這裡做另一次分析,我在驗證集上做一種單向分析。事實證明,我錯過了我在這裡所做的就是回應,這個產水量得到了糾正。 |
| |
我正在將其與驗證集進行比較。事實證明 Jaivime 在他的訓練集中, |
| |
前四或前五個測量值中的前幾名都最終出現在他的訓練集中,我認為這就是問題的根源。 |
| |
而在批評者的集中,他們確實......它是平衡的,多一點,特別是最糟糕的......得分最高的位置在驗證集中。因此,這是錯誤的自然來源,因為它超出了進行訓練的任何內容。 |
| |
我認為這實際上是 K 折疊、K 折疊類型分析比僅僅進行單一保留集更引人注目的情況。 |
| |
我認為這兩個單一的保留集對它們都有一些偏見,最好做更多的折疊,在其中分層......分配東西 |
| |
每次都不同,然後看看多次擬合後會發生什麼。因此,您可以看到我在這裡創建的折疊在分佈方面的外觀,然後現在讓我們運行 XGBoost。 |
| |
因此,該插件實際上有很多功能,今天我不想讓您不知所措,但是,如果您想自己跟隨,我會再次鼓勵您跟隨並在某些地方暫停視頻 |
| |
確保;確定。但我們在這裡所做的,我只是運行了一個腳本。順便說一句,日誌中的所有內容都有...JMP 表很好,您可以在其中保存腳本。所以我在這裡所做的是從該腳本運行 XGBoost。 |
| |
讓我只是為了說明,我將直接從選單重新運行它。這將是您可能想要的方式。所以當你安裝插件時, |
| |
你先進行預測建模,然後再進行 XGBoost。因此,我們將其添加到預測建模選單中。所以你的設定方式 |
| |
是指定響應。這裡是 Y。有七個預測變量,我們將其作為 x 放入此處,然後放置它們的折疊列和驗證。 |
| |
我想在這裡向那些經驗豐富的 JMP Pro 用戶指出一點,XGBoost 處理驗證列的方式與其他 JMP 平台略有不同。 |
| |
目前它是一個實驗框架,但根據我的經驗,我發現重複 K 折疊是一種非常引人注目的方法,我想設定插件以使其變得簡單。 |
| |
因此,在這裡我再次放入我們使用該實用程式創建的這些折疊列,XGBoost 將自動執行重複的 K 折疊,只需像我們在這裡那樣指定它即可。 |
| |
如果您想像原始分析一樣進行單一保留,您可以像平常一樣進行設置,但是您必須建立列 |
| |
連續的。這是一個陷阱。我知道我們的一些早期採用者被這個絆倒了,這是一個與其他約定不同的約定 |
| |
JMP Pro 中的其他 XGBoost 或其他預測建模例程,但這對我來說似乎是最簡潔的方法。再說一遍,推薦的方法是運行 |
| |
像這樣重複K次折疊,或至少一次K次折疊,然後你就可以點擊「確定」。您將獲得這個初始啟動視窗。 |
| |
XGBoost 的特點是它確實有很多調整參數。關鍵的部分已在此框中列出,您可以使用它們。 |
| |
然後事實證明還有更多,它們隱藏在這個高級選項下,我們今天根本沒有時間。 |
| |
但我們已經嘗試...這些是您通常會遇到的最重要的問題...在大多數情況下您只需擔心它們即可。那又怎樣...讓我們運行...讓我們繼續運行它,從這裡您可以單擊 Go 按鈕,然後 XGBoost 將運行。 |
| |
現在我只是在一台簡單的筆記型電腦上運行。這是一個相對較小的數據集。沒錯……我們只是重複了,重複了五次 |
| |
三種不同的事情,只需要幾秒鐘的時間。 XGBoost 調整得非常好,並且適用於較大的資料集,但對於這個小範例,讓我們看看發生了什麼。 |
| |
現在事實證明,出現的這個初始圖表立即引發了一個標誌。 |
| |
我們在這裡看到的是…透過迭代次數、擬合迭代,我們得到了一條訓練曲線,基本上它就是您想要下降的損失函數。 |
| |
但實線是驗證曲線。你可以看到這裡發生了什麼。發生幾次迭代後,這條曲線就觸底了,然後事情變得更糟。 |
| |
因此,這實際上是您不想使用此預設模型的情況。 XGBoost 已經過擬合了, |
| |
對於像這樣的較小資料集,這種情況經常發生,並且確實需要進行調整。 |
| |
底部還有很多其他結果,但同樣,它們不會......我不認為它們值得信賴。此時,您需要...您需要進行一些調整。 |
| |
今天,我們只進行一些手動調整,但我會鼓勵您。我們實際上已經實現了用於創建調整設計的整個框架, |
| |
您可以在其中指定一系列參數並蒐索設計空間,我們再次實際使用 JMP DOE。 |
| |
所以這是......我們已經有兩種不同的方式使用 DOE,這兩種方式都確實增強了功能。現在,我們只根據該圖進行一些手動調整。 |
| |
您可以看看我們是否可以...放大該圖,我們會看到曲線正在觸底。讓我看看三到四次迭代後的情況,所以一件事,我們能做的一件真正簡單的事情就是,讓我們停止,即在四步後停止訓練。 |
| |
看看會發生什麼事。順便說一句,請注意我們的過度擬合發生了什麼,我們的驗證 R 方實際上是負數,所以非常糟糕。絕對不是推薦型號。但如果我們運行這個新模型,我們只需採取四個......只有四個步驟, |
| |
看看會發生什麼。 |
| |
更好的驗證 R 方。我們現在大約是 0.16,事實上我們只是為了好玩而嘗試 3 個。走著瞧吧。 |
| |
還差一點點。所以你可以看到這是一種你可以玩的東西。我們試圖在適合的地方建立這種對話。 |
| |
您可以在一開始就在此表上進行一些模型比較,以幫助您。您可以按不同的列進行排序並找到最佳模型,然後在下面深入了解各種建模詳細資訊。 |
| |
讓我們繼續使用 Model 2,我們能做的是… |
| |
我們只保留那個模型,然後您可以清理...您可以清理您不需要的模型,它會刪除隱藏的模型。 |
| |
現在我們開始了,回到我們想要更深入研究的模型。請注意,這裡我們的驗證 R 方約為 0.17。 |
| |
所以,請記住,這實際上是 Jaivime 最初得到的結果和批評者得到的結果之間的分歧。 |
| |
我認為這是一個更可靠的 R 平方度量,因為它再次被計算出來,我們實際上運行了 15 種不同的建模擬合, |
| |
五倍三次不同的時間。所以這是這些的平均值。所以我認為這是衡量模型性能的更清晰、更可靠的衡量標準。 |
| |
如果您向下捲動以尋找任何適合的模型,則會有相當多的輸出需要查看。再次...再次強調,JMP 非常擅長...我們總是嘗試提供接近統計數據的圖形,您可以 |
| |
兩者都能看到正在發生的事情並給它們附加數字,這些圖表正常顯示,互動性很好。 |
| |
但您可以在這裡看到,我們進行了實際訓練與預測和驗證的訓練。驗證過程中事情幾乎總是會變得更糟,但這就是現實。 |
| |
你可以再次看到錯誤發生的地方,這就是那個真正的高點,它經常得到......這是 45 度線。 |
| |
因此,高測量值往往......並且所有高測量值往往都被低估,這是很正常的。我認為對於任何像這樣的方法,它都會傾向於縮小 |
| |
極端值下降,只是保守。這樣您就可以準確地看到錯誤發生在哪裡以及錯誤的程度。 |
| |
現在,對於 Jaivime 的主要興趣來說,他們...他最感興趣的是了解哪些變數真正起作用 |
| |
此水校正效果。我們可以看到,排名第一的就是 PET。 |
| |
在 XGBoost 中評估變數重要性有不同的方法。您可以查看直接分割數,作為增益度量,我認為是 |
| |
也許是最好的開始。這是每次對某個變數進行分割時模型改進的程度。還有一種叫封面。 |
| |
在這種情況下,對於三者中的任何一個人來說,PET 都成為最重要的。基本上,這種快速分析似乎就是對這些數據採取行動的地方。 |
| |
現在,有了 JMP,我們實際上可以做更多的事情。您可以在建模紅色三角形下看到我們已經裝飾了很多新東西。您可以保存預測值和公式, |
| |
您可以發佈到模型庫或公式庫並在那裡執行更多操作。 |
| |
我們甚至有生成 Python 程式碼的例程,這不僅僅是為了評分,而且實際上是為了完成所有訓練和擬合,這是一種新事物,但會幫助那些想要從 JMP 過渡的人專業版轉向Python。不過在這裡,讓我們來看看分析器。 |
| |
我必須在之前的影片中向我的朋友布拉德瓊斯道歉,我忘記承認他是分析器的發明者。 |
| |
所以這實際上是一個案例,也是對他的一種讚揚,我們現在以另一種方式使用它,即評估變數的重要性以及每個變數的工作原理。所以對我來說這是一個非常引人注目的 |
| |
我們可以...我們可以看看這個框架。當我提到這一點時,查理…查理從沙發上站起來。他現在就在我身邊。 |
| |
所以,看看發生了什麼......我們可以看到有趣的是這個 PET 變量,我們可以看到關鍵時刻,似乎只要 PET |
| |
達到 1200 左右時,才是真正起飛的時候。所以這是一個非常好的說明分析器如何運作的例子。 |
| |
據我所知,這是第一次...這是第一次...這是唯一提供 |
| |
像這樣的圖,它超越了這些重要的統計指標,並準確地向您展示了正在發生的事情並幫助您解釋 |
| |
提升樹模型。我認為,這確實是一種很好的分析方法,我鼓勵這樣做……我鼓勵您用自己的數據嘗試。 |
| |
現在讓我們繼續看另一個例子,然後回到我們的日記。 |
| |
正如你所知,這裡有很多東西。我們自然沒有時間去經歷所有事情。 |
| |
但我們只是為了時間,我想向您展示當我們有二進制目標時會發生什麼。我們剛才看到的是連續的。 |
| |
為此,將使用舊的糖尿病數據集,該數據集已經存在相當長一段時間了,並且可以在 JMP 樣本庫中找到。這個數據集是相同的數據,但我們用一些新腳本對其進行了修飾。 |
| |
因此,如果您獲得該期刊並下載它,您將獲得這種增強版本,其中包含 |
| |
許多 XGBoost 都使用不同的二進制序數目標來運行,正如您所記得的,我們在這裡得到了從原始 Y 變數導出的低和高測量值, |
| |
觀察糖尿病的反應。我們將在這裡更進一步。讓我們想像一下,我們處於一種醫療環境中,我們實際上想要使用利潤矩陣。我們的目標是做出決定。我們要預測每個人, |
| |
無論他們是高還是低,但後來我想了想,我們意識到,如果一個人實際上很高,那麼風險會更高一些。 |
| |
因此,我們將把我們的利潤或損失加倍,這取決於實際狀態是否很高。而且當然, |
| |
這是一種通常是正確的工作方式...正確的決定在這裡和這裡。 |
| |
然後這裡有不正確的單元格,這些是…當您設定這樣的矩陣時,您需要考慮所有四個單元格。 |
| |
這裡要做一個簡單的。而且它已經翻倍了,我不知道你是否可以給這些真正的貨幣價值。如果您處於這種情況,這實際上是一件好事。 |
| |
誰知道呢,也許我們可以將它們視為 BitCoic,每個大約 10,000 美元或類似的價格。 |
| |
沒關係。更重要的是,我們希望根據我們的情況做出最佳決策 |
| |
我們的預測。因此,當我們現在進行分析時,我們將考慮這個利潤矩陣。它實際上是在模型擬合之後才完成的。它不直接用於配件本身。 |
| |
所以我們現在要在這裡運行 XGBoost,並且我們有一個二進制目標。如果您會注意到 |
| |
目標函數現在已更改為對數損失的邏輯,這就是此處反映的邏輯對數似然。 |
| |
您可以看到......我們現在可以透過二元目標來查看我們用來評估它的指標有點不同。 |
| |
不過,如果您注意到的話,我們確實有利潤列,這些利潤列是根據我們剛剛查看的利潤矩陣計算得出的。 |
| |
但是,如果您處於一種場景中,也許您不想擔心太多的利潤矩陣,只是直接的二元回歸,您可以查看常見指標,例如 |
| |
只是準確度(與錯誤分類率相反),這些 F1 或 Matthews 相關性很好看,還有 ROC 分析,可以幫助您平衡特異性和敏感性。所以所有這些都是可用的。 |
| |
你可以深入研究。我想展示的一件全新的事情是我們仍在努力,我們現在有一種方法可以讓您使用決策閾值。 |
| |
現在您實際上可以互動式地執行此操作。我們有一個新的…一個新的東西,可以按閾值繪製您的利潤。 |
| |
因此,這是一個全新的圖表,我們剛開始將其引入 JMP Pro,您必須獲得最新的 JMP 16 早期採用者才能獲得此圖表,但它確實適應了決策矩陣... |
| |
或利潤矩陣。我們正在研究的另一件事是您可以直接根據這個矩陣得出最佳閾值。 |
| |
我相信,在這種情況下,它實際上仍然是 0.5。因此,如果您的真正目標是利潤最大化,那麼這可以讓您更深入地了解您可能想做的事情。 |
| |
否則,您可能希望在給定上下文的情況下平衡特異性和敏感性,但您已經獲得了典型的混淆矩陣,如這裡所示,以及此處的一些用於訓練和驗證的圖表。 |
| |
然後是 ROC 曲線。 |
| |
您還會得到與我們之前在變數重要性方面看到的相同的東西。讓我們繼續再次進行分析器,因為這實際上是一個很好的... |
| |
在這種情況下,這也很好。我們可以準確地看到每個變數發生了什麼。 |
| |
例如,我們可以在這裡看到 LTG 和 BMI 是兩個最重要的變量,看起來它們都隨著反應的上升而上升,因此我們可以直接看到這種關係。事實上,有時對於樹木,你會得到非線性,就像這裡的 BMI 一樣。 |
| |
目前還不清楚這是否是真實的事情,我們可能想做更多、更多的分析或查看更多的模型來確保,也許這個小東西確實發生了一些事情 |
| |
我們看到的凹凸。但這些都是你可以梳理出來的東西,看起來非常有趣。 |
| |
所以,這就是糖尿病資料集的用途。該雜誌還有很多內容。由於時間原因,我今天不會展示另外兩個範例,但它們在 XGBoost 文件中進行了詳細記錄。 |
| |
這只是一個 PDF 文檔,其中包含有關加載項的大量書面細節,並逐步引導您完成這兩個範例。所以,我鼓勵您檢查一下。 |
| |
然後,期刊還包含一些已經完成的不同比較。 |
| |
你看到了我們看到的這個紫紫色矩陣。這是賓州大學進行的一項研究, |
| |
他們在一堆不同的資料集上相互比較一系列機器學習方法,然後比較一種方法優於另一種方法的次數。還有XGBoost |
| |
作為頂級模型出現,這種比較並不總是最好的,但平均而言,它往往優於您在這裡看到的所有其他模型。所以,還有更多證據表明 |
| |
該技術的力量和能力。現在還有一些其他的事情我不會討論。 |
| |
這個山谷的很有趣。在這種情況下,樹木根本不起作用。這是一種病態的情況,但研究起來很有趣,只是為了幫助你了解正在發生的事情。 |
| |
我們也在 JMP 的研發內部進行了一些相當廣泛的測試,其中許多結果都來自幾個不同的資料集。 |
| |
再次由於時間原因,我不會詳細討論這些內容,但我鼓勵您查看它們。他們確實......我們所有的結果都與這裡的期刊一起提供,您可以在相當多不同的領域和數據大小上使用它們。 |
| |
所以檢查一下。我想說只是為了好玩,我們在速度方面的結論總結在這個小模因中。我們有兩輛不同的車。 |
| |
事實上,這確實令人驚嘆,並且它經過調整以利用 GPU 中...CPU 中的所有...所有線程。 |
| |
如果您使用的是 Windows,並且擁有 NVIDIA 卡,您甚至可以利用 GPU,這通常會帶來五倍的速度提升。那裡有很多樂趣。 |
| |
現在讓我結束本教學。再次鼓勵您檢查。我確實想表達很多謝意。很多人都參與其中 |
| |
我擔心實際上,我可能忽略了一些人,但我至少想感謝這些人。我們有一個很棒的早期採用者群體。 |
| |
他們從 Marie、Diedrich 和 Villanova 的這些人那裡提供了非常好的回饋,實際上已經開始在課堂環境中成功使用 XGBoost。 |
| |
所以,很高興聽到這個消息。 JMP 內部的許多人一直在提供幫助。 |
| |
當然,這是建立在整個 JMP 基礎架構之上的。因此,非常需要在某個時候列出整個 JMP 部門並提供協助,這方面的工作非常有趣。 |
| |
然後我要感謝我們的生命科學團隊,他們讓我在各種事情上保持誠實。他們一直在幫助提供很多建議。 |
| |
Luciano 實際上已經實現了 XGBoost 插件,這是與 JMP Genomics 一起使用的不同插件,因此,如果您使用 JMP Genomics,我鼓勵您也檢查一下。您也可以直接在預測建模框架內呼叫 XGBoost。 |
| |
所以非常感謝您的關注,並希望您能得到 XGBoost 來嘗試。 |