「データサイエンスプロジェクトを変革する:YAMLファイルに変数を保存する利点を見つけよう」

変数をYAMLファイルに保存する利点を見つける

このブログ投稿では、データサイエンスプロジェクトにおいて変数、パラメータ、ハイパーパラメータを格納するための中央リポジトリとしてYAMLファイルを使用する利点について説明します。このストレージ方法は、これらの値の簡単なアクセスと変更を可能にすることで、プロジェクトの効率と組織化を改善できることを説明します。この投稿では、データサイエンスプロジェクトでこの方法を実装するための例とステップバイステップガイドも提供します。

Fikri Rasyidによる写真、Unsplash

はじめに

機械学習とディープラーニングの問題は、異なるパラメータを用いた実験に関連しています。パラメータの数が増えるにつれ、実験は非常に困難になります。この困難さは、各実験イテレーションごとにパラメータの値を手動で変更するために必要な手作業の努力の一部によるものです。しかし、幸いにも、これを簡単にする方法があります。YAMLファイルとPythonコードの協力を使用することで、異なる実験を非常に簡単に行うことができます。この記事では、YAMLファイルとPythonコードを使用した異なる実験の方法を実証します。

前提条件

  • Pythonプログラミング言語の基本知識
  • 機械学習ライフサイクルの基本知識

アジェンダ

  • YAMLとは何か
  • 変数を格納する従来の方法を使用しない理由
  • YAMLファイルにパラメータを中央的に格納する利点
  • PyYAML Pythonライブラリのダウンロード
  • YAMLファイルに変数を格納する
  • YAMLファイルにリストと辞書を格納する
  • YAMLファイルから変数をPythonファイルに読み込む
  • 結論

YAMLとは何か

まず、トピックに直接入る前に、YAMLについて基本的な情報を学びましょう。

YAMLは「YAML Ain’t Markup Language」の略で、XMLやJSONファイルとは異なり、データを非常に人間が読みやすい形式で格納する言語です。YAMLファイルは情報のみを格納するため、アクションの種類は含まれません。また、Pythonなどの他のプログラミング言語に簡単にデータを転送できます。

変数を格納する従来の方法を使用しない理由

ここでは、データサイエンスプロジェクトでの例「クレジットカード詐欺検出」という名前のプロジェクトを使用して、これらのコンセプトを説明します。このプロジェクトの目的はシンプルです。プロジェクトは、実行されたトランザクションが詐欺かどうかを検出することに焦点を当てています。これは、そのトランザクションに関するいくつかの情報を使用して行われます。情報として使用できる例には、次のものがあります。

  • トランザクションが行われる場所とクレジットカード所有者の自宅住所の距離
  • 前回のトランザクション場所からの距離
  • 平均取引価格と現在の取引価格の比率
  • トランザクションが行われたIPアドレス
  • オンラインまたはオフラインでの支払い

この検出は、ユーザーのクレジットカードトランザクションの履歴に基づいてトレーニングされた機械学習モデルによって行われます。

機械学習に基づくデータサイエンスプロジェクトには、データの探索、データのクリーニング、問題に適した機械学習モデルの検索、モデルの調整、モデルの保存など、多くのステージがあります。これらは、このようなプロジェクトに存在する多くのステップの一部です。特に適切な機械学習アルゴリズムを見つけるステップと適切な機械学習アルゴリズムの調整を行うステップでは、多くの変数が作成されます。

変数を格納する従来の方法は、このようなケースで問題を引き起こします。これをより詳しく理解しましょう。データに合わせた適切な機械学習アルゴリズムを見つけ、そのアルゴリズムのハイパーパラメータの実験によって最大の精度を得ることは、大きく依存します。従来の方法を使用すると、すべてのファイルを回り、各実験を実行するためにパラメータを手動で変更する必要があります。これは非常に手間がかかり、エラーの発生のリスクがあります。このような不必要な作業や愚かなミスを避けるために、新しいアプローチが使用されます。この新しいアプローチについては、この記事の後半で理解します。

YAMLファイルにパラメータを中央的に格納する利点

各ファイルにパラメータを個別に格納する従来の方法とは異なり、このアプローチではすべてのパラメータを1つのファイルに格納することを提案しています。ファイルをインポートすることで、必要なときにいつでもパラメータを取得できます。このアプローチはよりスリムで、愚かなミスのリスクも低くなります。ファイルパスを格納するためにYAMLファイルを使用することもできます。

なぜYAMLファイルを使用するのか、心に疑問が浮かぶかもしれません。この質問の答えは、YAMLファイルの非常にシンプルな構文にあります。他のタイプのファイルも使用できますが、簡単なことをさらに簡単にするために、YAMLファイルを使用することをお勧めします。

