コンサルティング

2023年4月8日

いままで学んできたさまざまな分野の知識を活かして、コンサルティングをさせて頂いています。お気軽にお問い合わせ下さい。

私個人としては「アルゴリズムをじっくり考えることを通して、数理技術を深めてゆきたい」という気持ちがありますので、大きなコンサルに頼むほどの予算ははないが、期間的には余裕がある…といったタイプの案件が御座いましたら、ぜひご相談頂けましたら幸いです。

コンサルティングの概要

契約形態としては、「受託開発」ではなく、「コンサルティング」(準委任契約)を想定しています。それ以外の契約でも対応できる場合もありますので、ご相談下さい。

■ 契約の形態:時間ベースのコンサルティング(準委任契約)
■ 月当たりの稼働時間:最大で 120 時間程度を想定
■ 時間単価:ご相談(リモートでの作業ができるかなどにより変わります)

受託開発ではありませんので成果の保証はありませんが、コード・資料等は全て御社様へお渡しすることができます。基本的には、以下のような方法等で進捗状況や成果を共有することを想定しています。

■ 日々の進捗状況は分析コードを GitHub 上で Jupyter Notebook 等でシェア(ご要望により)
■ 一定の成果がまとまった時点で報告書を作成・報告会を実施(ご要望により)

「受託開発」と「コンサルティング」の違い

いわゆる「受託開発」と「コンサルティング」の違いを簡単にまとめさせて頂きました。

「受託開発」と「コンサルティング」の違い:

■ 「受託開発」では、一定の仕様書に基づく開発を行うことが目標(最初に仕様書が存在する)
■ 「コンサルティング」では、アルゴリズムの仕様を確定させることが目標(最後に仕様が確定する)

コンサルティング(アルゴリズム開発)の特徴:

■ アルゴリズム開発では、作業開始時には仕様書がない場合が多い(業務上の要件・要望がある)
■ アルゴリズム開発(モデル化)を行う前には、さまざまなデータ解析を行うことが前提
■ トライ&エラーを繰り返し、探索的にさまざまなアルゴリズム・可能性を探ることが主要な目的
■ コードのほとんどは捨てるコードになることが多い(アルゴリズム開発は「探索」が目的)

なお、実際のシステム開発時には、精度・コスト・メンテナンス性などを重視した検討が別途必要になる可能性が高いです。

アルゴリズム開発を外注するメリット

アルゴリズム開発の部分をコンサルに外注するメリットを以下に挙げさせて頂きました。

■ トライ&エラーの繰り返しによる時間のかかる部分を節約することができる
■ 沢山のアルゴリズムの中から目の出そうなアルゴリズムをある程度絞り込むことができる
■ 手法が絞れるとデータサイエンスの専門家でなくとも比較的勉強がしやすくなる
■ システム開発の前にさまざまなアルゴリズムをしっかりと検討しておくことができる

具体的なコンサルティングのフロー

案件のタイプにもよりますが、概ね以下のような流れに沿ってコンサルティングを行わせて頂くことが多いかと思います。ご要望に合わせて、アレンジしていくことも可能ですので、ご相談下さい。

1. 最初のご相談

まずは、どんなことをやりたいか、どんな問題が解決できたらよいかのか、どんなことを調べてみたいかをざっくばらんにお聞かせ下さい。そこから具体的な方針を決めてゆきます。最初の相談ではまずはお客様のお話を伺い、そもそも機械学習や統計解析の手法で進めそうな問題なのかなどを一緒に考えさせて頂きたいと思います。基本的には Zoom 等のオンラインミーティングにてお話を伺えればと思いますが、都内や近郊であれば、直接お伺いすることも可能です。お打ち合わせ自体に関しては費用は発生しません。

2. データ解析 & アルゴリズム開発

契約等が完了致しましたら、実際のデータの解析に入っていきます。基本的には Python を使って、データを調べてゆきます。一度の解析でパッと解けてしまう問題はあまりなく、何度もトライ&エラーを繰り返していきます。仮説を立て、仮説を検証するようなプロセスを何度も繰り返します。問題にもよりますが、かなり泥臭い作業が発生することもあります。作業を進めた後で、実はその作業が必要なかった…といったことが判明することもよくあります。こうした作業を経て、最終的なアルゴリズムの形を決定してゆきます。

実際に一日に作業する時間は4時間から6時間程度の時間を想定しており、実際に作業した時間に時間単価をかけた分の費用が発生致します。

