利用數據分析和機器學習是提高產量預測準確性和及時性的一種方法。我們使用 JMP 建立了一個預測模型來預測甜菜產量。整個過程完全在 JMP 中完成:資料收集、清洗、預處理、探索性資料分析、特徵工程、模型選擇、訓練、評估、調優以及後續的部署和維護。
大家好。今天我們來學習如何使用 JMP 進行預測建模,特別是農業產量預測。但值得一提的是,我接下來要展示的流程並非只適用於農業產量預測,它幾乎可以應用在任何領域。希望這能幫助大家了解如何自己動手操作。 JMP 中的一些小技巧會很有幫助,尤其是在預測農業產量方面。但正如我所說,無論你想預測什麼,這個流程都適用。
接下來我將提供一個簡要指南,並提供一些範例,說明如何在 JMP 中建立預測模型,特別是針對農業產量的預測模型。正如我剛才提到的,您可以將此方法應用於任何您想要實現的預測過程。這裡的具體問題是,早期準確預測作物產量對於農業領域的商業決策至關重要。然而,難以實現這一目標的原因之一是,甜菜的產量和品質每年都存在很大的波動。事實上,隨著時間的推移,這種波動的頻率和嚴重程度都在增加,這使得預測更加困難。因此,利用 JMP 等應用程式的預測功能來準確預測產量變得越來越重要和必要。
造成產量差異增加的主要原因之一是氣候變遷。正如我們接下來將看到的,我只想給大家概述一下甜菜種植。我所說的產量究竟是什麼意思呢?這裡有一個甜菜,它包含兩個方面。首先是甜菜的大小。這裡可以看到標示的是清理後的根重。正如你所看到的,這顆甜菜上有一些泥土。清理乾淨後,這顆甜菜的重量就是產量的一個組成部分。
第二個因素是品質,也就是甜菜中糖分的濃度。簡單來說,糖分濃度乘以甜菜的體積,就是最終的產量。
我們如何才能準確預測產量呢?首先,無論何種類型的企業,這個概念都是一樣的。我們需要收集盡可能多的地點和年份的數據,從而產生一個包含所有可能影響農業產量的因素以及產量結果的大型表格數據集,以便進行比較。我們產生一個包含眾多自變數和因變數的大型歷史資料集。
對於農業而言,有些例子確實需要產量數據,理想情況下還需要土壤健康、天氣、病蟲害、農場管理措施、種子品種、土壤地形數據、遙感數據等數據。數據越多,數據品質越好,就越能準確預測產量,也就能更準確地將產量變化歸因於這些因素中的某一方面,從而更能區分這些變數之間的差異。
在農業領域,影響最終產量的潛在變數數不勝數。幾乎不可能,甚至根本不可能,將所有資訊都包含在一個資料集中。但我們的目標是盡可能收集數據,以便更好地預測產量。首先,我們需要找到所有能夠取得的數據,將這些數據合併成一個數據集,並進行數據清洗和處理。然後在JMP中,我們可以進行探索性資料分析,目的是發現資料集中隱藏的模式和趨勢。由此,我們可以確定影響甜菜品質和產量的最重要預測因子。最後,我們可以利用這些重要預測因子來建構預測模型,進而預測未來的產量。
簡單介紹一下JMP的流程。第一步是資料收集,實際上也是最重要的一步。這一點我怎麼強調都不為過。數據品質至關重要。我的一位導師常說:「垃圾進,垃圾出。」 如果沒有高品質的數據,無論你的流程多麼完善,都無法建立出好的模型。所以,務必專注於獲取高品質的數據。
農業生產的一個優點在於,天氣是影響產量的重要因素之一。如今,借助科技手段,我們有了非常好的方法來追溯獲取特定田地、特定區域或其他任何地點的天氣資料。現有的技術能夠非常精確地從其他來源取得天氣資料並加以利用。
就農業而言,這確實是一個非常重要的環節,因為在很多情況下,你需要依賴合作企業或公司已經建立了良好的數據管理體系,他們能夠追踪許多重要的變量,盡可能多地收集數據,並妥善存儲以便於訪問。如果情況並非如此,那麼我們建立良好預測模型的可能性就會降低,而且可能需要數年時間才能收集到建立真正有效模型所需的全部資料。
接下來是資料清洗、預處理、特徵工程、探索性資料分析、模型篩選、訓練、調優和評估。最後是模型部署,可能還需要維護。第一步是收集數據。正如我所說,資料通常儲存在許多不同的位置、不同的資料庫中,甚至可能儲存在不同的工作表中,而 JMP 的目標就是將所有資料整合在一起。
在這個農業產量案例中,我們有三個資料集:季中樣本資料、天氣資料和最終產量資料。關鍵在於找到所有資料集之間的共同點,我們稍後會詳細介紹。之後,您可以使用 JMP 查詢建構器,輕鬆快速地將所有資料來源整合到一個地方,確保準確無誤。在本例中,共同點是合約編號和年份,我們可以以此為基礎合併資料。
我們直接進入第一步,我要向您展示的是資料預處理。根據您擁有的數據和您計劃進行的分析,您可能需要也可能不需要進行資料歸一化,但它可以提高模型的效能。讓我們來看看 JMP 中的操作。這裡有 JMP 平台和一些天氣資料。現在,如果我們打開它,進入分佈表,我們可以看到一些天氣變數。我們將它們新增到分佈表中。
現在,我們來看這裡,我把這個圖表放大一些。可以看到,這裡的降水資料呈現左偏分佈。未經標準化的數據可能會為模型帶來問題。模型可能更難識別偏斜資料中的關係。我們可以採取的一個措施是標準化數據。這裡是累計降水量數據,打開 JMP,找到該數據集。我們插入一個新列。公式。現在,我們討論的列就是降水量。
現在,為了將這些資料歸一化,我們需要對左偏資料求平方根。將其新增至列中的公式。點選“應用”。現在我們看到這裡有一個新的列。我們將其重新命名以便區分:歸一化降水量。現在,讓我們回到分佈圖,同時查看這兩列。暫時忽略它們,稍後會用到。我們可以看到這裡的原始數據。讓我們把這些座標軸貼到這裡。
現在,如您在分佈圖中看到的,原始資料呈現明顯的左偏分佈。而經過標準化處理(取平方根)後,您會發現用這些資料建模要容易得多。不過,您需要記住一點:在與客戶合作時,例如降水量,對他們來說很容易理解。如果您試圖向他們展示一個基於取平方根後的資料的模型,那麼降水量的平方根就失去了意義,而客戶通常需要易於理解的資料。因此,您可能需要在流程的最後階段對這些值進行逆平方根運算,使其更易於客戶理解。
總之,這是我們能做的一件事。讓我們回到幻燈片。下一步,進行一些資料清理和格式化通常很有幫助。首先我們可以看看表格拆分。在這個資料集中,你會注意到我們有不同的列,分別代表降水量、溫度、最低溫度、最高溫度,以及月份。對於我們的分析來說,每個溫度變數都對應一列,而月份列卻只有一列,這可能不太理想。我們可能需要調整一下,所以我們進入表格,選擇拆分。我們要按月份拆分。我們要拆分天氣數據,並保留所有其他欄位。
現在,在這個新的資料集中,您可以很快看到,每個月都有一列,這對我們來說方便多了。可以看到,這裡有「1月」、「2月」等欄位。現在每個月都有一列。這是我們可以查看的一個方面。我們先關閉這個窗口,暫時保留它。接下來我們可以合併數據,這是JMP非常強大的功能,可以快速合併多個數據集。我們快速看一下。
您可以看到,我們已經開啟了天氣資料。我們剛剛進行了拆分,現在這裡有第二個表,其中包含合約 ID 和收益率,以及網站資訊。我們想將這個資料集與天氣資料合併。該怎麼做呢?我們使用收益率資料集、表和查詢建構器。這裡有收益率數據。我們想把天氣資料也整合進去。您可以看到,JMP 已經找到了兩個與 JMP 完全相同的欄位:合約 ID,這正是我們想要的。
如果情況並非如此,通常您可能需要將其刪除。點擊這裡的 X 刪除,假設我們不需要刪除。然後您可以添加您自己的合約 ID。我們將它作為共同的線索。接下來,我們決定要使用哪種連接方式。這裡是一個 SQL 查詢,左外連接。不,我們不需要它。我們只需要內連接,即兩個資料集中的資料完全匹配。建構查詢。我們可以在這裡新增所有列,執行查詢,最後得到一個合併了兩個資料表的資料集。這是收益率數據。這裡是我們所有的天氣數據,現在我們可以開始分析了。
接下來,我們需要探索異常值。對於小型資料集,由於列數較少,使用 JMP 可以非常輕鬆地快速分析異常值,只需將所有要分析的資料匯入即可。我們這裡舉個例子,進行分佈分析。通常,很容易就能找出異常值的位置。可以看到,這裡明顯存在一個異常值。
然而,對於像我們這裡這樣可能包含數百列的大型資料集,手動操作太耗時了。在 JMP 中,我們可以選擇「分析」、「篩選」、「探索異常值」來解決這個問題。在這裡,我們可以添加所有列並運行異常值分析。我們選擇“分位數範圍異常值”選項。現在,我們立即得到了所有列的清單以及基於此測試的異常值數量。查看這些異常值的方法有很多,但這只是其中一種快捷方式。然後,我們可以選擇異常值,並將其排除或刪除。我們也可以選取異常值,並為儲存格著色以便稍後查看。這裡有很多選項。對於大型資料集,我們可以用這種方法快速排除所有異常值。
下一步是特徵工程,我們可以透過提供更好的資訊來提升未來模型的性能。這可能需要領域知識,或基於探索性資料分析的結果,您可能已經預感到以特定方式組合某些欄位可以提高預測能力。例如,在這個例子中,我們可能想要建立一個以「夏季降雨量(單位:毫升)」為特徵的指標。那麼,該如何實現呢?
簡單來說,我們回到 JMP。這裡有我們的資料集,我們新增一個新列,命名為「夏季降雨量(毫米)」。公式方面,我們來看看「夏季降雨量」這一列。統計方面,我們可以輕鬆計算平均值,並拖入我們想要應用的變數。現在我們有了一個新的特徵,名為“夏季資訊”,正如我們在這裡看到的。這是我們之前用正方形網格劃分的資料。特徵工程是我們應該關注的內容,它旨在透過建立能夠提高資料可預測性的特徵來提升模型的預測能力。
這裡還有一些我們可以在探索性資料分析中做的事情。反應變數篩選和預測變數篩選是JMP中非常強大的工具。我們這裡就不詳細講解響應變數篩選了。它的原理和預測變數篩選是一樣的。反應變量篩選會分析Y×X類型的變量,你可以查看各個自變量以及它們如何影響因變量。
預測因子篩選,我們現在來詳細了解。這是一個在大數據集上發現潛在趨勢的絕佳工具。在 JMP 中,依序點擊“分析”、“篩選”、“預測因子篩選”,然後它會使用隨機森林機器學習演算法。我們想看看哪些預測因子對產量(即反應值)的影響最大,以及原因。透過分析,我們發現場地可能是重要因素。我們希望盡可能納入變量,包括我們所有的數據。
現在這些都是樣本數據,所以我們不要抱持任何期望。為了提高速度,我們今天也可以同時運行它。直接把數據放在這裡。我們可以運行它,後台會運行這個自舉森林,我們會在這裡查看最重要的產量預測因子。你可以看到,根據這個分析,你必須謹慎對待,因為這只是樣本資料。你必須對結果持保留態度。你可以看到,在這種情況下,最重要的產量預測因子是地點。我們有三個不同的地點,最低溫度為11。
現在,我們可以從中識別出一些重要的變量,以便稍後將其納入模型。我們可以選取這些變數並高亮顯示。我們之後可能會用到它們。預測因子篩選是一個非常優秀的平台,可以快速識別給定反應變數資料集中的最重要預測因子。
現在,有了這些預測因子,我們可以快速查看主成分分析。接下來,我們可以…將我們剛剛分離出的、可能對收益率有重要預測作用的變數加入主成分分析。同時,我們也把收益率本身加進去。運行這個分析。我們先移除標籤。可以看到,我們得到了這樣的輸出結果,它可以快速地告訴我們很多關於資料集的資訊。在一個非常複雜的資料集中,我們可以開始非常簡單地看到這裡可能存在的關係。
您可以看到這裡有強烈的相關性,當這些列的值很高時,例如這裡是第 4 列,第 4 列是第 4 列,也就是最高土壤溫度,根據這個規律,當這些值非常高時,我們也會看到全球輻射量很低。當這裡出現直角時,在這種情況下,我們看不到這些變數與這些變數之間的關係。
現在來說說建模過程。這樣做的好處在於,我們可以看到這兩個變數——最高土壤溫度2和最高溫度2——不出所料地呈現高度正相關。同時使用這兩個變數不太可能為我們的模型提供更多信息,因此我們可以選擇其中一個用於建模,而排除另一個。這裡的情況也是如此,目的是為了優化我們的模型。主成分分析也是一個非常實用的小工具,可以用來優化我們的模型。
讓我們回到幻燈片。模型篩選。現在我們有了重要的變數。我們可能想找到最適合我們的模型。現在我們只需回到 JMP,選擇查詢、篩選、非篩選、預測建模、模型篩選。在這裡打開 JMP 平台,我們可以把之前找到的重要變數貼到這裡。然後我們可以輸入我們想要查看的結果。我們可以選擇所有想要比較的不同模型。非常重要的一點是,在所有情況下,我們都可以嘗試設定隨機種子以確保結果的可複現性。
如果你以後想再來做這個,而你之前沒有輸入隨機種子,你可能會得到不同的結果。但是,如果我們在這裡輸入隨機種子值(例如 1、2、3,非常簡單),結果就具有可重複性。然後我們可以查看所有這些不同的選項。我們已經可以整合到 JMP 中,讓 JMP 建立驗證列。我們可以加入不同的二次變數。今天我不會運行這個程序,因為它可能需要一些時間,但我們可以根據不同的指標來選擇性能最佳的模型,通常是基於 RSC 和模型 R²。在平台內,我們還有其他選項可以選擇。此外,還有一個不錯的工具可以幫助我們找到最適合我們資料的模型。
下一步是驗證。這將有助於模型訓練。確保模型沒有過擬合資料集至關重要。我們可以在 JMP 中快速建立驗證列,接下來我會示範如何操作。這裡是我們的數據集。我們依序點選「分析」、「預測建模」、「建立驗證列」。在這裡,您可以選擇基於某一列進行分層。
在這個例子中,資料集包含來自三個站點的欄位資料。現在,我們需要根據網站進行分層,因為我們稍後會拆分這些列,並隨機賦予它們值 1、2 或 3。如果不按站點分層,可能會導致問題:如果資料集中的站點數量不相等,或者每個站點的行數不相等,則可能會使資料集和模型產生不成比例的偏差。
重要的是要考慮你需要對資料集中的哪些欄位進行分層。好的。然後我們可以快速建立多個資料集,這裡有多種資料拆分方案,例如 70% 的資料用於訓練,20% 用於驗證,10% 用於測試。
現在您可以看到調整後的比率以及您將獲得的行數。重要的是要考慮資料集的大小,這決定了您是要使用訓練集、驗證集和測試集,還是只使用訓練集和驗證集,以及您需要進行怎樣的分割。此外,根據您的資料集,這些值可能會略有不同。
接下來,我們繼續。正如您在這裡看到的,我們快速建立了一個驗證列,這樣在建立模型時,我們就可以將驗證列新增到模型中。另外,正如我們在右側看到的,這是一個提升樹模型。值得一提的是,需要將模型調整到最佳的分割數、學習率、最小分割數等等,您可以在這裡看到所有這些參數。您也可以使用調優設計表。花點時間嘗試不同的選項,看看如何透過調整這些參數來獲得最佳的誤差和 R² 值,這是值得的。
不過,JMP 通常會根據你擁有的資料集給出這些參數的建議值,我發現這些建議值非常準確,而且通常表現最佳。即使你嘗試其他選項,這些推薦值也相當不錯。這是另一個需要考慮的因素。
現在我們進入模型評估環節,正如我剛才所說,這裡有 R² 和 RMSE。我們將探討一些評估模型表現的方法。回到 JMP,這裡是我們剛剛創建的模型。在這裡,我們可以選擇“因子分析”,然後選擇“分析器”。它已經開啟了。這裡是我們的模型和分析器,我們可以快速保存列,並在這裡產生預測公式。
用於進行預測的後台公式將儲存在資料集的某一列中。現在已經完成了。打開我們的數據集。您可以在這裡看到產量的預測值。現在我們可以進行分析,計算 Y 對 X 的擬合優度。在 JMP 中有很多方法可以做到這一點。這只是其中一種方法。我們的反應變數是產量。我們向下看。得到了 X 的預測值。好的。正如我們所看到的,模型效果不太好。我們可以從這條線擬合一條線,然後轉到擬合線。分析器。現在我們有了這個平台,可以看到產量的預測值。
假設我們預測的是 50,但我們不這麼做。我們預測的是 50。我們可以說:「好的,當我們預測值為 50 時,真實值可能是多少?」答案是 49.694。我們高估了。然後,你可以立即得到兩個非常有用的數字:95% 信賴區間的下限和上限。這只是使用資料集即時評估模型預測效果的一種方法。它們在這裡非常有用。
現在,我們來看看模型部署。我們的分析器有一些非常棒的組件,尤其對農業產量預測很有幫助。任何想要預測未來狀況的人,如果一年中不同時間會受到各種因素的影響,我們都可以利用模型模擬器來預測未來可能出現的各種情況,接下來我將向大家展示。
假設我們有了這個模型。我們進入分析器。現在,我們要如何將它應用到農業領域?您可以看到,這裡有三個不同的地點。我們有不同的變量,這些變量會在一年中的不同時間輸入。我們進入模擬器。我們可以把所有這些變數都改為隨機值。一個數字是…如果我們按住Shift鍵,然後繼續按住Shift鍵,點選Shift鍵,而不是Shift鍵,而是Ctrl鍵。好了。按住Ctrl鍵,點選,選擇隨機值。
您可以看到,我們現在可以選擇……稍微縮小一下。我們可以選擇在下面隨機產生模型運行次數。運行次數,10,000。您可以根據需要更改此數字。我們先設為 10,000。您也可以選擇新增雜訊。假設現在是三月。這裡的一些變數是在三月之前設定的。在三月份,我們可以進行評估,好的。
3月份的全球累積輻射量實際上是60,000。我們固定這個值,其餘所有值都可以隨機設定,然後使用平均值和標準差運行10,000次模型迭代。我們將產生更多平均值附近的值,減少極端值。這樣做可以模擬數據,產生一個龐大的數據集。我們還可以運行一些潛在場景,這非常有用。假設我們這裡採用常態刪失模型。我們想要排除資料集中的某些部分。這裡我們想要排除低於20和高於30的值。
您可以看到,我們現在已經對分佈進行了截尾處理。我們排除了達到這些極端值的任何可能性。我們還可以進一步這樣做。我們可以截斷數據,然後模擬可能發生的情況。現在我們有了所有可能的結果。產生表格。從這裡開始,分析分佈。我們可以添加產量。好的。現在我們得到了模型產生的值,這些值是經過 10,000 次可能情況的模擬後得到的。
現在您可以看到平均值為 53,中位數為 52.96。根據我們輸入的數值,最可能出現的情況是 53 左右。您可以清楚地看到機率在這裡顯示。您可以複製這一列,將其貼上到您需要的任何輸出位置,並開始根據模型的不同輸入繪製不同的結果圖表。這對於預測不同夏季天氣情境下的未來產量非常有用,並確保所有可能的情境都包含在分析中。讓我們回到 Excel 表格。
總結一下,JMP 是一個一體化平台,您可以在其中建立預測模型。我們在這裡展示了一些農業方面的洞察,適用於許多不同的商業案例。但整個流程非常適用於任何需要預測未來的用例。它能夠幫助那些擁有大量資料集但尚未充分利用的企業,將這些資料整合起來進行探索,從而挖掘出隱藏的趨勢,為未來的資料驅動決策提供支援。但至關重要的是,它依賴足夠的高品質數據來建立一個好的模型。希望這些內容對您有幫助。如果您有任何疑問,請隨時聯繫。以上就是全部內容。謝謝。