Feature Type Validatorsでデータの信頼性を高めよう (2021/10/29)

Feature Type Validatorsでデータの信頼性を高めよう (2021/10/29)

https://blogs.oracle.com/ai-and-datascience/post/have-confidence-in-your-data-with-feature-type-validators

投稿者: John Peach | Principal Data Scientist

コード化された検証でデータに自信を持つ


Pandasには、データサイエンティストがデータが特定のタイプであることを検証するためのツールがいくつか用意されています。例えば、.is_integer_dtype()や.is_numeric_dtype()のようなメソッドや、.is_dict_like()や.is_list_like()のような、データが特定の性質を持っているかどうかをチェックする、より複雑なメソッドがあります。これには2つの大きな問題があります。1つ目は、テストが非常に限定されていることです。一つのことしかチェックしません。第二に、テストは拡張性がありません。独自のバリデータをPandasに追加することはできません。例えば、クレジットカード番号のデータがあったとしましょう。あなたができることは、.is_int64_dtype()を使って、それが数字であることをチェックすることです。しかし、それが有効なクレジットカード番号であるかどうかはチェックしません。


ここで、Feature Type Validatorsの出番です。Feature Typeシステムに慣れていない方は、「How feature types improves your data science workflow」というブログ記事をご覧になるとよいでしょう。要約すると、Feature Typeシステムは、データが表すものをコード化するのに役立つということです。これにより、新しいデータセットを扱うたびに、時間のかかるデータ検証プロセスをスピードアップし、改善することができます。また、カスタム統計の計算、データの可視化、Validatorや警告システムを使ったデータの検証、Feature Typeに基づいたカラムの選択などのツールも用意されています。これらのコンポーネントについては、一連のブログ記事で紹介していますので、このブログの最後にあるリストをご覧ください。


Feature Type Validatorはカスタム関数で、自分で書きます。これはFeature Type Validatorハンドラと呼ばれます。この関数は、シリーズを受け取り、そのシリーズが基準を満たしているかどうかを示す一連のブール値を返します。例えば、CreditCard というFeature Typeを用意し、.is_credit_card() というハンドラーでデータを徹底的にチェックして、各観測データが有効なクレジットカード番号であることを確認することができます。



条件によるバリデーションのカスタマイズ


Feature Type Validatorは、あなたが書いたカスタム関数です。これはFeature Type Validatorハンドラと呼ばれます。この関数は、シリーズを受け取り、そのシリーズが条件を満たしているかどうかを示す一連のブール値を返します。例えば、CreditCardというFeature Typeと.is_credit_card()というハンドラーを用意して、各観測値が有効なクレジットカード番号であることを確認するために、データを徹底的にチェックすることができます。


システムには非常に柔軟性があり、パラメータを追加して他のハンドラをディスパッチさせることができます。例えば、.is_credit_card()というValidatorがありますが、これを使ってカードがAmerican Expressカードかどうかをチェックしたいとしましょう。.is_credit_card(type="American Express")のようなオプションのパラメータを使って、この関数を拡張することができます。このために登録された別のハンドラがあり、カードがAmerican Expressのものであるかどうかを示す一連のブール値を返すことになります。最初に.is_credit_card()のハンドラを呼び出して、カードが実際にクレジットカード番号であることを確認してから、クレジットカード番号であるものだけを検証して、American Expressのカードであるかどうかをチェックすることもできます。


このブログ記事では、Feature Type Validatorの概念を紹介します。このシリーズの他のブログ記事では、カスタムのFeature Typeを作成してそのためのValidatorを書く方法を紹介しています。



再現性のために前提条件をコード化する


Feature Type Validatorはis_*メソッドの集合で、*は通常、フィーチャータイプの名前を表します。例えば、.is_credit_card()というメソッドは、データがクレジットカードであることを確認するために呼び出されます。このメソッドは、データの長さを表すブール値のPandasシリーズを返します。要素がFeature Type Validatorで指定された基準を満たしていればTrue、そうでなければFalseを示します。


Feature Type Validatorは、Feature Typeのレベルで定義されます。同じFeature Typeの列やFeatureに適用可能な関数を定義することができます。ADSが提供するFeature Typeには、デフォルトのハンドラーセットが付属しています。


上で見たように、Featureハンドラーには、条件という概念もあります。条件を使うと、パラメータに応じて異なるFeatureハンドラーのセットを作ることができます。例えば、あるクレジットカードがVisaカードかどうかを確認したい場合、.is_credit_card(startwith='4')のような条件を作ると、すべてのVisaカードは4で始まるので、その条件でFeatureハンドラーを登録すると、その条件を渡したときに実行されます。



Feature Type Validatorの一覧表示


feature_type_manager.validator_registered() メソッドを使用すると、現在のフィーチャータイプのバリデータとその条件を一覧できます。これは、登録されているデフォルトハンドラをデータフレーム形式で表示します。





CreditCard Feature Typeオブジェクトでは、CreditCard Feature Typeに関連付けられたハンドラを見ることができます。





Feature Type Validatorは、Pandasのシリーズで呼び出され、シリーズ内の値をテストすることができます。次の図は、有効なクレジットカード番号と無効なクレジットカード番号を含むseriesというデータセットを作成する方法を示しています。このシリーズには、クレジットカードのFeature Typeが割り当てられています。.is_credit_card()Feature Typeバリデータが実行され、どの値が有効なクレジットカード番号であるかを判断します。このコードの出力は、その数字が有効なクレジットカード番号かどうかを示す一連のブール値です。





同じことをする別の方法として、Pandasの系列を評価するために機能タイプのオブジェクトを使うことができます。例えば、CreditCard.ads.validator.is_credit_card(series)です。




まとめ


このブログ記事では、Feature Type Validatorの概念とその使い方について紹介しました。また、Validatorの機能を拡張するオプションのパラメータを持つように拡張できることも紹介しました。feature_type_manager.validator_registered() メソッドを使用すると、Feature Typeシステムに登録されているすべてのValidatorメソッドを一覧できます。ValidatorはFeature Typeに関連付けられているので、 .validator.registered() メソッドは特定のFeature Typeに関連付けられた名前、条件、そしてハンドラの一覧をデータフレームで返します。このメソッドは、Feature Typeオブジェクトに対してコールする必要があります。Validatorは、Pandasシリーズで.ads.validator.is_VALIDATOR_NAME()を呼び出すことで起動されます。この例では、VALIDATOR_NAMEは、Validatorの名前の代用です。このブログ記事では.is_credit_card()を使用していました。


Other blogs in this series

Explore OCI Data Science

Try Oracle Cloud Free Tier! A 30-day trial with US$300 in free credits gives you access to OCI Data Science service.

Ready to learn more about the OCI Data Science service?

コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle Cloud Infrastructure Secure Desktopsを発表: デスクトップ仮想化のためのOracleのクラウドネイティブ・サービス (2023/06/28)

Oracle Cloudのデータベースをオブジェクト・ストレージにバックアップする3つの方法 (2021/12/13)