透過 Kaggle,提升貴機構採用機器學習/AI 技術的技能

1. 簡介

47566e1490c16443.png

上次更新時間:2024 年 5 月 10 日

什麼是 Kaggle?

Kaggle 是最大的 AI 和機器學習社群,也是數據科學和機器學習愛好者的終極平台,無論程度如何,都能透過最新技術和科技提升能力。探索豐富的資料集、筆記本和預先訓練模型存放區,為下一個專案做好準備。參加競賽、修習課程,並與全球超過 1,800 萬名使用者組成的多元社群交流互動。無論你是初學者還是經驗豐富的專業人士,都可以在 Kaggle 精進技能、掌握最新趨勢,並協作尖端專案。

建構項目

在本程式碼研究室中,您將建立、設定及啟動 Kaggle 競賽。您將瞭解參賽者體驗,並掌握如何舉辦吸引人的競賽。

課程內容

  • 瞭解如何從主辦方的角度建立及管理 Kaggle 競賽
  • 瞭解競爭對手的體驗,從探索到提交
  • 瞭解如何舉辦吸引人的競賽

本程式碼研究室著重於快速建立競賽,並運用 Kaggle 日益擴充的競賽程式庫。

軟硬體需求

  • 最新版網路瀏覽器
  • Python 的基本知識

2. 開始設定

建立 Kaggle 帳戶

