BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 確率論的データサイエンスモデルのテストから学んだこと

確率論的データサイエンスモデルのテストから学んだこと

ブックマーク

原文(投稿日:2020/12/31)へのリンク

データサイエンスモデルは統計的なブラックボックスだ — そのテストには、アルゴリズムや乱数性、統計学といった数学的テクニックの理解が必要になる。データサイエンスモデルの検証で有効なのは、しきい値を用いた出力差異の処理だ。

シニアコンサルタントのLaveena Ramchandani氏がAgile Testing Days 2020で講演し、データサイエンスモデルをテストした自らの経験について語った。

データサイエンスは、データの分析と研究を行う科学である。データサイエンティストは企業の利益となる意思決定に責任を持つ、とRemachandani氏は説明する。データサイエンスは、データ内に潜むパターンの視覚化と分析を可能にし、その分析過程を明確に示したグラフを視覚化手法を用いて描画する。

テスタとして過去のプロジェクトで会得したスキルのすべてが、データサイエンスモデルのテストにおいても常に役立つはずだ。特にモデルが確率論的(ランダム)なものである場合、間違いなく役に立つのは、それがどのように機能するのかという好奇心だ、とRamchandani氏は言う。結果を検証しようという場合には、数学が関係する場合もあるため、統計に関する知識もある程度持っていた方がよい。

Ramchandani氏によれば、データサイエンスモデルのテストが他とまったく異なるのは、実行の最後に行われる結果の検証だ。

私の扱っているデータモデルは、クライアントに極めて有益な情報を提供する反面、一部の領域において確率論的(ランダム)であることに気付きました。これもまた、データモデルが特別なものである理由です — 結果が多少振れることがあっても、"3~5パーセントの変化は許容範囲である"というしきい値を設定できる、というのが、新たに学んだことのひとつです。結果が正確かどうかを知る方法について、データサイエンティストから学んだことも大きな成果でした。

新機能をテストする方法にデータサイエンティストたちと協力して取り組むのは、とても興味深い経験だった、とRamchandani氏は言う。

データサイエンティストと開発者がペアを組むことは、新たな実装が何であって、どのような方法で検証できるのかを理解する上で有用な方法です。

データサイエンスモデルのテストについてLaveena Ramchandai氏に話を聞いた。

InfoQ: データサイエンスモデルとは何ですか、どのようなものなのでしょうか?

Laveena Ramchandani: 他のコードと何ら変わらない、コード行の集まりです。特別なのは、モデルを実行可能にするために使われているアルゴリズム — 遺伝的アルゴリズムや予測分析といったアルゴリズムに関する部分です。私が従事するモデルのおもな特殊性は、特定のステージにおいて、いくつかの結果に対して生成されるランダム性にあります。

InfoQ: モデルのテストが、例えば、ソフトウェアプロダクトのテストなどと違う部分はどこにあるのでしょう?

Ramchandani: データセットを理解することが重要だ、という点です。例えば、何に使用される予定のものなのか?どうやってテストするのか?そのすべてを理解できているか?高品質なデータセットを利用可能なのか、匿名化されたクライアントデータセットを使用しなければならないのか?こういった疑問が、データに対する理解を深めてくれるのです。

モデルを使用するユーザの立場に自分を1日置いて、そちらの視点からモデルを見る(ユーザテスト)とよいでしょう。

クライアントはそれぞれ、自分たちのビジネスに役立てる方法を理解するために、さまざまなコンフィギュレーションを提供してくれます。ですから、それらのコンフィギュレーションを理解することも、極めて有用なことです。

モデルコンフィギュレーションは、私がまったく新しいと思ったものです — モデルを実行する前に、セットしなくてはならないコンフィギュレーションがたくさんありました。結果を理解するためには、まずはこれらを確実に理解しなくてはなりませんでした。

InfoQ: テストプロセスはどのようなものですか?

Remchandani: 他のテストプロセスとほとんど変わりありません。私はアジャイルチームの一員で、スプリント単位でモデル関連の機能をテストしています。テストでは手作業か、あるいはAPIエンドポイントをチェックすることで、フロントエンドアプリケーションが意図通り動作しているかどうかを確かめるのですが、手作業によるチェック時間が大部分を占めています。ですから次のステップは、プロセスを自動化して、モデルの動作を確認する、というものになるでしょう。

その他には、モデルが作成された時に一度ベースラインを実行した方がよい、ということを学びました。新たにリリースする時、新しい実行結果をベースラインのものと比較すれば、リリースに自信を深めることができるからです。

InfoQ: モデルをテストする時、テストの品質をどのようにして保証していますか?

Ramchandani: 次のような方法を使っています。

  • 新たなクライアント要件に関する十分な情報を取得し、それをチームが理解する
  • 確率論的なものも含めて、結果を評価する
  • 結果が妥当なものであることを確認する
  • プロダクトが棄損していないことを確認する
  • 同じバグが繰り返し見つからないこと、つまりバグが適切に修正されていることを確認する
  • 開発者とデータサイエンティストがペアを組んで、機能をより深く理解できるようにする
  • 結果を表示するフロントエンドダッシュボードがあるならば、その詳細部分が妥当なものであることと、アクセシビリティテストも行われていることを確認する
  • 実行時のパフォーマンスについてもテストし、特定のコンフィギュレーションで遅くなることがないか確認する

InfoQ: 確率論的なモデルの結果は、どうやって検証するのですか?

Ramchandani: 先程述べたように、クライアントの要求に最適化した結果を提供するモデルには、しきい値の設定がよい選択肢である、ということを学びました。モデルが確率論的なものである場合、特定の一部の結果が正しくないように見えることがありますが、実際にはそうではありません。例えば、5 + 3 = 8 というのは誰でも納得しますが、モデルは 5.0003をアウトプットするかも知れません。これは誤りではないのですが、確率論的モデルとして有用なのは、受け入れられるものと受け入れられないもののしきい値を追加する、という方法です。しきい値を加えた方がよいことは間違いありません。モデルが不正検出に関して特にシビアなものである場合には、例えばしきい値を低い値にして、結果の偏差の0.5~1パーセントを受け入れるようにするとよいでしょう。

使用するデータセットや、モデルを実行して最適な結果を得られるように挿入されたコンフィギュレーションのすべてについても、確実に理解しておく必要があります。

InfoQ: モデルのテストから得た教訓は何でしたか?

Ramchandani: 結果が確率論的である場合には、特定のしきい値内に収まる値を結果として受け入れられる、ということを学びました。

モデルを実行するためのコンフィギュレーションも新たに学んだことです。コンフィギュレーションがモデルやクライアントにとって何を意味するのかを理解することは、とても重要です。クライアント毎に、コンフィギュレーション毎に、異なる情報が必要になります。そのためには、コンフィギュレーションに対する探索的テストを実行して、モデルの出力を観察することが有用でした。

この記事に星をつける

おすすめ度
スタイル

BT