little-hands/ddd-q-and-a

機械学習モデルにおける質問になります。機械学習において予測モデルは同時に複数利用することもあります。予測モデルに対してストラテジーパターンを適用し、ドメインサービスとして利用してきましたが、これは妥当な判断でしょうか?最近松岡さんの書籍を拝...

Opened this issue · 0 comments

Question

機械学習モデルにおける質問になります。機械学習において予測モデルは同時に複数利用することもあります。予測モデルに対してストラテジーパターンを適用し、ドメインサービスとして利用してきましたが、これは妥当な判断でしょうか?
最近松岡さんの書籍を拝読し、ドメインサービスは極力避けるべきという話に納得したのですが、予測モデルの場合は必要な特徴量をプロパティとして生成時に要求し、predictなどのメソッドを通して予測結果を返すエンティティとして実装したほうが良いのではという疑問が湧いてきました。
モデリングの際もドメインサービスはモデル図に含めていないため、予測モデルは図に登場せず、予測結果のみが登場していたのですが、この部分にも疑問が湧いています。
長い質問となってしまい恐縮ですが、よろしくお願いいたします。

Answer

機械学習の結果を特定のプロセスとして切り出すのは良いと思います!入力と出力(予測結果)の型だけ定義し、その処理依頼をするサービス的なものはインターフェイスにする。そうするとその実装クラスの中でアルゴリズムをどう切り換えるかが柔軟になりロジック最適化がしやすくなります。
予測結果だけモデリングするというのも、私もそのような手を取ると思います。