さて、いくつかのコードを使用してどのように行われるかを見てみましょう。

PyYAML Pythonライブラリのダウンロード

Pythonの人気のあるサードパーティライブラリの1つはPyYAMLです。このライブラリは積極的にメンテナンスされており、公式のYAMLウェブサイトでも言及されています。このライブラリをインストールするには、ターミナルで次のコマンドを使用します。

python -m pip install pyyaml

ライブラリのインストールが完了したら、次のコマンドを使用してPythonファイルにインポートします。

import yaml

インストールしたライブラリの名前がPyYAMLであっても、Pythonコードではパッケージを「yaml」としてインポートします。

YAMLファイルに変数を保存する

YAMLファイルはPython言語とやや似た構文を持っています。YAMLファイルでは、Pythonと同様にインデントが使用されます。これを理解するために、YAMLファイルを見てみましょう。

SimpleImputer:  strategy: most_frequent  missing_values: nanOrdinalEncoder:  handle_unknown: use_encoded_value  unknown_value: 100

ここでは、SimpleImputerとOrdinalEncoderという2つのグループに変数を保存しています。これらは、前処理ステップでScikit-Learnのシンプルなインピューターと序数エンコーダーのトランスフォーマーのパラメータとして使用される変数です。

YAMLファイルでは、文字列変数の値に引用符を使用する必要はありません。ただし、文字列変数の値に引用符を使用していたとしても、何の違いもありません。

ファイルパスをYAMLに保存する方法は、YAMLファイルに他の値を保存する方法と同じです。以下は、データの前処理とクレジットカード詐欺検出モデルのトレーニングに使用されるパスです。

data_preparation:  training_db: Training_db  training_db_dir: Training_Database  table_name: trainingGoodRawDataTable  schema_training: config/schema_training.json  good_validated_raw_dir: data/Training_Raw_Files_Validated/Good_Raw  master_csv: master.csv

リストと辞書をYAMLファイルに保存する

YAMLファイルにリストと辞書を保存する方法は2つあります。以下は、詐欺検出に使用されるランダムフォレスト分類モデルのハイパーパラメータです。

アプローチ1:

random_forest:  cv: 5  verbose: 3  param_grid: {n_estimators: [10, 50, 100, 130], max_depth: [2, 3], max_features: ['auto', 'log2']}

最初のアプローチでは、リストや辞書をPythonプログラミング言語と同じように配置します。辞書はシンプルなキー:値のペアで表されます。

アプローチ2:

random_forest:  cv: 5  verbose: 3  param_grid:     n_estimators:      - 10      - 50      - 100      - 130    max_depth:      - 2      - 3    max_features:      - auto      - log2    

2番目のアプローチでは、すべてのリストメンバーが同じインデントレベルで記号「-」で始まります。辞書はシンプルなキー:値のペアで表されます。

YAMLファイルから変数をPythonファイルに読み込む

random_forest:  cv: 5  verbose: 3  param_grid:     n_estimators:      - 10      - 50      - 100      - 130    max_depth:      - 2      - 3    max_features:      - auto      - log2

ここで、’parameters.yaml’ファイルから’verbose’変数にアクセスしたいとします。次のように行うことができます。

import yamlwith open('parameters.yaml') as p:  params = yaml.safe_load(p)verbose = params['random_forest']['verbose']

Pythonファイルで変数verboseをここで3として初期化するだけで、YAMLファイルから変数をPythonファイルにインポートする手間をかける理由がわからないかもしれません。この方法のコーディングの背後には理由があります。

複数のファイルでこの変数を使用したいとしましょう。そして、verbose変数を更新したいとしましょう。すると、一つ一つのファイルを確認してそれを変更する必要があります。もし変数をYAMLファイルに保存し、それをすべてのPythonファイルでインポートするなら、YAMLファイルで変数の値を変更すると、それが使用されているすべてのPythonファイルに反映されます。

結論

この記事では、Pythonファイルに変数を保存する従来の方法を使うべきでない理由と、変数を保存するためにYAMLファイルを使用する利点、および機械学習プロジェクトでの実験にどのように役立つかについて学びました。この記事の全コードは以下のリンクをご覧ください。

YAMLファイルに変数を保存する利点を発見する

コンソールでYouTube(およびTwitch)を体験する。最高の体験のためにフルスクリーンを使用してください。オーディオとカスタムのためにフォークしてください…

replit.com

アウトロ

この記事がお気に入りになることを願っています。記事についてのご意見があれば、お知らせください。また、記事が気に入った場合は、拍手をお願いします。

LinkedInで私とつながる。

ウェブサイトで私についてもっと知る。

[email protected]までメールしてください。

素晴らしい一日をお過ごしください!

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more