6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kaggleメダル獲得を目指した挑戦の始まり

 エンジニア職へ転職したかった当時は社会人2年目。業務で経験を積めないということで実績づくりのためにkaggleへ挑戦したのが始まりでした。
せっかくなら、「Grandmaster」になる!
日本では「Grandmaster」= コンペで良い成績、機械学習ができる人のイメージが強いkaggleですが、世界的に見ると全く違います。 データ分析やEDAの作成で「Grandmaster」とっている人も同じぐらい評価されています。

「Grandmaster」を最短で獲得する方法として、
結果が出るまでの期間が長いコンペで一発メダルを獲得するか。
データ分析のEDA作成で地道にメダルを獲得するか。

初心者の私は、後者を選びました。

ただのデータ可視化で終わった初挑戦

最初のノートブックでは、データの可視化に全力を注ぎました。

全体コードはこちら
python
train_aux = df_[['date', 'sales', 'dcoilwtico','onpromotion']].groupby('date').mean()
train_aux = train_aux.reset_index()


graph1 = go.Scatter(x=train_aux['date'], y=train_aux['dcoilwtico'],marker_color='blue', text="sales")
graph2 = go.Scatter(x=train_aux['date'], y=train_aux['sales'],marker_color='red', text="sales")
graph3 = go.Scatter(x=train_aux['date'], y=train_aux['onpromotion'],marker_color='yellow', text="sales")


fig = go.Figure().set_subplots(rows=3, cols=3)

fig.append_trace(graph1, row=1, col=1)
fig.update_layout({"title": f'Avg Sales by date for all stores and products',
                   "xaxis": {"title":"Date"},
                   "yaxis": {"title":"Avg Unit Sold"},
                   "showlegend": False})

fig.append_trace(graph2, row=1, col=2)
fig.append_trace(graph3, row=2, col=1)




with open('./plotly10-1.txt', 'w') as f:
     f.write(fig.to_html(include_plotlyjs='cdn',full_html=False))


fig.show()

グラフを作成し、傾向を分析し、表現に凝っていくことで「データ分析をしている」という実感がありました。しかし、評価の結果は散々でした。振り返ると、ただデータの形を見ているだけで、分析の「目的」がまったくなかったのです。Kaggleで評価されるのは、データの本質を捉えた分析です。案の定、1年たったのに27voted 。単なる可視化では他の競合に到底及ばないことに、初めて気づかされました。

気づき

この失敗を通して、「データ分析はゴールを見据えてこそ意味を持つ」ことに気づきました。可視化はデータに取り組む第一歩に過ぎず、目的に基づく洞察がなければ、Kaggleの競争で結果を出すのは難しいと実感しました。

ターゲットを絞り、他者から学ぶことで変わった視点

そこで、次の挑戦では「何を達成したいのか」を明確にすることから始めました。データ全体を見るのではなく、課題に対してどの部分が最も影響を与えるか、ターゲットを絞り込んで分析を進めることで、具体的な成果が出るようになりました。こうすることで、データの背後にあるストーリーが徐々に見え始めたのです。

データ:プレミアリーグサッカーチーム
分析:得点と失点の関係性をグラフにし、試合数別を色として分類
気づき:サッカーは全てのチーム試合数が同じなはずなのでデータがおかしいのではないか
結果:データセットが間違っていた

スクリーンショット 2024-11-04 19.46.00.png

全体コードはこちら
python
# Calculate total matches (wins + draws + losses)
df['total_matches'] = df['wins'] + df['draws'] + df['losses']


norm = plt.Normalize(df['total_matches'].min(), df['total_matches'].max())
colors = plt.cm.viridis(norm(df['total_matches']))


plt.figure(figsize=(6, 4))
plt.scatter(df['goals_scored'], df['goals_conceded'], color=colors, s=100, edgecolor='black')

# Add labels for each point
for i, team in enumerate(df['team']):
    plt.text(df['goals_scored'][i] + 1, df['goals_conceded'][i] + 1, team)

sm = plt.cm.ScalarMappable(cmap='viridis', norm=norm)
sm.set_array([])
plt.colorbar(sm, label='Total Matches')

plt.title('Goals Scored vs Goals Conceded (Colored by Total Matches)')
plt.xlabel('Goals Scored')
plt.ylabel('Goals Conceded')
plt.grid(True)
plt.show()

また、Kaggleの他の上位参加者のノートブックにコメントを毎日することも始めました。トップkagglerがどのようにデータを扱い、どのような視点から考察しているのかを学ぶことで、分析の方向性が一気に広がりました。「このデータでは、何を重視するべきか?」「どの変数が特に有効なのか?」を考えることが、成功へのカギだと気づきました。

学び

目的を持ってターゲットを絞る:データ全体に目を向けるのではなく、特定の問題に対して有効な指標を絞り込むこと。
他者のノートブックからの学び:上位ノートブックには、独自の視点や効率的な分析手法が詰まっている。

挑戦を通して得た成長とこれからの展望

この経験を通して、「データ分析は単なる技術ではなく、戦略と目的意識が重要だ」ということを改めて実感しました。失敗と成功を繰り返すことで、分析へのアプローチが変わり、Kaggleの評価も徐々に上がってきました。まだ「Grandmaster」には届いていませんが、絶対に「Grandmaster」になります!

読んでくれてありがとうございます💓
kaggleもvotedしてくれると助かります

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?