SlideShare a Scribd company logo
1 of 22
Download to read offline
AtCoderで初心者がレートを
高める方法の考察
hino
自己紹介
名前:hino
所属:信州大学工学部電子情報システム工学科
趣味:ソフトテニス、音ゲー、旅行
Twitter: @hino1729, @cyndaquil1729
GitHub: Cyndaquil1999
下:Twitterページ
マイニングの手法
・ネットに落ちているAPIを利用してAC数などを取得
・足りないデータはAtCoderのRobots.txtに指定された範囲内でスクレイピング
・使用言語
Python3
コードはGitHubに載せています: コード
マイニングの手法
・スクレイピングを実行しAtCoderのランキングページからユーザー名と現在のレートを取得
Scraping.py
・次に初参加時のパフォーマンスについて計算を行い、
APIから各パラメータを取得し
 データをcsv形式で生成
Data_Generate.py
・統計処理や線形回帰分析を行って分析を行う
Data_analysis.py, Linear_Regression.py
手段
・レート2000以上(黄コーダー以上)
・国内ユーザー
・初回パフォーマンス1200未満
3条件を全て満たすユーザーを対象ユーザーとする。
マイニング対象
・何故国内ユーザーだけか?
, 何故初回パフォーマンスで分けた?
CF, TCなどの海外の競プロサイトが
AtCoder以前からあり、それの経験者という可能性
・何故2000以上?
ABC(AtCoder Beginner Contest)のunrated層になるため、初心者から脱しているという見方が出来るため。
マイニング対象
データの紹介
Rating: レート
RPS: これまでに正解した問題の総得点
Total_AC_count: これまでにAC(正解)した問題数
Ave_points: ACした問題の得点平均値
マイニング対象
Ave_diff
2019-4-29以降の500submitの内、以下の式で表すもの。
Type
コンテスト初参加時のパフォーマンスが
1200以上である場合1,1200未満の場   合0として分類
を行う
マイニング対象
レート RPS Total_AC_count
min 2000 5800 12
max 3545 970318 4145
中央値 2122 396800 1578
平均値 2254 392391 1559
レート RPS Total_AC_count
min 2000 3200 4
max 4033 970318 4145
中央値 2155 129750 262
平均値 2287 203671 676
国内ユーザーの分析結果 全世界ユーザーの分析結果
マイニング対象
type0 レート RPS Total_AC_count
min 2000 57300 241
max 3212 883400 3589
中央値 2092 428750 1789
平均値 2187 434490 1712
type1 レート RPS Total_AC_count
min 2000 5800 12
max 3545 970318 4145
中央値 2186 347500 1321
平均値 2317 352952 1415
マイニング結果
各データとレートの相関係数の一覧
RPSが強い相関、Ave_diffや
Ave_pointsも優勢
データ名 相関係数
Ave_diff 0.355
RPS 0.456
Total_AC_count 0.204
Ave_points 0.335
マイニング結果(RPS - Ave_diff)
マイニング結果(Rating - RPS)
マイニング結果(RPS - Total_AC_count)
マイニング結果
・RPSが一番レートに強い正の相関が見られた
・Total_AC_countとRPSに特に強い相関性(それはそう)
問題を多く解くことがレート上昇に作用する
・Ave_diffとRPSに強い相関性
難易度高い問題を解く事がレート上昇に効果的である
結論
レートを高めたいなら問題を多く解き、難しい問題に
も挑みましょう
参考 (私の場合の分析)
式に代入すると約222700程度
 =>RPSが少ない
  =>Ave_diffが少ない
パラメータ 数値
Total_AC_count 630
RPS 96300
11/15時点での数値
参考 (私の場合の分析)
難易度 AC数/総数
0-399 487/665
400-799 74/226
800-1199 15/217
1200-1599 2/228
1600-1999 1/250
2000-2399 0/217
2400-2799 0/217
2800- 0/217
参考 (私の場合の分析)
AC数を目標にするのを辞めて、1,2色上の問題を積
極的に取り組むと良さそう
考察
・今回は一例としてパフォーマンス
1200で分類をした
実際はここまで取るのは難しいものである
・競プロユーザーには高学歴な人や数オリ経験者が(多い傾向にある)
素養まで分析する術は思いつかなかったがここまで出来るともっとしっかりした分析  が出
来そう
参考文献など
・Pythonで基礎から機械学習 「単回帰分析」

