日本は他の国のKagglerよりTwitterが活発なのか

3行で

  • 最近、日本人Kagglerが強く・多くなっているのか、日本は他の国のKagglerよりTwitterが活発なのかを調べた。
  • 2021年12月時点で、KaggleRankTop100の中で最もユーザーが多い国は日本であり、ユーザー増加率、Tweet率も高い可能性がある。
  • 今後も日本人Kagglerの活躍を応援しています🙇‍♂️

目次

初めに

この記事はKaggle Advent Calendar 2021の18日目の記事です.

最近、日本人Kaggler強い気がしませんか? コンペが終わるたびに全日本人がメダルを取得し、Expert、Master、GMに昇格してませんか?私の気のせいでしょうか・・・。 また、それと同時に日本人Kagglerがどんどん増えている感覚もあります。

仮に、日本人Kagglerが最近強く、そして多くなっているのが本当だとしたら、他の国と比べて日本にはどのような特徴があるのでしょうか?

私は、その一因に「コミュニティの強さ」があると考えています。Kaggler-ja, 多くの勉強会・懇親会、Twitter上での交流など日本ではKaggleに関する多くのコミュニティが存在します。 もちろん外国にも同様のコミュニティが存在するのは知っていますが、観測しやすいTwitter上では、日本人の交流が非常に活発なように見えます。

本来はこの交流の活発さをネットワークの観点から調べたかったのですが、TwitterAPIなどの制限が厳しくネットワーク分析に辿り着くのが大変そうだったため、今回は下記の3点に絞り、簡単にできるレベルで確認しました。いつかもっとやりたい。

  • 最近、日本人Kagglerが強くなってきているのか
  • 最近、日本人Kagglerは多くなってきているのか
  • 日本は他の国のKagglerよりTwitterが活発なのか

実装

実装は下記です。gokartというpipelineを用いています。

github.com

最近、日本人Kagglerが強くなってきているのか

シンプルに考えると、KaggleRankの国ごとの平均が、年ごとにどのように推移しているかを見たいですね。 ただ、Meta Kaggleなど覗きましたがそのようなデータは見当たりませんでした。

しかし、2016年頃のKaggleRankがTop100のUserの国情報を取得しているNotebookがありました。

Top-100 Kaggle users by Country www.kaggle.com

この情報を活用させてもらいましょう。同様の情報を2021年12月14日に、Kaggle User Rankingを手動で一人一人確認して国の数を集計しました。 その数の上位10国を2016年、2021年それぞれでグラフ化します。

f:id:sinchir0:20211214222540p:plain
2016年と2021年のKaggleRankがTop100のUserの国の数、上位10国

2021年の情報だけでもかなり面白いですね、分かることをまとめます。

  • 2021年12月時点で、KaggleRankTop100の中で最もユーザーが多い国は日本である。
  • 2016年と比較し2021年では、日本人のtop100ユーザーは増加している。

一つ目、私は知りませんでした・・・、いつの間にという感じですね。2018年の情報とかも知りたいのですが、過去のRanking情報の取得ができなかったためここで断念です。

次に各国のユーザーが2021のRankingのどの辺りに所属しているかの分布を確認します。今回は上位2国であるJapanとUnited Statesで比較しましょう。

f:id:sinchir0:20211214221527p:plain
KaggleRankにおけるUnited StatesとJapanのヒストグラム

上記グラフから下記のことが分かります。

  • 2021年12月時点で、日本はKaggleRankTop100の後半に属しているユーザーが多い

そのため、Top50などに絞るとまた違った結果になると思われます。

最近、日本人Kagglerが増えているのか

全ユーザーの国情報を集計したいですが、データが見つかりませんでした。

しかし、Kaggleが毎年行っている調査に国別の回答者数のデータが公開されています。これを疑似的な国別のKaggleユーザー数と考え、日本のランキングがどう変化しているか確認しましょう。

下記Notebookが国ごとのランキングを出力しているため、お借りして日本のデータを確認してみます。

A deep dive into the Kaggle Survey from 2017-2021✨ www.kaggle.com

f:id:sinchir0:20211207073523p:plain
Kaggle Machine Learning & Data Science Surveyにおける日本の回答者数の推移

グラフを見ると下記のことが分かります。

  • 2017年では回答者数Top10に入っていなかった日本が、2021年に向かって順位を10→4→4→3と上げている
  • 日本は他の国よりもユーザーの増加率が高い可能性がある。

これまた日本凄いって感じですね・・・Kaggle大国と呼ばれる日も近いかも、というかもう来ている?

日本は他の国のKagglerよりTwitterが活発なのか

では、Twitterが活発なのかどうかを調べていきたいと思います。

理想としては「国ごとのKagglerがどの程度Twitter上で発信しているか」を集計したいです。

しかし、TwitterAPIではProfileに対するキーワード検索が(試した限りでは)出来ず、Profileに"Kaggle"という文字列を含むアカウントを特定することができませんでした。

そのため、なんとなく国とTweet活発さが分かる手法として「直近3週間の"Kaggle"を含むTweetを全て取得し、その言語を判定する」という方法を取ります。

直近3週間の"Kaggle"を含むTweetの言語判定

データ集計

