コンピュータサイエンス

コンピュータサイエンスの学生、研究者、実務家のためのQ&A

3
いつk最近傍を超えて移動すべきですか
私たちが行う多くの機械学習プロジェクトでは、k最近傍分類子から始めます。通常、すべての距離を計算するのに十分な時間があるため、これは理想的な開始分類子であり、パラメーターの数は制限されています(k、距離メトリック、および重み付け)。 ただし、プロジェクトの後半で別の分類器に切り替える余地がないため、これにはknn分類器を使用するという効果があります。新しい分類子を試す正当な理由は何でしょうか。明らかなのはメモリと時間の制約ですが、別の分類子が実際に精度を改善できるケースはありますか?

1
2つのノード間のk最短経路を見つける
重み付き有向グラフ、および重み関数d (u 、v )が与えられると、通常はダイクストラのアルゴリズムを使用して最短経路を取得できます。私が興味を持っているのは、2 n d-最短経路、3 r d-最短経路などを取得する方法です。G = V、EG=V、EG=V,Ed(u 、v )d(あなた、v)d(u,v)2n 日2んd2^{nd}3r d3rd3^{rd} 質問: 重み付きグラフの2つのノード間のi番目に最短のパスを取得する効率的なアルゴリズムはありますか? 重み付きグラフの2つのノード間のk最短経路を取得するための効率的なアルゴリズムはありますか? 2番目の質問への回答は、最初の質問への回答への呼び出しよりも効率的に実行できるのではないでしょうか。kkk

2
遺伝的アルゴリズムのパラメーターの選択
特定のシステムをモデル化するために、遺伝的アルゴリズムに適切な数のパラメーターをどのように選択できますか? たとえば、自動車の生産を最適化したいとし、1,000人の異なる従業員ごとに、さまざまなタスクで時間効率を1,000回測定したとします。つまり、1,000,000個のデータポイントがあります。これらのほとんどは弱いあなたの工場の全体的な効率と相関する可能性が高いが、そうではありませんので、あなたは、彼らは統計的信頼度とは無関係であると言うことができるという弱いです。1,000,000以上の自由度がなくなり、収束が非常に遅くなるか、まったく収束しないように、GAの入力を選択するにはどうすればよいですか? 具体的には、機能を事前選択または選択的に削除するために使用できるアルゴリズムは何ですか? 私は、このシナリオで自分自身を使用している一つのアプローチは、私のような両親かもしれないので、パラメータの選択自体を進化させている{a,b,c}、{b,d,e,q,x,y,z}などを。次に、子を変更して機能を追加または削除します。これは、数十の機能に適しています。しかし、問題は、自由度が多数あると効率が悪いことです。その場合は、10^n組み合わせ(上記の例では)を調べています10^1,000,000。これにより、何らかの有用なパフォーマンスを得るには、機能の事前フィルタリングが重要になります。

2
少ないメモリフットプリントでセット実装を探す
セットデータタイプの実装を探しています。つまり、 サイズuのユニバースU = \ {0、1、2、3、\ dots、u – 1 \}からの動的サブセットSSS(サイズnnn)を維持します。U={0,1,2,3,…,u–1}U={0,1,2,3,…,u–1}U = \{0, 1, 2, 3, \dots , u – 1\}uuu 操作insert(x)(要素xをSに追加SSS)およびfind(x)(要素xがSのメンバーかどうかをチェックSSS) 他の操作は気にしません。オリエンテーションについては、私が使用しているアプリケーションでu≈1010u≈1010u \approx 10^{10}ます。 時間O(1)O(1)O(1)で両方の操作を提供する実装を知っているので、主にデータ構造のサイズを心配します。何十億ものエントリを期待していますが、できるだけスワッピングを避けたいです。 必要に応じて、ランタイムを犠牲にしてもかまいません。O(\ log n)の償却実行時間O(logn)O(log⁡n)O(\log n)は、私が認めることができるものです。予想されるランタイムまたは\ omega(\ log n)のランタイムω(logn)ω(log⁡n)\omega(\log n)は許可されません。 私の考えの1つは、SSSを範囲の和集合として表すことができれば[xmin, xmax]、パフォーマンスがいくらか低下する代わりに、ストレージサイズを節約できるということです。また、など、他のいくつかのデータパターンも可能[0, 2, 4, 6]です。 そのようなことを行うことができるデータ構造を私に教えてもらえますか?



2
ピアグレーディングデザイン-グラフを選択して、正確なランキング/レーティングを取得
バックグラウンド。グレーディングプロセスの一部としてピアグレーディングを使用して、半自動グレーディングのコードを書いています。生徒には一度に2組のエッセイが与えられ、生徒はスライダーを使用してどちらが優れているか、どれほど優れているかを選択できます。たとえば、スライダーは次のようになります。 A---X-B ピアグレーディングの結果に基づいて、エッセイがランク付けされ、教師が上位X%と下位X%を評価し、すべてのエッセイのスコアがこれに基づいて自動的に計算されます。このランキング/スコアリングプロセスを実行する方法はすでに考え出されています。その部分はうまくいきます。 私の質問。生徒に与えるエッセイのペアをどのように選択すればよいですか? シミュレーションでは、正確なランキングを取得するには、エッセイを少なくとも3回成績評価する必要があることが示唆されています。したがって、各エッセイは、ピアグレーディング用に提示されるペアのうち少なくとも3つに表示されます。 これはグラフの問題と考えることができます。エッセイをノードと考えてください。各エッジは、ピアのグレーディングプロセス中に提示されるエッセイのペアを表します。上記の精度結果は、各ノード(またはほとんどのノード)の次数が少なくとも3であることを示唆しています。どのようなグラフを使用する必要がありますか?ピアグレーディング中に使用するグラフをどのように生成する必要がありますか? 1つの課題は、グラフにクラスターがある場合、これによりピアグレーディングが歪むことです。たとえば、ピアグレーディングの結果が歪むため、高品質のエッセイに対してピアグレーディングを行うことは望ましくありません。 あなたは何をお勧めします? この問題は、次のようなものを使用した無向グラフでモデル化できると思います。 次数が最も低いノードを取得して、次に少ないノードとリンクします あなたの平均学位が少なくとも3になるまで続けます ノード接続を最大化 クリークの数を最小限に抑える これは良いアプローチですか?そうでない場合、代わりに何をお勧めしますか?

