我和傑德在這裡。我們要聊聊登山車的懸吊系統,也會介紹一些我們在JMP裡發現的實用工具,這些工具幫助我們理解懸吊系統和網路上一些評測之間的關聯。這次演講其實源自於去年的Discovery Summit。我和傑德碰面後,我特別想知道「Functional Data Explorer是什麼?我該如何使用它?它能為我帶來哪些好處?」傑德比較了解我,就跟我聊起了山地車。這對我來說很有吸引力,讓我很興奮。最終,就有了今天的演講。
關於我們和本次演示,先做個免責聲明。我們與任何自行車公司均無關聯,也絕非業內專家。我們從Bike Radar網站收集了一些評測文章,並參考了他們的評測方法。然後,我們從一款名為Linkage的軟體中提取了一些懸掛曲線數據,這款軟體在網路上可以找到。
我不會建議你透過這次示範來決定接下來該買哪一輛自行車。這並非我們的目的。我們的目的是展示JMP中一些非常酷炫且強大的工具,幫助你理解一些傳統方法難以掌握的數據。
在正式開始之前,我們先來簡單了解一下山地車及其工作原理。登山車通常配備前避震器和後避震器。前避震器非常簡單,它只是沿著前叉進行線性上下運動。後避震則複雜得多。後輪上下移動,通常透過某種連桿機構將這種運動傳遞到位於車架中間的避震器。這種連桿機構可以具備多種不同的特性,我們將逐一介紹其中五個主要特性。
但最容易理解的可能還是槓桿比。也就是說,如果車輪移動一毫米,避震器會壓縮多少?減震器是否也壓縮了一毫米?如果是,那麼槓桿比就是 1。如果減震器壓縮的距離遠小於車輪移動的距離,那麼槓桿比就會更高,而這個值會隨著車輪的整個行程而改變。隨著車輪的移動,這個值也會變化,因此你可以得到一條曲線或函數數據,它定義了自行車的連桿機構。
我們提取了五條這樣的曲線。第一條是防下沉曲線。它與自行車加速時車身的運動狀態有關。當你踩踏板時,你的踩踏動作會導致自行車前傾、下沉還是保持相對水平?防下沉曲線反映了懸吊系統對加速力的反應。
防抬頭是自行車性能中的重要方面,它指的是當你煞車減速時,自行車是否會向前傾斜?它的懸吊是否會壓縮?防抬頭也是自行車設計師用來調整自行車性能或改善其騎乘表現的參數之一。
我們剛才簡單聊了聊槓桿比。槓桿比指的是車輪轉動多少時,避震器壓縮多少。槓桿比真正有趣的地方在於(我們會在演示的最後部分詳細討論),它是針對特定減震器進行調校的。自行車有氣壓減震和螺旋彈簧減震,根據你使用的減震器類型,你會看到不同的槓桿比曲線。重要的是,槓桿比是可以調校的,但這種調校並非孤立進行,而是很大程度上取決於你使用的避震器類型。
軸距軌跡是另一個需要考慮的因素。當車輪向上移動時,它是大幅後移,還是垂直上下移動,還是略微前移?在這個圖中,你可以看到 Y 軸表示車輪的移動距離,X 軸表示車輪的前後位置。車輪初始位置為零。在這張藍色圖表中,你可以看到車輪最初會略微後移,然後再前移。你可以想像一下,當你沿著小路騎行時,如果你向前行駛,你肯定希望車輪後移避開障礙物,而不是前移撞上障礙物。軸距軌跡的概念很容易理解,它對自行車性能的益處也顯而易見。
最後一種情況是踏板回彈。當車輪轉動時,踏板與車輪之間的距離有時會略微增大,這會導致踏板向後移動。這通常不是好事,它會讓你在騎車時感到不舒服。
這些就是我們感興趣的曲線。這就是我們感興趣的空間,我們可以透過連結來獲取所有這些資訊。現在的問題是,我們要如何獲得評論?我目前還在使用 JMP 18 之前的版本,但我可以編寫一個 Python 腳本,我不會詳細講解這個腳本的工作原理。如果有人有任何問題,歡迎隨時與我聯繫。我很樂意解答。簡單來說,我的桌面上有一個 Python 腳本,JMP 會運行它。這個 Python 腳本會連接到 Bike Radar,收集大量評論,然後產生幾個 JMP 資料表供我們查看。
首先是這個總計表。它提供了大量關於自行車評測的元數據,包括自行車型號、評測類型(完整評測、長期評測或首次騎乘評測)以及發布日期。此外,它還提供了一些短期評價、總體評分、URL、自行車類型以及作者資訊。最後是評測正文部分,同樣包含自行車型號、具體章節以及評測正文。
我們收集的每篇評測都包含三個部分:爬坡部分、下坡部分和總結部分。每輛自行車都有這三個部分,因此我們可以檢視它的爬坡性能如何?它爬坡順暢嗎?下坡性能如何?它下坡平穩嗎?最後,評測員對這輛自行車的整體感受如何?
我們已經討論了我們將要用於分析的兩個組成部分。我們有曲線,我們可以用這個連動軟體產生這些曲線,我們還有評論。
但是現在,我們如何將所有這些資訊轉換成 JMP 可以理解並進行分析的形式呢?為此,我們從連結中得到了一個圖像。問題是,我們如何將這個圖像轉換成 JMP 可以理解的形式?
JMP 的一個很棒的功能(也是我最近才發現的)是它可以打開圖像。你需要運行一些 JSL 程式碼才能做到這一點。但如果你這樣做,你就能得到一張圖像,然後可以得到一個表格,其中包含像素在空間或圖像中的 X 和 Y 座標。表格也會給出影像中每個像素的紅色、綠色和藍色值。
太好了。但這仍然沒有真正滿足我們的需求。我們需要這條曲線,但我們可以做得更好。如果我們能找出所有藍色值,就能…好的,我們可以得到所有藍色值,然後如果我們能將它們映射到這個圖空間中,我們就能產生一條曲線。
我非常喜歡 Workflow Builder。它讓我的工作輕鬆很多,因為我可以直接用圖形化的方式操作並獲得結果。所以我快速建立了一個 K 均值聚類工作流程。這張圖很實用,因為它只有三種顏色。如果我們產生三個分組,並將這些聚類的公式保存到表格中,現在我們就可以從這個表格中獲得 X 和 Y 座標的圖表,然後根據聚類公式為它們著色。可以看到,第一個聚類公式對應的是所有藍色像素。我們可以用它來開始計算:“好的,這些是藍色像素。那麼,它們的位置在哪裡?我們知道它們在圖像中的全局位置。我們需要將它們映射到圖表上的位置。”
我不會深入探討這個問題,因為它有點複雜,但我會向你們展示我們最終定稿的劇本是什麼樣子的。
它會顯示影像,然後提示:「好的,你需要輸入該圖的 Xmin、Xmax、Ymin 和 Ymax 值。」我要輸入的是 Xmin 到 Xmax 的範圍,Ymin 到 Ymax 的範圍是 0.45 到 1.35。點選“確定”。最終結果是……需要把所有數據拖到這裡。最終會得到一個數據表,其中包含 X 值、Y 值,以及我們正在查看的房產和自行車資訊。這只是一個範例圖像。你可以看到,這是我們最初的圖。這是我們提取出來的圖。我們透過輸入這些值,觀察藍色像素,然後計算「好的,根據我們的全域位置,它是如何映射到我們定義的 0 到 130 毫米範圍內的」。
毋庸置疑,這並非一個完美的過程,但它確實能很好地展現每條曲線的走向。這需要一些時間。我和傑德在一個晚上花了幾個小時輸入數字,但過了一會兒,我們就得到了所有可以用來分析的曲線。
現在我們來談談,“好的,我們如何處理這些文本?我們如何將文本轉換成我們可以使用的形式?”
謝謝,蘭登。正如蘭登所說,我們已經有了文本,並將文件保存為三個獨立的 CSV 文件:一個用於記錄爬升過程,一個用於記錄結論,一個用於記錄下降過程。這些文件我都保存在桌面上了。如果你還不知道的話,JMP 有一個非常棒的功能叫做「匯入多個檔案」。我們之前就用過這個功能。不過為了節省時間,我打算稍微取巧一下,直接執行腳本來完成。這個腳本實際上把這三個檔案匯入到了一個 JMP 檔案中。我只需右鍵點擊一下,重新編輯一下檔案名,就可以分別把檔案名稱改成「結論」、「下降」和「爬升」。
現在我的資料已經格式化完畢,可以開始使用了。所謂“可以開始使用了”,是什麼意思呢?我們需要把每個欄位中的文字轉換成數字,這樣我們才能進行處理和統計分析。 JMP 的一個我最喜歡但又不太常用的功能就是文字瀏覽器。它其實非常簡單。如果某一列中有文本,那麼,嗯,就是文本本身。我們可以忽略其他所有內容,因為我們不會使用其他任何東西。這項任務相當簡單。
順便提一下,情緒分析是 JMP Pro 的功能。如果您安裝了 JMP Pro,就可以使用這項情感分析功能,它會遍歷所有文本,並為其分配一個情感評分或感覺評分。我們立刻就能看出,評論者普遍對這些自行車持正面態度。
但我想指出一點,這裡涉及到文本篩選的概念。我向下滾動看到“pedal bobbing”這個詞,聽起來很奇怪。它不是在告訴鮑伯踩踏板。在山地自行車運動中,「pedal bobbing」指的是踩踏板時懸吊上下晃動,這是一種不好的現象。 JMP 會考慮「pedal bobbing」這個奇怪的字嗎?預設情況下不會,但添加起來非常容易。我打算在情緒分析中使用它。我要管理這些情緒詞條。我可以輸入“pedal bobbing”,然後給它打-50分,把它加進去。然後你會發現,當我點擊「確定」後,分數會略微變化。雖然很簡單,但也很耗時。
我有一些單字。這實際上是蘭登在周六做的,他瀏覽了文檔,整理了所有情感詞語,並將它們保存到一個文本文件中。基本上是手動操作了一次。然後 JMP 會將它們複製到剪貼簿,我可以按 Ctrl+V 貼上。點擊“確定”後,現在會進行調整。我也可以用文字文件對否定詞和加強詞做同樣的事情。但與其讓你們看我複製貼上,我還是走個捷徑吧。
現在,所有這些資料都已針對此語料庫或此文件集進行了本地化。語言已準備就緒,因此我們可以開始信任這些分數。既然我信任這些分數,我想對它們進行一些處理。要進行處理,最簡單的方法可能是點擊紅色三角形並點擊「儲存文件分數」。執行此操作後,請轉到表格,之前只有文字的表格現在多了幾列,分別顯示正面和負面情緒的數量以及總體情緒值。
現在我差不多準備好了。接下來我只需要用製表函數把資料更好地整理一下,這樣爬坡資料就能分成整體正負兩部分。結論部分也是一樣,要分成整體正負兩部分以及下坡資料。如果我把這些資料做成資料表,現在就可以開始處理了。我有了每輛自行車的數據,以及爬坡、下坡和整體的數據。這意味著我可以用圖表產生器來比較下坡和爬坡的整體表現。我可以這樣說:「這些是自行車。如果我要得出結論,這些是爬坡和下坡都表現出色的自行車。」 簡而言之,我現在可以開始處理這些數據了,它們被視為具有性能指標的數據。好了,我們回到蘭登那裡。
好的,謝謝你,傑德。我這裡有傑德製作的那張表格,我們可以看到,表格裡有自行車的圖片,還有我們對整體感受的分析,包括爬坡、下坡和結尾這三個類別的正面和負面感受。我們已經有了這些資訊。另外,我們也分析了所有圖片,並產生了這個曲線圖。
目前這張表格針對每輛自行車,包含了各項屬性,例如防下沉。如果我滾動瀏覽,可以看到還有防抬升、後輪行程以及所有其他不同的屬性。然後是…X軸表示自行車目前行程的位置,Y軸表示該位置對應的屬性值。
我們注意到這些自行車的行程差異很大。有些自行車的行程是 100 毫米,或車輪可以移動 100 毫米,而有些自行車的行程是 180 毫米。這給我們造成了一些問題,所以我們實際上將所有行程標準化到了 0 到 1 之間。因此,我們不再關注車輪移動了多遠,而是關注自行車行程所佔的比例。是行程的 50%,還是最小行程?
現在,為了在函數式資料瀏覽器中查看這些數據,我們希望它的格式稍作調整。我們將把行程值設為序數值,然後就可以使用製表工具了。我和 Jed 在這個專案中大量使用了製表工具。我們可以選擇自行車,然後添加行程,獲取該屬性,然後就可以得到“好的,這裡的 Y 值是多少?”
我們把這些資料做成一個資料表,看起來有點亂,因為每個數值對應的位置並不完全一致,所以這裡有很多缺失值。例如,踏板回彈有值,但其他數值都沒有。槓桿比也有值,但其他數值都沒有。結果發現這樣看起來不太美觀,但實際上並不會導致任何問題。當我們把這些資料匯入到 Functional Data Explorer 時,它會很好地處理這些缺失值,不會造成我們任何問題。所以我們覺得這樣挺好。
接下來,我們需要將這張表與包含所有自行車評量分數的表連接起來。最簡單的方法是使用虛擬連線。您可以在這裡呼叫連結 ID,然後在這裡建立一個連結引用,這樣我的系統就乾淨了。我這就把它打開。
您可以看到,這裡是我們所有的曲線數據。包括自行車的行程位置、平均防抬升、防下沉、槓桿比、踏板回彈和後輪軌跡。此外,這裡還有我們所有的感受評分。
現在,我們要把這些資料匯入功能資料瀏覽器(Functional Data Explorer)中,並開始分析這些情緒與曲線形狀之間的關係。如果我們進入“專業建模功能資料瀏覽器”,現在就來看其中一條曲線。我們來看後輪路徑。 X軸輸入是歸一化的行程,自行車名稱作為ID。接下來,真正的關鍵在於將所有情緒分數添加到補充欄位中。
現在,當功能數據瀏覽器運行時,這些曲線非常漂亮,因為它們非常平滑,而且是由連桿機構產生的,所以B樣條曲線擬合得非常好。我們可以用B樣條曲線擬合所有這些曲線,可以看到,大部分變化都集中在形狀函數1。如果我們看診斷圖,可以看到分量1的變化很大,而分量2的變化不大。然後我們可以把滑鼠懸停在這裡,可以看到:“好的,這是一輛自行車,如果我們觀察它,會發現它的車軸軌跡向前移動了很多。而在另一端,我們看到車軸軌跡向後移動了很多。這就是我們的兩個極端情況。”
現在,完成上述步驟後,我們可以利用附加資料來分析我們的 B 樣條曲線。由於我們增加了 Z 個額外的因子,因此可以進行功能性 DOE 分析。此分析能夠建立情緒分數與後向路徑之間的關係。由於這些術語很長,所以可能不太容易理解。但前三個術語分別代表我們對攀岩的整體情感、正面情感和負面情感。
如果我們只專注於爬坡,並且希望對爬坡的整體評價非常好,或者負面評價非常低,那麼我們的自行車行駛軌跡大概是這樣的,或者說,我們的後輪行駛軌跡大概是這樣的。你可以看到,這是一條相當標準的後輪行駛軌跡。它既沒有向前移動很遠,也沒有向後移動很遠。所以你可以大致了解後輪行駛軌跡。我們可以對每條不同的路徑重複這個過程。我們已經這樣做了,並且保存了這些預測公式。
最後,我們將所有這些結合起來,建立了一個分析器,該分析器將向我們展示,根據我們所有的評論和我們收集的所有曲線,評論和曲線是如何連結起來的?
這是我們的結論部分,包括正面評價、負面評價和整體評價,以及爬坡的正面評價、負面評價和整體評價,還有下坡的正面評價、負面評價和整體評價。我們來看一個例子:「我們想要一輛特別擅長下坡的自行車。」所以我們要考察下坡的整體表現。我們不希望下坡的負面評價太多,我們希望下坡的正面評價很高。
這有什麼作用呢?如果我們把這條後輪軌跡和之前看到的後輪軌跡做比較,這條軌跡的弧度會大得多。這很合理。這就像騎自行車時,後輪在遇到路面障礙物時會向後移動,避開障礙物一樣。例如下坡時撞到石頭,後輪就會往後移動。
我還要指出一點,那就是槓桿比。我之前也提到過。登山車的避震器有很多種,有彈簧避震器,也有氣壓避震器。這裡就不贅述細節了,這就是彈簧避震器的典型槓桿比。如果你去看看所有專注於速降的登山車,你會發現它們都配備了彈簧避震器。目前產業的大趨勢就是在速降登山車上安裝彈簧避震器,因為它的性能非常出色,我們的數據也證實了這一點。
我們也可以反過來考慮。我們現在不太在意下坡,但我們想要的是極佳的爬坡性能。我們想派一輛腳踏車去參加世界盃。現在我們的後輪軌跡和防抬升角度都略有不同。槓桿比,這種槓桿比在氣壓避震系統中更為常見,你會在專注於爬坡的自行車上看到這種配置,因為它更輕。它在爬坡性能方面也會更勝一籌。
這裡的想法是,我們並不是要展示“好的,這就是設計自行車的正確方法”,而是要展示“好的,我們有一些非常複雜的數據”。我們有來自網站評論員的評價,有以圖表形式呈現的曲線,利用 JMP,我們可以將所有這些數據整合起來,並生成一個儀錶盤,這個儀表板能夠很好地幫助我們理解“好的,這就是評論和這些槓桿比率之間的聯繫”,以及一些能夠幫助我們全面理解並進行更嚴謹分析的信息,而不僅僅是“嗯,我認為它應該是這樣的”。
以上就是我們想分享的內容。如有任何疑問,歡迎隨時與我們聯繫。感謝您的時間。