sk-learn等の使い方を確認


・note.nkmk.me 

Pythonのライブラリなどの使い方などを確認


・AtCoder Rating System Ver 1.00

AtCoder公式によるレート計算の解説


参考文献など
・AtCoder Problems API
AC数やRPSなどのデータを取得する際に活用
・PythonのWebスクレイピングでAtCoderのレート分布を出してみた
スクレイピング用のコードの書き方を参考にした

More Related Content

Similar to Kstm lt 2021 12

CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話Takao Sumitomo
 
ネットワーク自動化の課題 - グラフデータベースによる解決
ネットワーク自動化の課題 - グラフデータベースによる解決ネットワーク自動化の課題 - グラフデータベースによる解決
ネットワーク自動化の課題 - グラフデータベースによる解決ApstraJapan
 
ROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROSROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROSHiroki Nakahara
 
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...SORACOM,INC
 
160705-w03 RTミドルウエア講習会・早稲田大
160705-w03 RTミドルウエア講習会・早稲田大160705-w03 RTミドルウエア講習会・早稲田大
160705-w03 RTミドルウエア講習会・早稲田大openrtm
 
ストリーム処理とSensorBee
ストリーム処理とSensorBeeストリーム処理とSensorBee
ストリーム処理とSensorBeeDaisuke Tanaka
 
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現UnityTechnologiesJapan002
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Yoshifumi Kawai
 
アプリケーション開発と分析のための Log Analytics
アプリケーション開発と分析のための Log Analytics アプリケーション開発と分析のための Log Analytics
アプリケーション開発と分析のための Log Analytics kekekekenta
 
5月中旬の仮想通貨Re-orgについて
5月中旬の仮想通貨Re-orgについて5月中旬の仮想通貨Re-orgについて
5月中旬の仮想通貨Re-orgについてMasanori Kusunoki
 
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabApilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabYutaka Kobayshi
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cythonfuzzysphere
 
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)Ryuuta Tsunashima
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識Katsuhiro Morishita
 
Python twitter data_150709
Python twitter data_150709Python twitter data_150709
Python twitter data_150709BrainPad Inc.
 
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)第5回 デジタルガジェット祭り! スマートスピーカー特集(4)
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)aitc_jp
 
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋Yuto M
 
MicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみるMicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみるKenta IDA
 

Similar to Kstm lt 2021 12 (20)

CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
 
ネットワーク自動化の課題 - グラフデータベースによる解決
ネットワーク自動化の課題 - グラフデータベースによる解決ネットワーク自動化の課題 - グラフデータベースによる解決
ネットワーク自動化の課題 - グラフデータベースによる解決
 
ROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROSROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROS
 
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
 
160705-w03 RTミドルウエア講習会・早稲田大
160705-w03 RTミドルウエア講習会・早稲田大160705-w03 RTミドルウエア講習会・早稲田大
160705-w03 RTミドルウエア講習会・早稲田大
 
ストリーム処理とSensorBee
ストリーム処理とSensorBeeストリーム処理とSensorBee
ストリーム処理とSensorBee
 
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
20150625 cloudera
20150625 cloudera20150625 cloudera
20150625 cloudera
 
アプリケーション開発と分析のための Log Analytics
アプリケーション開発と分析のための Log Analytics アプリケーション開発と分析のための Log Analytics
アプリケーション開発と分析のための Log Analytics
 
5月中旬の仮想通貨Re-orgについて
5月中旬の仮想通貨Re-orgについて5月中旬の仮想通貨Re-orgについて
5月中旬の仮想通貨Re-orgについて
 
191030 anna-with-python
191030 anna-with-python191030 anna-with-python
191030 anna-with-python
 
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabApilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlab
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cython
 
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
Python twitter data_150709
Python twitter data_150709Python twitter data_150709
Python twitter data_150709
 
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)第5回 デジタルガジェット祭り! スマートスピーカー特集(4)
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)
 
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋
 
MicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみるMicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみる
 

Kstm lt 2021 12