シナリオ
JavaGUIアプリケーション内のデータセットに対して教師あり学習を実装しようとしています。ユーザーには、検査するアイテムまたは「レポート」のリストが提供され、使用可能なラベルのセットに基づいてそれらにラベルが付けられます。教師あり学習が完了すると、ラベル付けされたインスタンスが学習アルゴリズムに渡されます。これにより、ユーザーがそれらを表示する可能性がどの程度あるかについて、残りのアイテムを並べ替えようとします。
ユーザーの時間を最大限に活用するために、レポートのコレクション全体に関するほとんどの情報を提供するレポートを事前に選択し、ユーザーにラベルを付けてもらいたいと思います。私が理解しているように、これを計算するには、各レポートのすべての相互情報量の値の合計を見つけて、その値で並べ替える必要があります。次に、教師あり学習からのラベル付きレポートを使用してベイジアンネットワークを形成し、残りの各レポートのバイナリ値の確率を見つけます。
例
ここで、人為的な例が説明に役立つ可能性があり、間違いなく間違った用語を使用した場合の混乱を解消する可能性があります:-)アプリケーションがユーザーにニュース記事を表示する例を考えてみましょう。表示されるユーザーの好みに基づいて、最初に表示するニュース記事を選択します。相関関係のあるニュース記事の特徴は、、country of origin
またはcategory
ですdate
。したがって、ユーザーがスコットランドからのニュース記事を興味深いものとしてラベル付けすると、スコットランドの他のニュース記事がユーザーにとって興味深いものになる可能性が高くなることを機械学習者に伝えます。スポーツなどのカテゴリ、または2004年12月12日などの日付についても同様です。
この設定は、すべてのニュース記事の任意の順序(たとえば、カテゴリ別、日付別)を選択するか、ランダムに並べ替えてから、ユーザーが進むにつれて優先度を計算することで計算できます。私がやりたいのは、ユーザーに少数の特定のニュース記事を見て、それらに興味があるかどうかを言わせることによって、その注文の一種の「有利なスタート」を取得することです(教師あり学習の部分)。ユーザーに表示するストーリーを選択するには、ストーリーのコレクション全体を考慮する必要があります。ここで相互情報量が出てきます。各ストーリーについて、ユーザーが分類したときに、他のすべてのストーリーについてどれだけ教えてくれるか知りたいです。たとえば、スコットランドを起源とするストーリーが多数ある場合は、ユーザーにそのうちの1つを(少なくとも)分類してもらいたいと思います。カテゴリや日付などの他の相関機能についても同様です。目標は、分類されたときに他のレポートに関するほとんどの情報を提供するレポートの例を見つけることです。
問題
私の数学は少し錆びていて、機械学習に慣れていないので、相互情報量の定義をJavaの実装に変換するのに問題があります。ウィキペディアでは、相互情報量の方程式を次のように説明しています。
しかし、何も分類されておらず、学習アルゴリズムがまだ何も計算していないときに、これが実際に使用できるかどうかはわかりません。
私の例のように、このクラスの新しいラベルのないインスタンスが多数あったとします。
public class NewsStory {
private String countryOfOrigin;
private String category;
private Date date;
// constructor, etc.
}
私の特定のシナリオでは、フィールド/機能間の相関は完全一致に基づいているため、たとえば、1日と10年の日付の違いはそれらの不平等において同等です。
相関の要因(たとえば、日付はカテゴリよりも相関が高いですか?)は必ずしも等しいとは限りませんが、事前定義して一定にすることができます。これは、関数の結果が事前定義された値であることを意味しますかp(x,y)
、それとも用語を混同していますか?
質問 (ついに)
この(偽の)ニュース記事の例を前提として、相互情報量の計算を実装するにはどうすればよいですか?ライブラリ、javadoc、コード例などはすべて歓迎すべき情報です。また、このアプローチに根本的な欠陥がある場合は、その理由を説明することも同様に価値のある答えになります。
PS。私はWekaやApacheMahoutなどのライブラリを知っているので、それらについて言及するだけではあまり役に立ちません。私はまだ相互情報量に関するものを具体的に探しているこれら両方のライブラリのドキュメントと例を探しています。私が本当に役立つのは、これらのライブラリが相互情報量に役立つリソース(コード例、javadoc)を指すことです。