3. コードの整理 & ドキュメント作成

こうした試行錯誤を元に最終的に固まったアルゴリズムを元にきれいなコードへ整えてゆきます。また、このコードを元にドキュメント等も整えてゆきます。また、コードやドキュメントだけでは、実際のコードの動き等が伝わりにくいこともありますので、次に報告会を行います。

4. 報告会

整理したコードとドキュメント(スライド)を元に、解析結果とアルゴリズムの概要をご説明させて頂く時間を頂きます。報告会を行わない場合、コードがブラックボックス化してしまう可能性が高いので、できる限り報告会を行うことを推奨させて頂いております。

5. プロジェクトの完了

解析結果と実際のコードをお渡しさせて頂きます。開発したコードを元にお客様の方で更にデータ解析や開発を進めて頂くこともできますし、新しい課題を設定して頂き、当方で引き続きデータ解析・アルゴリズム開発を継続することもできます。なお、納めさせて頂いたコード等はあくまでサンプルコードとして提供させて頂くものであり、その性能や動作等を保証するものではない点はご注意下さい。

当方のコンサルティングの特徴

一般的に世の中では「精度が良ければ良いほどいい…」といった精度至上主義のようなトレンドもあるのですが、特定の個人が作りこんだコードはなかなか他の人が理解しにくいことがあります。つまり、作ったその瞬間は最高の性能だったとしても、他の誰かがそのコードを元に更に開発を進めたり、メンテナンスをしたりすることを考えると、そうした独自のコードが大量にあることは逆に足枷になることもあります。

個人的な見解ではありますが、クライアント様自身が中身を理解できないような高度過ぎるアルゴリズムは最終的には「ブラックボックス」になってしまい、多額の費用をかけても開発した本人しか中身を理解できない、あるいは開発費用を永遠に払い続ける…といったことに陥りがちなのではないかと私は考えています。

そこで、私の場合は「とにかく最高性能を誇るブラックボックス」というよりは「教科書レベルの技術をしっかりと組み合わせて、クライアント様の課題を解くことにフォーカスしたホワイトボックス」を提供することをまずは目指したいと思っています。つまり、いきなり「最高性能の F1マシン」を目指すのではなく、最初は普通のクルマからスタートして、それを乗りこなすことや、お客様自身でメンテナンスできるような状態を目指したいと考えています。最初は教科書的な標準的なもので問題解決を図り、徐々に高度なものへ育ててゆくというアプローチです。最初から最高精度みたいなものを目指してしまうと、「木を見て、森を見ず」という状態になってしまったり、個人のスキルに依存した独自のコードが量産されてしまう可能性があるためです。

無論「教科書的なものであれば、わざわざ外部のコンサルの手を借りる必要はないのではないか?」という考え方もあるかとは思いますが、こうした問題の難しいところは最初の取り付きを間違うと「この問題は機械学習ではうまく解けないんだ…」という結果に辿り着いてしまうことです。

一旦、こうした状態に辿り着いてしまうと、せっかく有望なネタであっても、「ダメだ」というレッテルが貼られてしまい、社内的にも予算が付き辛い状態になってしまいます。そして、そうしたことが何度か続くと「機械学習なんて使えないんじゃないの」ということになってしまいます。そうしたことを防ぐためにも外部のコンサルを利用することは有効であると考えます。仮にコンサルを使ってダメだったとしても「あのコンサルがダメだった」ということでリトライができるためです(無論、そのようなことにならないように私自身も頑張りますが…)。逆にうまく行った場合は、そこをスタート地点にすることで、最初からある程度の成果が保証された状態からスタートすることができます。

妙な例えでありますが、植物を育てるときにも種から苗を育てるところは意外に難しく、ある程度育った苗を更に大きく育てることはそれほど難しくない…といったことがよくありますが、実はそうしたことがデータサイエンスやアルゴリズム開発の分野でも言えるのではないかと思っています。

そのような訳で、当方で提供させて頂くコンサルティングは決して「最高性能の F1マシン」ではないかもしれませんが、御社に数理技術を根付かせる「最初の苗」になることができればと思っています。

ぜひご検討下さい。

当方のプロフィールは以下にまとめさせて頂きましたので、ご参考にして頂けましたら幸いです。

プロフィール

「こんなことできる?」といったご相談も歓迎ですので、お気軽にお問い合わせ下さい。

Posted by 管理者