Slide 1

Slide 1 text

atmacup 8 振り返り会 Sekine Hiroto

Slide 2

Slide 2 text

● Sekine Hiroto ● twitter: @ndnto ● github: @hiroto0227 ● 大学では自然言語処理を研究 ● 20卒でWantedly, inc.にJoin。(推薦やデータサイエンス) 趣味 ● ビール (特に海外ビール) 自己紹介

Slide 3

Slide 3 text

目次 ● 今回のコンペの進め方 ● 作成した特徴量 ● 今回できなかったこと

Slide 4

Slide 4 text

● データ分析コンペを始めるのには最適! ● 1週間という短い期間で集中して取り組む! ● ディスカッションに知りたかったことやアイディアが丁寧に書かれている! atmacupへの印象 今回も多くのディスカッションを参考にさせていただきました - RMSLEを最適化する小技 - シリーズ名ごとにGroup KFold

Slide 5

Slide 5 text

進め方 ● @hakubishin3 と @yu-ya4 とチームを組んで進めた。 ○ チームを組んだ目的としては、 @hakubishin3 から知見を共有してもらう。 ○ 初日の夜に効きそうな特徴量を聞いて、そこからは個人でガンガン。 ● まず始めにSubmit! ○ 初心者にとってはここが難関 -> 1日集中してサブミットまでできる仕組みを作成。 ○ Data Load, Preprocessor, Model, Training, Predict, Submit ● 特徴量を自由に追加できる形にしておく。 ○ 1つの関数で1つの処理を行う。 ○ 関数の入力、出力を合わせておくことで、 for文で回せるようにする。 ● そこからは、アイディアと面倒くさがらずにできるかの勝負! ○ 効きそうな特徴量から作っていく。

Slide 6

Slide 6 text

作成した特徴量 ● Aggregation Feature ○ カテゴリ変数(PublisherやDeveloper, Nameを含む)ごとに、Year_of_ReleaseやCritic_Scoreなど に対し集計処理 ● Diff Feature ○ Aggregation Featureの集計した平均値と各レコードの平均値の差をとる。 ● Target Encoding ○ カテゴリ変数ごとに、 xx_Salesに対し集計処理 ○ DeveloperやPublisherを入れたらリークした。 ● LDAによる分散表現 ○ 分散表現にすることで、 Aggregation Featureでは与えられないような角度からの特徴を得たい。 ● Rank Feature

Slide 7

Slide 7 text

PublisherとDeveloperについて ● TrainとTestの分け方がPublisherによって分割されていると想定 ● Publisherを直接使用したところ、CVの値は劇的に上がったが、LBの値が下がると いう現象が起きた。 ● 「Nintendo」というPublisherを使用できる特徴量で表現したい。 ○ UserScoreの平均が高く、幅広いジャンルのゲームを作成している ○ ここでGlobal_Salesが多いという情報を使用してしまうと、それを TestデータのPublisherで再 現することはできない。 ● Publisherごとに特徴量の平均、分散、パーセンタイル値、Countなどの集計値をと る。

Slide 8

Slide 8 text

データをざっと見る。 ● PlatformやGenreやPlatformはユニーク数も少なくTrainとTestに満遍なく入ってい たため、そのまま使用することができた。 ○ Target EncodingもPlatformごとやGenreごとなどで使用できた。 ● Critic_ScoreやUser_Scoreなどは50%程度欠損値である。 ● DeveloperやRatingについても欠損値が多かった。 ● このNull値を補えるように特徴量を作成したい。

Slide 9

Slide 9 text

力を入れたところ (Series Nameの名寄せ) ● どこまでをシリーズとみなすかがゲームによって異なる。 ○ LEGO Batman を LEGOとするか? LEGO Batmanとするか? 方法 ● Nameの最初から5gramを見る。 ○ 3回以上出現した5gramがあれば、辞書に追加 ● Nameの最初から4gramを見る。 ... ● Nameと辞書にマッチするもののうち、最も単語数の 多いものをそのシリーズ名とする。

Slide 10

Slide 10 text

RankFeature ● 各カテゴリごとにYear_of_Releaseを並べたもの ● AggregateFeatureばかりを作成していたため、同じカテゴリのものは同じ特徴量と なってしまうことを変えたかった。 ● Year_of_Releaseが同じ場合は登場順でランク付けを行う。 ● Genre_Year_of_Releaseのカテゴリでランク付けを行った。 ● リークにつながり、Public Scoreが0.78から0.69に上がった。 最も効いた特徴量

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Feature Importance

Slide 13

Slide 13 text

今後に向けて必要だと感じたところ ● Preporcessingのクラス ○ 特徴量が多くなってくると、各特徴量の依存関係の整合性が合わなくなりそう。 ● 特徴量のNaming ○ Aggregation Featureなどは、何のカラムを Group Byして、何のカラムに対しての平均なのか?と いうのをルールとして決めておくことで、理解度や Namingの迷いがなくなる。 ● 何の特徴量がなぜ効いてるか? ○ 初めは特徴量を作成して学習させて、後からなぜそれが効いたのか、効かなかったかを考えようと したが、後半はスコアを伸ばしたい気持ちが強くて、なぜ効いたかを考えられなかった。 ● 特徴量作成のネタ切れ

Slide 14

Slide 14 text

ありがとうございました! 楽しかったです!!