4
動的プログラミングの「動的」とは何ですか?
私の先輩の1人が就職の面接を受け、動的と呼ばれる理由を尋ねられました。彼は答えることができず、面接官をあきらめた後、それについて動的なものは何もないと言った、それはちょうどそのように呼ばれた。それは私には信じがたいことです。 これは、副問題が実行時に解決され、最終目標の達成に使用されるという事実を示していますか?実行時に発生する動的メモリ割り当てのように? [回答] 質問する前に、この wikiの記事を読んでおくべきでした。申し訳ありません。

3
カーネル化トリック、ニューラルネットワーク用
ニューラルネットワークとSVMについて学習してきました。私が読んだチュートリアルでは、SVMにとってカーネル化がいかに重要であるかを強調しました。カーネル関数がない場合、SVMは単なる線形分類器です。カーネル化により、SVMは非線形機能を組み込むこともできるため、より強力な分類器になります。 カーネル化をニューラルネットワークに適用することもできるように思えますが、私が見たニューラルネットワークのチュートリアルではこれについて言及していません。人々は一般的にニューラルネットワークでカーネルトリックを使用しますか?それが大きな違いを生むかどうかを確かめるために誰かが実験していたに違いないと思います。カーネル化は、SVMと同じくらいニューラルネットワークに役立ちますか?なぜですか、なぜそうではありませんか? (カーネルトリックをニューラルネットワークに組み込むいくつかの方法を想像できます。1つの方法は、適切なカーネル関数を使用して、入力(RんRん\mathbb{R}^nのベクトル)をより高次元の入力であるベクトルに前処理することですin RメートルRメートル\mathbb{R}^{m} for M ≥ Nメートル≥んm\ge n。複数層のニューラルネットの場合、別の方法は、ニューラルネットワークの各レベルでカーネル関数を適用することです。


1
回転数が奇数のスプレーツリー
アイテムをスプレイツリーに挿入すると、回転はジグザ​​グまたはジグジグパターンに基づいてペアで実行されます。実行するローテーションの数が奇数の場合、リーフから開始する追加のローテーションを実行するか、追加のローテーションを保存してルートで実行することができます。それは重要ですか? たとえば、添付された画像では、4をBSTに挿入し、それをルートに「展開」します。図の上部で、最初にリーフノードにジグザグペアを配置し、下部からジグザグスプレーを実行して、ルートに最後の右回転を残します。図の下部では、最初に葉から奇数回転を行い、次にルートまでジグザグに広げます。 どちらが正しい?または、両方とも通常のスプレイツリーパフォーマンスにつながりますか?

1
ニューラルネットワークの重みが乱数で初期化されるのはなぜですか?
ニューラルネットワークの初期の重みが乱数として初期化されるのはなぜですか?これは「対称性を壊す」ために行われ、これによりニューラルネットワークの学習が速くなることをどこかで読んだことがあります。対称性を壊すことで、学習がどのように速くなりますか? 重みを0に初期化した方がいいでしょうか?そうすれば、重みはそれらの値(正または負)をより速く見つけることができますか? 初期化時に重みが最適値に近いことを期待することとは別に、重みをランダム化する背後にある他の基本的な哲学はありますか?

3
スレッドの安全性を証明することは可能ですか?
変数とこれらの変数を変更する命令で構成されるプログラム、および同期プリミティブ(モニター、ミューテックス、Javaの同期またはC#のロック)が与えられた場合、そのようなプログラムがスレッドセーフであることを証明できますか? スレッドセーフティやレース条件などを記述するための正式なモデルさえありますか?

2
これらのCS領域にとって興味深い数学は何ですか?
私のCSの学位については、「標準的な」数学的背景のほとんどを持っています。 微積分:微分、積分、複素数 代数:フィールドまでの概念のほとんど。 数論:XGCDおよび関連するもの、主に暗号化用。 線形代数:固有ベクトル/固有値まで 統計:確率、検定 論理:命題、述語、モーダル、ハイブリッド。 CS領域での私の主な関心は、セキュリティ、暗号化、人工知能です。これらの分野、特にAIは現時点では私の主な研究分野ではないため、これらの領域にとって興味深いと思われる数学的なトピックについて何か提案があるかどうか疑問に思いました。

3
ポリゴンのランダムサンプリング
ポリゴン内の一様にランダムなポイントをサンプリングしたい... 多数をサンプリングする場合、同じ面積の場合、2つの地域に分類される可能性が等しくなります。 [0,1]の2つの乱数を座標として取るので、正方形の場合、これは非常に簡単です。 私が持っている形状は正多角形ですが、どの多角形でも機能したいのですが。 /programming/3058150/how-to-find-a-random-point-in-a-quadrangle

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