データ集計期間は11/26 ~ 12/17です。その中で、"Kaggle"と含まれるTweetを下記条件で取得しています。

  • Tweet,、Reply、引用Retweetを集計し、Retweetは除外。
  • Reply先のuser_nameに"Kaggle"という文字列が含まれている場合を除外。

データ件数は、5126件となりました。

言語判定の方法

下記記事「タイトルの言語判定特徴」から、fastTextによる言語判定の方法をお借りします。

www.guruguru.science

実装はこんな感じ

最近遅くないpandasの書き方という記事でpandas.applyよりもnumpy.vectorizeの方が速いと見たので早速使ってみています。

class AddClassifyLangColTask(GokartTask):

    preprocess_task = gokart.TaskInstanceParameter()

    fasttext_path: str = luigi.Parameter()

    def requires(self):
        return self.preprocess_task

    def classify_lang(self, model, text: str) -> str:
        return model.predict(text)[0][0][-2:]

    def run(self):

        df = self.load_data_frame()

        model = load_model(self.fasttext_path)

        df["lang"] = np.vectorize(self.classify_lang)(model, df["clean_text"])

        df["lang"] = np.where(
            ((df["lang"] != "en") & (df["lang"] != "ja")), "others", df["lang"]
        )

        self.dump(df)

判定結果

言語判定結果は下記のようになりました。

f:id:sinchir0:20211218002208p:plain
取得Tweetの言語割合

絶対数として日本語が最も多いということが分かります。 しかし、この情報だけではTwitterのそもそもの利用者数が国ごとに違うため、正確な比較ではありません。

例を出すと、現在は

  • Twitterユーザーが10万人の言語で1500tweetされたこと
  • Twitterユーザーが1万人の言語で1500tweetされたこと

を比較しているのと同じ意味になります。これは公平な比較とは言えません。 そのため、「Kagglerでもあり、Twitterユーザーでもあるユーザー数」を言語ごとに知り、その数でTweet数を割りたいです。

しかし、「Kagglerでもあり、Twitterユーザーでもあるユーザー数」は取得する方法が思いついていません。

そこで、Kagglerの条件は外し、「Twitterユーザーの総数」のみで計算を行います。 ここでは、「Kagglerでもあり、Twitterユーザーでもあるユーザー数」は「Twitterユーザーの総数」に比例する、という仮定をおきます。

Twitterユーザーの総数」として、Twitterの国別MAU(Monthly Active User)を利用します。 Monthly Active Userは、1ヶ月の間に何人のユーザーが利用したかを表す指標になります。

(言語ごとのTweet数 / 言語ごとのユーザー数)を計算することで、「Twitterユーザーの総数」を考慮した数字で比較を行います。

今回は簡易的に実施するため、下記のような仮定を置きます。もちろん現実は色々な国で多様な言語が使われています。

  • 英語 : U.SのMAUを利用
  • 日本語 : 日本のMAUを利用

MAUは下記のサイトの数字を利用しました。

www.statista.com

サイトより、2021年10月時点でのUnited StatesのMAUは77.75million(7775万人)、日本は58.2million(5820万人)となっています。 2021年11~12月でも大まかな数字は変わってないだろうということで、英語・日本語の数字を上記の77.75million, 58.2millionで割ってみます。

f:id:sinchir0:20211218002341p:plain
1月当たり平均何回Kaggleが含まれるTweetをするか

Tweetの取得期間が3週間、MAUは1ヶ月のアクティブユーザーです。 分かりやすさのために「取得Tweet数/MAU」の数が「各ユーザーが1ヶ月当たりに平均して行うTweet数」と近似します。

上記近似を踏まえると、このグラフから、下記が分かります。

  • 日本語のTwitterユーザーは1ヶ月当たり平均0.000029回Kaggleが含まれるTweetをする
  • 英語のTwitterユーザーは1月当たり平均0.000020回Kaggleが含まれるTweetをする

・・・数字が小さすぎてよくわからないですね。直感的な数字ではありませんでした。

しかし、下記のことは分かります。

  • 日本語のTwitterユーザーは、英語のTwitterユーザーよりも1月当たりに"Kaggle"を含むTweetをする平均回数が多い

大雑把な仮定も多いですが、Kaggle関連のTweetは、日本語の割合も多く、日本人Kagglerが最もTwitterを積極的に利用している可能性があると言えそうです。

この勢いで今後もKaggleが強い国日本のイメージが定着するといいなと願います🙏

まとめ

下記のようなことが分かりました。

  • 2021年12月時点で、KaggleRankTop100の中で最もユーザーが多い国は日本である。
  • 2016年と比較し2021年では、日本人のtop100ユーザーは増加している。
  • 2021年12月時点で、日本はKaggleRankTop100の後半に属しているユーザーが多い
  • 2017年では回答者数Top10に入っていなかった日本が、2021年に向かって順位を10→4→4→3と上げている
  • 日本は他の国よりもユーザーの増加率が高い可能性がある。
  • 日本語のTwitterユーザーは、英語のTwitterユーザーよりも1ヶ月当たりに"Kaggle"を含むTweetをする回数が多い

最後に

変なところあったらTwitterか記事のコメントで教えてください。

twitter.com