前往 Kaggle 網站 (https://www.kaggle.com/),然後按一下「註冊」建立免費帳戶。

驗證帳戶

  1. 按一下頁面右上角的個人資料圖片
  2. 按一下「你的個人資料」
  3. 按一下個人資料內容右側的「設定」按鈕
  4. 在「電話號碼驗證」下方,按照操作說明驗證帳戶

3. 建立第一個競賽

推出 AI 生成的競賽範本

Kaggle 的「AI 生成競賽」是一項新功能,可讓使用者輕鬆快速地建立機器學習競賽。這項工具會運用 AI 生成合成資料集,模擬現有資料集的統計屬性,且不含任何個人識別資訊。

運作方式如下:

  1. 選擇範本:根據不同的機器學習工作 (例如分類、迴歸),從範本清單中選取。
  2. AI 生成資料集:Kaggle 的 AI 會根據您選擇的範本,為競賽建立新的資料集。這個資料集與原始資料集類似,但使用部分特徵,且特徵分布略有不同。
  3. 自訂競賽:輸入競賽名稱、說明和時間表等基本詳細資料。你也可以選擇競賽的隱私權設定。
  4. 推出:確認詳細資料並設定推出日期後,即可推出競賽。

這項功能可簡化競賽建立程序,讓更多使用者都能參與,並專注於機器學習層面,而非資料集準備工作。

建立競賽

前往 https://www.kaggle.com/competitions/new,然後選取「New AI Generated Competition」(新 AI 生成競賽)

2629bf77a282a46c.png

選取「Regression with a Crab Age Dataset」競賽。

競賽詳細資料

2dd2228b9d686a6e.png

填寫描述性名稱和副標題。舉例來說,你可以使用「<你的名字>的螃蟹競賽測試」做為標題,並使用「建立我的第一個競賽,看看運作方式」做為副標題。請注意,系統會根據標題自動填入競爭網址。

瀏覽權限和存取權

現在需要設定競賽的瀏覽權限和存取權。

5c7dcae412ddd574.png

顯示設定

  • 公開:Kaggle 上的任何人都能看到你的競賽。這項活動會顯示在搜尋結果中,感興趣的使用者都能加入。
  • 私人:競爭對手不會公開顯示。這類活動不會顯示在搜尋結果中,只有您邀請的對象才能參加。

加入資格

  • 任何人:這就像開放溝通政策,Kaggle 上的任何人都能加入你的競賽。
  • 只有知道連結的使用者:這個選項的隱私權限制較嚴格。系統會產生專屬連結,只有知道連結的人才能加入。
  • 受限制的電子郵件名單:這是控管最嚴格的選項。您提供特定電子郵件地址或網域 (例如 @yourschool.edu) 的清單,只有擁有這些地址的使用者可以加入。

我們稍後會進一步說明「啟用 Notebook 和模型」設定。目前請務必開啟這項設定。以我們的範例競賽為例,請將這些設定設為「私人」和「只有擁有連結的使用者」

詳閱並同意條款,然後按一下「建立競賽」。

4. 瞭解及設定競爭對手

我們在幕後建立了一個全新的競賽,並提供獨特的資料集。讓我們快速回顧一下競賽設定。

「主機」分頁

主辦人分頁包含主辦人正確設定競賽所需的一切資訊。具體來說,請查看頁面右側的頁面清單:

bcedd6768cc4f32c.png

基本詳細資料

本節的內容包含:

  • 一般
  • 隱私權、存取權與資源
  • 時間軸
  • 得分和團隊

我們在推出競賽時,已說明「一般」和「隱私權」部分。

時間軸

競賽結束日期會考量時區。

7141f4aea90bccb0.png

得分和球隊

您可以在「評分與團隊」部分控管團隊人數上限、每日提交次數上限,以及最終評估時需選擇的提交內容數量。

5efb6387612db941.png

圖片

圖片:可自訂競賽的橫幅和縮圖。這會影響競賽首頁和競賽的登錄項目。

6dfd442376a1c702.png

主機

您可以在這裡新增其他 Kaggle 使用者做為競賽主辦人。其他主辦人將擁有競賽的完整存取權 (包括啟動)。

8f8c90eb6baa7747.png

評估指標

「評估指標」分頁是競賽的核心。從頭建立競賽時,您需要仔細思考要使用哪種評估 (或評分) 指標、上傳解決方案檔案、定義公開/私密測試分割,並提供範例提交內容。不過,由於我們使用了產生的競賽,因此不需要執行任何這類操作!

評分指標

這會決定系統如何根據解決方案檔案為提交內容評分。每個指標都有可用的文件和實際程式碼。

解決方案檔案

由於我們使用的是生成的競賽,因此這個檔案是您的競賽專屬檔案!

89fa1f42d177505a.png

解決方案取樣功能可讓您調整解決方案檔案的用量,以在競賽期間 (公開排行榜) 評估提交內容,並決定最終排行榜的列數。競賽期間,使用者可以根據「已評分私人提交內容」設定,選取要用於最終排行榜 (以下稱為「私人排行榜」) 的提交內容。

這個程序可確保競爭對手不會因過度訓練或大量提交而獲得獎勵。

沙箱提交

競賽主辦單位可藉此確保評分機制運作正常,並設定「基準」提交內容供參賽者比較。這些基準提交內容會顯示在排行榜上。

團隊與提交內容

在比賽期間,主辦人可以下載所有分數,以及管理隊伍。比賽開始前,這個部分會是空白。

發布檢查清單

我們將在下一節說明這項功能!

5. 發起競賽

50b03df072c02e6a.png

在競賽頁面頂端,按一下「啟動檢查清單」按鈕。

發布檢查清單

啟動檢查清單會顯示啟動競賽前必須完成的步驟。由於我們已從競賽範本開始,因此大部分步驟都已完成!只剩下兩項工作:設定截止日期和更新競賽規則。

938b9ed7bc4e0597.png

設定截止日期

首先,請按一下「設定截止日期」旁的箭頭。競賽通常至少會持續幾個月。競賽時間上限為一年。

編輯規則

您必須先更新預設範本中的競賽規則,才能發布競賽。如果您是為班級或群組舉辦這項競賽,不妨在此處說明相關規定。

推出

我們準備發布了!請繼續發起競賽!現在參賽者可以加入競賽了!

6. 競爭對手體驗

現在你已推出競賽,接著來看看競爭對手的體驗。我們會說明如何參加競賽及提交作品。如要參加,請前往 Google IO 示範競賽:https://www.kaggle.com/competitions/google-io-demo-competition

參加競賽

前往競賽首頁後,按一下右上方的「加入競賽」按鈕,然後閱讀並確認規則。

首次提交內容

前往程式碼分頁,然後按一下「New Notebook」(新筆記本)。系統會開啟筆記本,方便你提交參賽內容。

首先,我們會讀取訓練和測試資料

# read the test and train data

train = pd.read_csv('/kaggle/input/google-io-demo-competition/train.csv')

test = pd.read_csv('/kaggle/input/google-io-demo-competition/test.csv')

我們來看看資料。

# take a look at some of the data

train.head()

接著準備訓練資料。在本例中,我們會捨棄「Sex」,因為這不是數值。(提示:瞭解如何納入這項資訊應能提升模型效能)。

 # drop out the results from the test data

data = train.drop(columns=[‘Age', ‘Sex'])

answers = train[‘Age']

然後建立模型。在本例中,我們使用的是隨機森林模型。

# 個模型匯入作業

from sklearn.model_selection import train_test_split

from sklearn.ensemble import RandomForestRegressor

from sklearn.metrics import mean_absolute_error

model = RandomForestRegressor()

​​# train the model

model.fit(data, answers)

建立提交內容:

predictions = model.predict(test.drop(columns=[‘Sex']))

submission = pd.DataFrame({‘id': test[‘id'], ‘Age': predictions})

submission.to_csv(‘submission.csv', index=False)

然後選取右側選單中的「Submit to Competition」(提交至競賽),即可提交作品。

1cf17449cae53abe.png

舉辦優質競賽的訣竅

  1. 請務必加入可進行基本提交的入門筆記本
  2. 鼓勵參賽者在競賽初期使用討論區和共用筆記本
  3. 祝你玩得愉快!;-)