履歴データに基づいて将来のパフォーマンスを予測するために、どのタイプのアルゴリズムを使用しますか?

StackOverflow https://stackoverflow.com/questions/1019153

  •  06-07-2019
  •  | 
  •  

質問

過去には、「ベンダー」による過去のパフォーマンスの要約を使用していました。新しいビジネスを各ベンダーに割り当てる方法を決定します。

今、私たちがしたいことは、そのサマリーパフォーマンスを地理、サイズ、年齢などの小さなサブセットに分割して、ベンダーに提供する新しいビジネスをより適切に割り当てることです。

たとえば、今のところ、3つのベンダーと9つの事業を配っています。現在、パフォーマンスの概要に基づいてビジネスの一部を配布しています。ただし、地理、サイズ、年齢などのそれぞれの長所を考慮していません

つまり、Vendor-Aは小規模なテキサスのアカウントの処理に優れ、Vendor-Bは大きなフロリダのアカウントの処理に優れているとしましょう。各ベンダーが得意なものを手に入れ、得意なビジネスを獲得しないようにしたいと思います。

これらの情報はすべてデータベースにありますが、それを抽出し、誰にどのようなビジネスを提供するかについての決定を下すための実際のアルゴリズムやアプローチはありません。このタスクのためにSQL Server Analysis Servicesを検討していましたが、これを行うために使用するアルゴリズムに関する非常に一般的なポインターを使用できました。

データのセグメンテーションを処理して予測を改善するように設計されたアプローチまたはアルゴリズムを知っている人はいますか?

役に立ちましたか?

解決

使用するかなり大量の履歴データがある場合は、単純ベイズ分類器を使用できます。入力としてアカウントの機能を使用して、分類子のファミリーをトレーニングして、各ベンダーのパフォーマンスを予測できます。

おそらく、選択した言語用の無料の実装が既に存在しますが、基礎となる理論について読んで、それを適切に使用していることを確認し、どのような出力が合理的であるかの感覚を与えることができます。

他のヒント

単純ベイズは良い選択ですが、決定木も検討します。決定木を使用する主な長所は次のとおりです。

  1. 人間は何が起こっているのかを理解し、微調整するのは簡単です。
  2. トレーニング対象のデータのセットが少ない場合でもうまくいきます。

しかし、あなたが決めたものは何でも、最も難しいのはデータを特定の属性に変換することです。これは、特定のアルゴリズムに合わせて調整することと、トレーニングが具体的になりすぎないようにすることの両方です。

例:数値としての年齢の代わりに、意思決定のために年齢範囲(0-10、11-20、...)を指定することに関心があるかもしれません。地理、都市などでも同様です。

一般的な数量を数値に変換する:(編集で追加)

データから品質メトリック(「良さ」の尺度)を取得し、これらの多くを数値に変換する何らかの方法が必要です。可能な指標は、タスクを完了する時間(最初の見積もりに対して、これについて嘘があるかどうかを確認するため)、コスト、コスト対見積コスト(真実の見積もりを提供するかどうかを確認するため)、および顧客満足度に関連する何らかのコングロマリットです。彼らが取り組んだプロジェクトに。

以前の契約の地域/地域は、特定の取引の地域の中心を示すX、YのGPS座標としてコード化できます(IE「カリフォルニア」または「米国」、および幅-x、幅-y地理的に重要かどうかを確認するには、新しい契約から指定された距離内にあるすべての以前のビジネスを検索します(単純な形式:以前のすべてのトランザクションの距離を確認するだけで、大量のデータを含む複雑な形式:何らかのクラスタリングアルゴリズムまたは3次元表面抽出)。

次に、(以前の取引の品質指標)の加重平均を行い、(現在の希望する取引場所と以前の取引場所の間の距離)を減らします。複雑な、 地域のビジネス指標を提供します。

意味を抽出するためのデータ分析

データを標準のCSVタプル(会社ID、地域コード/座標、アカウントサイズ、パフォーマンスメトリック)に変換してから、統計回帰&数値解析技術。目標は、各特性の観点から企業の業績を記述する一連の方程式です。 主成分分析は、会社の業績にとって最も重要な特性を識別することにより、このプロセスを簡素化できます。

ソフトウェアの選択:

正直なところ、この種の分析は、純粋な統計と数学であるため、SQL分析エンジンではなく、統計またはデータマイニングソフトウェアの領域です。指標と特性は数値および明確に定量化できる、R、Matlab、Mathematicaなどが適切な選択です。データセットが非常に大きい場合は、入手できる最も堅牢なパッケージに投資することをお勧めします。

最高の候補会社を選ぶ:単純なケース

ビジネスを最適な候補に割り当てる問題は、古典的な最適化の問題です。 変数とパフォーマンスの関係が線形である場合、非常に便利なケースがあります。 線形プログラミング手法は、まさにその種の問題を最適に解決するように設計されています(関係を抽出できると仮定します) )。

最適な候補会社を選ぶ:複雑なケース

パフォーマンスと特性の方程式が非線形の場合、最適なソリューションを見つけるにはファジーロジックが必要です。これは、非常に高度なアルゴリズムを使用して、多くの変数がある場合にビジネスにとって非常に優れた(必ずしも最適ではない)ソリューションを見つけます。経験から、Mathematicaには非線形最適化のための(遺伝的アルゴリズムに基づく)一流の最適化ツールのセットがあり、Matlabにはその問題を解決するためのファジー論理/遺伝的アルゴリズムもあります。その他のツールについては、「グローバルな非線形最適化」をご覧ください。

それを行う1つの方法は、地理的な場所、アカウントのサイズ、価格、納期など、関心のあるすべての特性をリストすることです...

次に、各特性で各ベンダーにスコアを付けます(1〜10など)。

次に、各特性に優先順位を付けます。1〜10の場合もあります。

この優先度は、一般的または各ジョブごとです。

その後、「単純に」あなたは必要な特性ごとにベンダースコア*優先度を掛けます。合計が最も高いものがジョブを取得します。

履歴データの分散を計算します。これは、将来表示される内容を「予測」するために使用できます。 「未来が過去のようなものになる」という仮定がある場合、プロセスにとって意味があります。それは非常に単純で、多くのSQLサーバーは計算を行うための組み込み関数を提供しています。

回帰分析が必要なものです。特に線形回帰

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top