問題タブ [information-theory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - MATLABMatrixの相互情報量
データセット内の共起の頻度カウントを表す正方行列があります。言い換えると、行は特徴1のすべての可能な観測値を表し、列は特徴2の可能な観測値です。セル(x、y)の数は、特徴1が同時にxであることが観測された回数です。機能2はyでした。
この行列に含まれる相互情報量を計算したいと思います。MATLABには組み込みinformation
関数がありますが、x用とy用の2つの引数を取ります。この行列を操作して、期待する引数を取得するにはどうすればよいですか?
または、行列をとる独自の相互情報量関数を作成しましたが、その精度についてはよくわかりません。正しく見えますか?
information-theory - 格納された情報 (エントロピー?) の最大化
したがって、この質問がここに属しているのか、それとも数学のオーバーフローなのかはわかりません。いずれにせよ、私の質問は情報理論についてです。
私が16ビットワードを持っているとしましょう。その数には、1 と 0 の 65,536 の一意の構成があります。これらの構成のそれぞれが何を表すかは重要ではありません。表記方法 (2 の補数と符号付きマグニチュードなど) によっては、同じ構成でも異なる意味になる可能性があるためです。
私が疑問に思っているのは、それよりも多くの情報を 16 ビット ワードに格納するための手法があるということですか?
私の最初のアイデアは奇数/偶数パリティか何かのようなものでしたが、それは構成によってすでに決定されていることに気付きました...つまり、そこにエンコードされた余分な情報はありません。そんなものは存在しないのだろうかと思い始めています。
編集たとえば、魔法のコンピューター(ここでは量子か何かを考えている)が0、1、aを理解できるとしましょう。次に、明らかに 3^16 の構成があり、[0 - 65,536] よりも多くの数値を格納できるようになりました。ビットストリームに余分な情報をエンコードするために混乱させることができる16ビットワードの他のプロパティはありますか?
EDIT2これを言葉にするのに本当に苦労しています。今、コンピューターで 16 ビット ワードを見ると、個々の 1 と 0 の相対的な順序に関する情報を伝えるプロパティです。2 ^ 16を超える一意の「構成」を許可する16ビットワードを見る別のプロパティまたは方法はありますか? (これは構成ではなく、2^16 xxxx であることに注意してください。ここで、xxxx はそのプロパティのインスタンスを表す名詞です。)。私が本当に考えることができる唯一のことは、各ビットが実際に1または0であったかどうかではなく、1から0への遷移の数または何かを見た場合のようなものですか? 最終的には 1 と 0 の構成のみに依存するため、遷移は 2^16 を超える組み合わせを生成しません。1 と 0 の構成から派生するプロパティと、2 ^ 16 を超える結果となるその他のプロパティを探しています。それが存在した場合、これが何と呼ばれるかさえ誰かが知っていますか?
EDIT3わかりました。私の質問はこれに要約されます: 単語の 1 と 0 の構成がそれを完全に定義することをどのように証明しますか? IE 2 つの 16 ビット ワードが等しいことを示すために、ビットマップ以外の情報が必要ないことをどのように証明しますか?
最終編集
例があります... 1 と 0 の存在を見る代わりに、ビット間の遷移を見ると、2^16 個のアルファベット文字を格納できます。左のビットが同じ場合は 1 として扱い、遷移する場合は 0 として扱います。16 ビット ワードを、各リンクが 0/1 を表す循環リンク リスト型構造として使用すると、基本的には 16 ビットになります。ビット間の遷移からのワード。これは私が探していたものの正確な例ですが、結果は 2^16 になり、それ以上のものはありません。私はあなたがもっとうまくやれないと確信しており、正しい答えをマークしています =(
graph - グラフのエントロピーを計算するにはどうすればよいですか?
ランダムに生成された形式グラフのセットがあり、それぞれのエントロピーを計算したいと思います。同じ質問を別の言葉で言います。私はいくつかのネットワークを持っており、それぞれの情報量を計算したいと考えています。
グラフ エントロピーの正式な定義を含む 2 つのソースを次に 示し
ます
。
私が探しているコードは、グラフを入力として (エッジ リストまたは隣接行列として) 受け取り、ビット数またはその他の情報コンテンツの尺度を出力します。
これの実装がどこにも見つからないため、正式な定義に基づいてゼロからコードを作成しようとしています。誰かがすでにこの問題を解決していて、喜んでコードを共有してくれるなら、大歓迎です。
python - Pythonでの継続的な相互情報量
[Frontmatter] (質問が必要な場合はこれをスキップしてください):
私は現在、シャノンウィーバー相互情報量と正規化された冗長性を使用して、特徴ごとに整理された、離散的および連続的な特徴値のバッグ間の情報マスキングの程度を測定することを検討しています。この方法を使用して、 ID3に非常によく似たアルゴリズムを構築することが私の目標ですが、シャノンエントロピーを使用する代わりに、アルゴリズムは、完全な入力特徴空間に基づいて、単一の特徴と特徴のコレクションの間で共有される情報を最大化または最小化することを(ループ制約として)求め、後者のコレクションに新しい特徴が増加した場合、または増加した場合にのみ追加します。それぞれ相互情報量を減らします。これにより、事実上、ID3の決定アルゴリズムがペアスペースに移動し、両方の方法で予想される時間とスペースの複雑さのすべてを備えたアンサンブルアプローチが妨げられます。
[/フロントの問題]
質問に移ります:私はSciPyを使用してPythonで継続的なインテグレーターを動作させようとしています。離散変数と連続変数の比較を行っているため、特徴と特徴のペアの各比較に対する現在の戦略は次のとおりです。
離散機能と離散機能:相互情報量の離散形式を使用します。これにより、確率が2倍になり、コードで問題なく処理されます。
他のすべての場合(離散対連続、逆、および連続対連続):ガウス推定量を使用して確率密度関数を平滑化する連続形式を使用します。
後者の場合、ある種の離散化を実行することは可能ですが、入力データセットは本質的に線形ではないため、これは潜在的に不必要に複雑です。
顕著なコードは次のとおりです。
SciPyのgaussian_kdeクラスの特異性を防ぐために、正確に1つのポイントを過大評価することが意図的に行われていることに注意してください。xとyのサイズが相互に無限大に近づくと、この影響は無視できるようになります。
私の現在の問題は、SciPyのガウスカーネル密度推定に対して多重積分を機能させようとしていることです。私はSciPyのdblquadを使用して統合を実行しようとしていますが、後者の場合、次のメッセージの驚異的な噴出を受け取ります。
私が設定したときnumpy.seterr ( all='ignore' )
:
警告:丸め誤差の発生が検出されたため、要求された許容値を達成できません。エラーは過小評価されている可能性があります。
そして'call'
、エラーハンドラを使用するように設定すると:
浮動小数点エラー(アンダーフロー)、フラグ4
浮動小数点エラー(無効な値)、フラグ8
何が起こっているのかを理解するのはとても簡単ですよね?まあ、ほとんど:IEEE 754-2008とSciPyは、ここで何が起こっているのかを教えてくれるだけで、その理由や回避方法は教えてくれません。
結果:一般的には;minfo_xy
に解決されます。nan
Float64演算を実行するときに情報が失われたり無効になったりするのを防ぐには、そのサンプリングが不十分です。
SciPyを使用する場合、この問題の一般的な回避策はありますか?
さらに良いことに、浮動小数点値の2つのコレクションまたはペアのマージされたコレクションを取得するインターフェイスを備えたPythonの継続的な相互情報量の堅牢で標準化された実装がある場合、この完全な問題は解決されます。存在するものをご存知の場合はリンクしてください。
前もって感謝します。
編集:これnan
により、上記の例の伝播の問題が解決されます。
ただし、より堅牢な実装の要求と同様に、丸め修正の問題が残っています。どちらのドメインでも助けていただければ幸いです。
assembly - サブルーチン推論
コンパイルされたプログラムからサブルーチンを推論するためのアルゴリズム/テクニックを説明している論文はありますか? 言い換えれば、プログラムに複数回出現するコードのブロックを見つけるアルゴリズムはありますか? これらのブロックでは、一致を見つける可能性が高くなるように (もちろん、プログラムの動作を変更することなく) 命令を並べ替えることができます。
このプロセスは、呼び出しを回避するためにコンパイラーによって実行されるサブルーチンのインライン化の反対と見なすことができますが、バイナリ サイズは増加します。
これは非常に難しい理論的問題のように私には思えます。
algorithm - エントロピー パラメーターを使用して疑似ランダム ストリームを生成する
長さnのバイナリ結果のストリームを、0 と 1 の数が等しいが、ペアごとの結果の偏った頻度で生成するにはどうすればよいですか。 ( freq(01) + freq(10) ) / ( freq(00) + freq(11) ) = k
probability - 確率が不均一な場合のマルコフ エントロピー
マルコフ方程式の観点から情報エントロピーについて考えてきました。
H = -SUM(p(i)lg(p(i))、ここで、lg は 2 を底とする対数です。
これは、すべての選択 i の確率が等しいと仮定しています。しかし、与えられた選択肢のセットの確率が等しくない場合はどうなるでしょうか? たとえば、StackExchange に 20 のサイトがあり、ユーザーが StackOverflow 以外の StackExchange サイトにアクセスする確率が p(i) であるとします。しかし、ユーザーが StackExchange にアクセスする確率は p(i) の 5 倍です。
この場合マルコフ方程式は成り立たないのでしょうか? それとも、私が気付いていない高度なマルコフのバリエーションがありますか?
matlab - シャノンのチャネル容量とエントロピーの実装の問題
位相空間をAlpha
パーティションに分割するとき、その分割がどれほど優れているかを見つけることを目的としています。この観点から、ソースエントロピーを見つける必要があります。今、私はたくさんグーグルで検索しましたが、ソースエントロピーが何であるかを知ることができませんでした。誰でも説明できますか:
シャノンのエントロピーはソースエントロピーとどのように異なり、ソースエントロピーを実装する方法は?
チャネル容量を計算する方法は?以下は、データxのシャノンのエントロピーを計算するためのコードです。チャネル容量を計算するために次のコードを変更すると、私は義務付けられます。
- あまり技術的でない専門用語でのコルゴモロフエントロピーとシャノンのエントロピーの違いは何ですか?コルゴモロフの複雑さによって返される複雑さの数の重要性/意味を理解することは混乱を招きます。
text-mining - 珍しい単語の相互情報
約 3000 語の大きな文書を使用して 2 つの単語間の MI を計算する場合、文書内であまり繰り返されない最初の単語の確率を計算すると、2 番目の単語については非常に低く、同じです。この低い値は、同時確率に影響を与えますp(x) * P(y)
。リードは、相互情報量の値がゼロまたは NaN になります。どうすればこれを回避できますか?
encoding - 決定木におけるシャノンのエントロピー測定
意思決定ツリーの分岐でシャノンのエントロピー測定が使用されるのはなぜですか?
エントロピー(S) = - p(+)log( p(+) ) - p(-)log( p(-) )
私はそれがノーの尺度であることを知っています。情報をエンコードするために必要なビット数。分布が一様であるほど、エントロピーは大きくなります。しかし、決定木の作成 (分岐点の選択) に頻繁に適用される理由がわかりません。