タグ付けされた質問 「algorithms」

問題のクラスに対する解決策を見つけることに関与する計算ステップの明確なリスト。

1
期待の最大化の明確化
EMアルゴリズムに関する非常に役立つチュートリアルを見つけました。 チュートリアルの例と写真は単に見事です。 確率の計算に関する関連質問期待値の最大化はどのように機能しますか? チュートリアルで説明されている理論を​​例にどのように接続するかについて、別の質問があります。 Eステップ中に、EMは、どこでもを下回る関数を選択しますこの関数は、。gtgtg_tログP(x ; Θ )log⁡P(x;Θ)\log P(x;\Theta)gt(Θ^(t ))= ログP(x ; Θ^(t ))gt(Θ^(t))=log⁡P(x;Θ^(t))g_t( \hat{\Theta}^{(t)}) = \log P(x; \hat{\Theta}^{(t)}) したがって、この例のは、反復ごとに異なるように見えます。gtgtg_t さらに、例ではとをデータに適用すると、得られますおよび。私にとっては直観に反するように見えます。以前にいくつかの仮定があり、それをデータに適用して新しい仮定を取得したため、データは何らかの形で仮定を変更しました。がと等しくない理由がわかりません。 Θ (0 ) B =0.5 Θ (1 ) A =0.71 Θ (1 ) B =0.58 Θ(0) Θ(1)Θ^(0 )あ= 0.6Θ^A(0)=0.6\hat{\Theta}_A^{(0)} = 0.6Θ^(0 )B= 0.5Θ^B(0)=0.5\hat{\Theta}_B^{(0)} = 0.5Θ^(1 )あ= 0.71Θ^A(1)=0.71\hat{\Theta}_A^{(1)} = 0.71Θ^(1 …

4
アルファとベータが大きいベータ分布の値を(数値的に)概算するにはどうすればよいですか?
大きな整数のアルファ、ベータ(たとえば、アルファ、ベータ> 1000000)のベータ分布の値を計算するための数値的に安定した方法はありますか? 実際、モードの周りに99%の信頼区間が必要なだけです。 追加:申し訳ありません。私の質問は、思ったほど明確に記述されていませんでした。私がやりたいのはこれです。コンベヤーベルト上の製品を検査する機械があります。これらの製品の一部は機械によって拒否されます。ここで、機械オペレーターが検査設定を変更した場合、彼/彼女の推定不合格率と、現在の推定値の信頼性についてのヒントを表示します。 したがって、実際の拒否率を確率変数Xとして扱い、拒否されたオブジェクトNと受け入れられたオブジェクトMの数に基づいてその確率変数の確率分布を計算すると思いました。Xの一様分布を仮定すると、これはNとMに依存するベータ分布。この分布をユーザーに直接表示するか、間隔[l、r]を見つけて、実際の棄却率がp> = 0.99でこの間隔に収まるように(shabbychefの用語を使用)、これを表示できます。間隔。M、Nが小さい場合(パラメーターの変更直後)、分布を直接計算し、間隔[l、r]を概算できます。ただし、M、Nが大きい場合、x ^ N *(1-x)^ Mは小さすぎて倍精度の浮動小数点数として表されるため、この単純なアプローチではアンダーフローエラーが発生します。 私の最善の策は、小さなM、Nに単純なベータ分布を使用し、M、Nがしきい値を超えるとすぐに同じ平均と分散の正規分布に切り替えることです。それは理にかなっていますか?

2
ニューラルネットワークのVC次元の計算
固定非反復(DAG)トポロジー(ノードとエッジの固定セットですが、学習アルゴリズムはエッジの重みを変えることができます)の場合、入力ニューロンを持つを入力として、1つの出力に導きます(0から離れた特定の固定しきい値の場合、1に切り上げるか、-1に切り捨てる実際の値を出力します)。このネットワークのVC次元を計算(または概算)するための高速な方法はありますか?nnn{−1,1}n{−1,1}n\{-1,1\}^n ノート 私はCS.SEでもう少し正確なアルゴリズムの再公式化を求めました: ニューラルネットワークのVC次元を効率的に計算または近似する

4
k-meansの実装をどのようにテストしますか?
免責事項:この質問をStackoverflowに投稿しましたが、このプラットフォームにはこれがより適していると思いました。 多次元データセットの独自のk-means実装をどのようにテストしますか? データに対して既存の実装(つまり、Matlab)を実行し、結果を私のアルゴリズムと比較することを考えていました。しかし、これには両方のアルゴリズムがほぼ同じように機能する必要があり、2つの結果の間のマッピングはおそらく簡単ではありません。 もっと良いアイデアはありますか?


3
ネルダーミードの停止基準
関数を最適化するためにNelder-Meadアルゴリズムを実装しようとしています。ネルダ-ミードに関するWikipediaのページには、その停止基準を除いて、全体のアルゴリズムについて驚くほど明らかです。悲しいことに、それは言う: 収束を確認します[説明が必要]。 私は自分でいくつかの基準を試し、テストしました: である場合に停止します。ここで、は小さく、はシンプレックスの番目の頂点で、low()からhigh()関数値。つまり、シンプレックスの最大値が最小値にほぼ​​等しい場合。これは、シンプレックス内の関数の動作を保証しないため、適切に機能しないことがわかりました。例:関数を考えます:これはもちろん最適化するのは簡単ですが、NMでこれを行い、2つのシンプレックスポイントをおよびとしましょう。f(xN+1)−f(x1)&lt;ϵf(xN+1)−f(x1)&lt;ϵf(x_{N+1}) - f(x_1) < \epsilonϵϵ\epsilonxixix_iiiif(x1)f(x1)f(x_1)f(xN+1)f(xN+1)f(x_{N+1})f(x)=x2f(x)=x2f(x) = x^2x1=−1x1=−1x_1 = -1x2=1x2=1x_2=1。アルゴリズムは、最適を見つけることなく、ここに収束します。 2番目のオプションには、シンプレックスの重心の評価が含まれます。停止する場合。これは、シンプレックスの最低点と重心がそのような類似した値を持っている場合、シンプレックスが収束を呼び出すのに十分小さいと想定しています。|f(x1)−f(xc)|&lt;ϵ|f(x1)−f(xc)|&lt;ϵ|f(x_1) - f(x_c)| < \epsilon これは収束をチェックする適切な方法ですか?または、これを確認する確立された方法はありますか?ほとんどの検索ヒットはアルゴリズムの複雑さに焦点を当てているため、これに関するソースは見つかりませんでした。

3
VCディメンションが重要なのはなぜですか?
ウィキペディアは言う: VCディメンションは、アルゴリズムが粉砕できる最大のポイントセットのカーディナリティです。 たとえば、線形分類子のカーディナリティはn + 1です。私の質問は、なぜ私たちは気にするのですか?線形分類を行うほとんどのデータセットは非常に大きくなる傾向があり、多くのポイントが含まれています。

1
大規模なPCAも可能ですか?
主成分分析(PCA)の古典的な方法は、列の平均がゼロである入力データマトリックスで行う(PCAが「分散を最大化できる」)方法です。これは、列を中央に配置することで簡単に実現できます。ただし、入力マトリックスがスパースの場合、中央に配置されたマトリックスはスパースになり、マトリックスが非常に大きい場合、メモリに収まりません。ストレージの問題に対するアルゴリズム的な解決策はありますか?

2
ディシジョンツリーでAdaboostを使用する理由
私は分類タスク、特にAdaboostのブースティングアルゴリズムについて少し読んでいます。Adaboostの目的はいくつかの「弱い学習者」を取ることであり、トレーニングデータの一連の反復を通じて、分類子をプッシュして、モデルが繰り返し間違いを犯すクラスを予測することを学習することを理解しています。しかし、私がこれまでに行った非常に多くのリーディングで、決定木を弱い分類子として使用しているのはなぜかと思いました。これには特別な理由がありますか?Adaboostの特に良い候補または悪い候補になる特定の分類子はありますか?

2
異常検出:使用するアルゴリズムは?
コンテキスト:私は、臨床データを分析して、タイプミスの可能性がある妥当ではないデータを除外するシステムを開発しています。 これまでに行ったこと: 妥当性を定量化するために、これまでの私の試みは、データを正規化し、セットD(=トレーニングセット)の既知のデータポイントまでの距離に基づいてポイントpの妥当性値を計算することでした: plausibility(p)=∑q∈DGauss(distance(p,q))plausibility(p)=∑q∈DGauss(distance(p,q))\text{plausibility}(p)=\sum_{q\in D}\text{Gauss}(\text{distance}(p,q)) その定量化により、妥当なデータと妥当でないデータを区別するしきい値を選択できます。私はpython / numpyを使用しています。 私の問題: このアルゴリズムは、独立した次元を検出できません。理想的には、レコードについて知っていることなら何でもアルゴリズムに入れて、次元Xがレコードの妥当性に影響を及ぼさないことをそれ自体で見つけることができます。 このアルゴリズムは、ブール値や選択入力などの離散値には実際には機能しません。それらは連続値にマッピングできますが、選択1が選択3よりも選択2に近いというのは直観に反しています。 質問: このタスクにはどのようなアルゴリズムを検討する必要がありますか?最近傍に基づく、クラスタリングに基づく、および統計的アプローチを含む多くのオプションがあるようです。また、この複雑さの異常検出に関する論文を見つけるのも困難です。 アドバイスは大歓迎です。 [編集]例: データが人の身長、人の体重、タイムスタンプで構成されているとしましょう。つまり、3Dデータです。体重と身長は相関していますが、タイムスタンプは完全に独立しています。ユークリッド距離を考慮する場合、交差検証データのほとんどに適合するように小さなしきい値を選択する必要があります。タイムスタンプは他のディメンションとまったく相関しないため、レコードが妥当であるかどうかを判断することは重要ではないため、アルゴリズムはタイムスタンプディメンションを無視するのが理想的です。どんなタイムスタンプももっともらしいです。 一方、タイムスタンプが重要な例を構成することができます。たとえば、フィーチャXの値Yは、特定の日付より前ではなく特定の日付より後に測定された場合に妥当である可能性があります。

3
最小限のメモリを使用してデータをトレーニングする最も効率的な方法は何ですか?
これは私のトレーニングデータです:200,000例x 10,000機能。したがって、私のトレーニングデータマトリックスは-200,000 x 10,000です。 各例の機能を生成するときに、すべてのデータセットを1つずつ(1つずつ)保存することで、メモリの問題なしにこれをフラットファイルに保存できました。 しかし、今、私がMilk、SVM light、またはその他の機械学習アルゴリズムを使用すると、すべてが1つずつトレーニングするのではなく、トレーニングデータ全体をメモリにロードしようとします。ただし、RAMが8 GBしかないので、この方法で進めることはできません。 とにかく、アルゴリズムを1つのデータセットごとにトレーニングできることを知っていますか?つまり、トレーニング中にいつでも1つのデータセットをメモリにロードするだけです。

4
メールアドレスから疑似乱数まで[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新することがありますので、話題のクロス検証済みのため。 2年前休業。 私の目的: メールアドレスを取り、1、2、3、4の疑似乱数を出力する機能が欲しいのですが。 少し詳細: 準乱数とは、電子メールアドレスの一般的な母集団が与えられた場合、1、2、3、または4の値を取得する確率はほぼ同じであること、およびドメイン名などの電子メールアドレスの明らかな体系的なプロパティは、 1、2、3、または4の値を取得する確率には影響しません。 少し背景: 私は質問に書かれたオンライン実験を行っており、参加者は2回ログインします。参加者を4つのグループのいずれかにランダムに割り当てたい。これは1つのセッションで簡単に実行できますが(乱数ジェネレーターを使用できます)、セッション間の割り当てを覚えておく方法が必要です。したがって、参加者のメールから準ランダムなグループ割り当てを抽出できると思いました。また、私が自由に使用できる一連の機能にも制限があります(完全なリストについては、こちらを参照してください)。文字列関数は、次のとおりです。 最初の考え: ほぼ等しい確率で1、2、3、または4の値を返すメールアドレスの機能のセットを抽出しようと考えました。次に、これらのプロパティを合計して、mod 4 + 1を取得します。したがって、中心極限定理のようなものを想定すると、私は近づくかもしれません。 私の頭に浮かんだ可能な機能: 文字列の長さ 最初の「a」、「b」などの位置

3
ランキングのための機械学習アルゴリズム
私は、特性に従って記述できる要素セットを持っています。したがって:XXXnnn xi:{ci1,ci2,…,cin}∣xi∈Xxi:{ci1,ci2,…,cin}∣xi∈Xx_i: \{c_{i1}, c_{i2}, \ldots, c_{in}\} \mid x_i \in X ここで、は、特性による要素(数値)評価です。だから私の要素は次元空間の点として見ることができます。 i j ncijcijc_{ij}iiijjjnnn 私のリーディングによると、いくつかの要素からなる「トレーニングセット」を使用した場合、「ベイズ分類子」のようなアルゴリズムがあり、私のセットの要素に「はい」または「いいえ」タイプの回答を提供できます。私のセットの要素、およびアルゴリズムの予想される結果。そのデータに基づいて、アルゴリズムはトレーニングセットの一部ではなく、他の要素を取り、トレーニングセットのおかげで学習した内容に基づいて「はい」または「いいえ」の回答を提供できる必要があります。これは、期待すること(トレーニングセット)について何らかの考えを持っているが、その結果をもたらす特定のルールがわからない場合に最適です。 私のデータでしたいことは、「はい」または「いいえ」のタイプの回答を得ることではありませんが、要素内のランキングを紹介したいと思います。それらのいくつかは他より「より良い」です。ベイズフィルターの場合と同様に、私は何を期待しているのかについての一般的な考えを持っています。このようにして、MLAにフィードする要素のサブセットから取得した「トレーニングランキング」を生成できます。そのトレーニングに基づいて、私のセット全体をランク付けすることができます。 それを行うために、私は2つのアプローチを見ます: 各要素にはMLAによってスコアが与えられ、スコアに従って要素をランク付けします。 MLAは、2つの要素とを取り、どちらが良いかを判断できます(ペアワイズ比較)。その比較演算を使用してクイックソートを使用します。x jバツ私xix_ixjxjx_j 注:スコアに基づいてペアワイズ関数を実装するのは簡単であり、ペアワイズ関数に基づいてスコアを生成するのは簡単です。したがって、これらは同じ結果をもたらす2つのアプローチにすぎません。 スコアリング関数またはペアワイズ比較関数を提供できるMLAの例はありますか? 編集:より多くのコンテキストを追加するために:現在、私のアイテムは、計算を行うことによって各アイテムのスコア(実数)を生成するアルゴリズムに従ってランク付けされています。生成されたランキングは非常に正確ですが、アルゴリズムを変更して、何らかの方法で調整しなければならないことがよくあります。これは、期待したとおりにランク付けされていないアイテムがはっきり見えるためです。cijcijc_{ij} 現在、私の設計プロセスは次のとおりです。 完璧なランキングがどうなるかを理解する そのような項目をランク付けするアルゴリズムを(手動で)導出しようとします 結果を観察する アルゴリズムを適合させる 私のプロセスの開始点はトレーニングデータとして使用できるものであるため、MLAについて考えました。私はおそらく現在のランクを取得することから始めて、私のニーズに応じてアイテムを交換し、それを養います。

1
とサンプリングコスト
次のシミュレーション問題に遭遇しました:既知の実数のセットが与えられた場合、分布は ここで、は正の部分を示します。この分布をターゲットとするMetropolis-Hastingsサンプラーを考えることもできますが、アルゴリズムの次数をから。{ω1,…,ωd}{ω1,…,ωd}\{\omega_1,\ldots,\omega_d\}{−1,1}d{−1,1}d\{-1,1\}^dP(X=(x1,…,xd))∝(x1ω1+…+xdωd)+P(X=(x1,…,xd))∝(x1ω1+…+xdωd)+\mathbb{P}(X=(x_1,\ldots,x_d))\propto (x_1\omega_1+\ldots+x_d\omega_d)_+(z)+(z)+(z)_+zzzO(2d)O(2d)O(2^d)O(d)O(d)O(d)

2
切り捨てられた多項分布をサンプリングする方法は?
切り捨てられた多項分布をサンプリングするアルゴリズムが必要です。あれは、 x⃗ ∼1Zpx11…pxkkx1!…xk!x→∼1Zp1x1…pkxkx1!…xk!\vec x \sim \frac{1}{Z} \frac{p_1^{x_1} \dots p_k^{x_k}}{x_1!\dots x_k!} ここで、は正規化定数、→ xはk個の正の成分を持ち、∑ x i = nです。私は唯一の値を検討→ Xの範囲内→ ≤ → X ≤ → Bを。ZZZx⃗ x→\vec xkkk∑xi=n∑xi=n\sum x_i = nx⃗ x→\vec{x}a⃗ ≤x⃗ ≤b⃗ a→≤x→≤b→\vec a \le \vec x \le \vec b この切り捨てられた多項分布をどのようにサンプリングできますか? 注:切り捨てられていない多項分布をサンプリングするアルゴリズムについては、Wikipediaを参照してください。このアルゴリズムを切り捨てられた分布に適応させる方法はありますか? 均一バージョン:問題のより単純なバージョンは、すべての等しくする、p i = 1 / kです。この場合、少なくとも切り捨てられた分布をサンプリングするアルゴリズムを設計できる場合は、それを投稿してください。一般的な答えではありませんが、それは現時点で他の実際的な問題を解決するのに役立ちます。pipip_ipi=1/kpi=1/kp_i = 1/k

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.