これが私がすることです。私の前の質問への答えを考えると、次のようなものがあると思います。アプローチのような 20 の質問を実装したいようです。
20 の質問では、はい/いいえの答えがあるため、二分木が最適に機能します。ただし、複数の選択肢を重ねることもできますが、ユーザーは 1 つの選択肢を選択します。したがって、このアルゴリズムは、事前にツリーをトレーニングし、使用するデータセットから構築されていることを前提としています。
たとえば、医療診断を行おうとしているとします。そのため、データは次のようになります。
Disease Name Head Ache Fever Back Pain Leg Pain Blurry Vision Hearing Loss
Common Cold Yes Yes No No No No
Migraine Yes No No No Yes No
Herpes No Yes No No No No
この例では、頭痛、発熱、背中の痛み、足の痛みなどがインフルエンサーであり、疾患名がターゲットです。各行は 1 人の患者の実際の診断であるため、データ内で病気が複数回繰り返される可能性があります。
- ルートから開始するようにウォーク アルゴリズムを変更します。
- 葉に到達した場合は、潜在的な答えをユーザーに伝えます。
- このノードを分割するために使用されたインフルエンサーをユーザーに提示し、「はい/いいえ」で質問します (頭が痛いですか)。
- ユーザーが「はい」と答えた場合は左に進みます。
- ユーザーが「いいえ」と答えた場合は右に進みます。
- ステップ 2 に進む
リーフノードでは、その場所に到達した実際の行が必要になるため、次のいずれかがある可能性があるとユーザーに表示できます。
頭痛 片頭痛 切断された頭
処方箋は:何とか何とか何とか。
100 万人のインフルエンサーがいるため、ツリーを構築するにはしばらく時間がかかります。それを下げたい場合は、yes/no の代わりに複数の値を持つインフルエンサーを使用できる可能性があります。どんな病状であっても、100 万通りの「はい/いいえ」のユニークな質問を考えるのは非常に困難です。ツリーを構築すると、必要な数の診断を提供できます。