今回も引き続き「実践AWSデータサイエンス」を読んでいく!気になるトピックだけピックアップしていく.
画像やNLPだと最近はend-to-endでのモデル学習が主流になっているので,特徴量エンジニアリングをガッツリやるイメージは少ない.一方で,センサーデータなどのテーブルデータは外れ値やノイジーなデータが混じったり,色々なデータを収集する中で,必ずしも目的変数に有効でない変数も入ったりすることがあるので,特徴量選択や特徴量エンジニアリングを行うことが良くある.この辺はドメイン知識が大きく活躍する領域かなと思う.
このステップを見ると,NLPだとモデルに入れる前にある程度どのコンテンツ情報を入れるという意味で特徴量の選択は入りそうな気がする.
ここでもSageMaker Data Wranglerを使うとクイックモデルによる特徴量重要度をサクッと計算してくれる.
クラス不均衡などの不均衡データのバランス調整が紹介されている.方法としては,多数派のクラスをアンダーサンプリングするか,少数派のクラスをオーバーサンプリングするかの戦略を取れる.
XGBoostのようなアルゴリズムでは、クラスの不均衡問題を解決するために、スケーリングファクターをサポートしています。
これはペナルティを大きくするとかの話かな?DNNだとFocal Lossとかの損失関数の設計で対処するとかもできそう.
アンダーサンプリングは少数派に合わせるので,データが減るのが問題だったりする.
オーバーサンプリングはSMOTEでデータの合成をしたりするけど,経験的にあまり効かない印象.ここでも,大きめのデータセットなら効果を発揮する傾向があると記載されている.
再利用可能な特徴量ストアの存在は求められてきている.データ量が増えたりで特徴量の変換・生成に時間がかかるので,毎回作るのは非効率だったり,別のタスクやプロジェクトでも同じ特徴量を使いたい場合はよくあるので,再利用できる形で特徴量ストアとかに保存して,素早く取り出せるようにしておくことは大事になってくる.
最近はOSSやマネージドサービスでのFeature Storeが出てきたりしているけど,まずはオフラインストアとしてS3とかGCSにファイル形式で保存していくとかでも良いと思う.
オンラインストアは低レイテンシーですぐに出し入れ出来るように,Key-Valueストア的なところに保存するのが良いのかなと.