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

生物学的進化に触発された(またはエミュレートされた)最適化アルゴリズムのクラス。

3
例:バイナリ結果にglmnetを使用したLASSO回帰
私は興味のある結果が二分されglmnetているLASSO回帰の使用に手を出し始めています。以下に小さな模擬データフレームを作成しました。 age <- c(4, 8, 7, 12, 6, 9, 10, 14, 7) gender <- c(1, 0, 1, 1, 1, 0, 1, 0, 0) bmi_p <- c(0.86, 0.45, 0.99, 0.84, 0.85, 0.67, 0.91, 0.29, 0.88) m_edu <- c(0, 1, 1, 2, 2, 3, 2, 0, 1) p_edu <- c(0, 2, 2, …
77 r  self-study  lasso  regression  interpretation  anova  statistical-significance  survey  conditional-probability  independence  naive-bayes  graphical-model  r  time-series  forecasting  arima  r  forecasting  exponential-smoothing  bootstrap  outliers  r  regression  poisson-distribution  zero-inflation  genetic-algorithms  machine-learning  feature-selection  cart  categorical-data  interpretation  descriptive-statistics  variance  multivariate-analysis  covariance-matrix  r  data-visualization  generalized-linear-model  binomial  proportion  pca  matlab  svd  time-series  correlation  spss  arima  chi-squared  curve-fitting  text-mining  zipf  probability  categorical-data  distance  group-differences  bhattacharyya  regression  variance  mean  data-visualization  variance  clustering  r  standard-error  association-measure  somers-d  normal-distribution  integral  numerical-integration  bayesian  clustering  python  pymc  nonparametric-bayes  machine-learning  svm  kernel-trick  hyperparameter  poisson-distribution  mean  continuous-data  univariate  missing-data  dag  python  likelihood  dirichlet-distribution  r  anova  hypothesis-testing  statistical-significance  p-value  rating  data-imputation  censoring  threshold 

5
ニューラルネットワークトレーニングの逆伝播と遺伝的アルゴリズム
私は各方法の長所と短所を議論するいくつかの論文を読みました。GAが最適な解決策を見つけるのに何の改善ももたらさないと主張する人もいれば、それがより効果的であることを示す人もいます。文学では一般的にGAが好まれているようですが(ほとんどの場合、人々は必要な結果を得るために何らかの方法でそれを変更します)、ソフトウェアソリューションの大半は逆伝播のみを使用するように見えるのはなぜですか? どちらを使用するかについて、一般的な経験則はありますか?多分それはNNのタイプに依存するか、一般的に他のものよりも優れた最先端のソリューションが存在しますか? 可能であれば、一般的な答えを探しています。つまり、「NNが大きい場合、GAの方が良い」、または「GAは常に優れていますが、計算パフォーマンスの問題があります」などです。

2
学習アルゴリズムの選択方法
いくつかのトレーニングデータに基づいてレコードを2つのカテゴリ(true / false)に分類するプログラムを実装する必要があり、どのアルゴリズム/方法論を検討すべきか疑問に思っていました。人工ニューラルネットワーク、遺伝的アルゴリズム、機械学習、ベイジアン最適化など、多くの選択肢があるようで、どこから始めればよいのかわかりませんでした。したがって、私の質問は次のとおり です。問題に使用する学習アルゴリズムをどのように選択すればよいですか。 これが役立つ場合、ここに私が解決する必要がある問題があります。 トレーニングデータ: トレーニングデータは、次のような多くの行で構成されます。 Precursor1, Precursor2, Boolean (true/false) 実行 には、多くの前駆体が与えられます。 その後、 さまざまなアルゴリズムからアルゴリズムAを選択し(またはアルゴリズムを動的に生成し)、これらの前駆体のあらゆる可能な組み合わせに適用し、放出される「レコード」を収集します。「レコード」は、いくつかのキーと値のペアで構成されています*。 いくつかの素晴らしいアルゴリズムを適用し、これらのレコードを2つのカテゴリ(true / false)に分類します。 電車のデータと同じ形式のテーブルを生成します。 Precursor1, Precursor2, Boolean そして、プログラム全体は、正解/不正解の数に基づいて採点されます。 *:「レコード」は次のようになります(これが理にかなっていることを願っています) Record [1...*] Score -Precursor1 -Key -Precursor2 -Value 可能なキーの数は限られています。レコードにはこれらのキーの異なるサブセットが含まれます(一部のレコードにはkey1、key2、key3 ...があり、他のレコードにはkey3、key4 ...などがあります)。 実際に2つの学習が必要です。1つはステップ1です。前駆体のペアなどを調べて、比較のためにレコードを発行するために適用するアルゴリズムを決定するモジュールが必要です。もう1つは、ステップ2です。レコードのコレクションを分析し、それらを2つのカテゴリ(true / false)に分類するモジュールが必要です。 前もって感謝します!

3
遺伝的アルゴリズムはいつ最適化に適していますか?
遺伝的アルゴリズムは、最適化手法の1つの形式です。多くの場合、関数の最適化には確率的勾配降下法とその導関数が最適な選択ですが、遺伝的アルゴリズムが依然として使用されることもあります。たとえば、NASAのST5宇宙船のアンテナは、遺伝的アルゴリズムを使用して作成されました。 一般的な勾配降下法よりも遺伝的最適化法の方が適しているのはいつですか?

2
遺伝的プログラミングに使用する言語
割り当ての一環として、大気汚染物質レベルの予測を行う遺伝的プログラミングアルゴリズムを作成する必要があります。私には経験がないので、進化したプログラムが書かれるプログラミング言語の命題へのポインタを誰でも私に指し示すことができます。 明確化:遺伝的アルゴリズム自体を書く言語を自分で決めるのではなく(自分で決定できるようになるため)、進化したプログラムをどのプログラミング言語で作成するのかを尋ねています。 私のインストラクターはLispを提案しましたが、私はこの考えが好きではありません---まず、ある種の抽象構文ツリーで作業しなければなりません。次に、ツリー構造で確実にクロスオーバーを行うのは面倒です 私はむしろ、slash / Aのような遺伝的プログラミング専用の何かを使いたいです。SlashAはASTでの作業を必要としません---バイトコード内のプログラムは、すべてのint配列がスラッシュ/ Aプログラムを表すため、必要な任意の方法で変更できるintの配列にすぎません。 追加のコメント: ASTの操作を避けたい! この問題は困難です(株価の予測ほど難しくないかもしれません)。これは、(ほとんどの場合)十分な入力情報がないためです(いくつかの隠されたパラメーターがあります)。平均を返すモデルよりもパフォーマンスの良いモデルを作成するのはやや困難です(平均モデルは35%のMAPEを持っています)。ほとんどのモデルは約25%のMAPEを持ち、最高は20%です。 どれが重要かわからないという前提で、多くの機能を備えたデータセットを管理する言語が欲しいです。(Slash / Aには欠点があります---この言語では、入力機能は順番に読み込まれます---一部の機能がより高い確率で使用されます)。 私はこれをPythonでプログラムできるようにしたいので、Pythonライブラリは素晴らしいでしょう---しかし、C / C ++のバインディングはできます(JavaやMatlabなどはできません)。 私はこれが調査の質問であることを認識しているので、もしそのような質問が早い場合は閉じてください。しかし、それは十分具体的だと感じています。

8
偶数と奇数を区別するためにニューラルネットワークをトレーニングする
質問:数字自体を入力としてのみ使用して、奇数と偶数を区別するようにNNをトレーニングすることは可能ですか? 次のデータセットがあります。 Number Target 1 0 2 1 3 0 4 1 5 0 6 1 ... ... 99 0 100 1 2つの入力ニューロン(変数が1つ、もう1つがバイアスニューロン)、隠れ層の9つのニューロン、非常に単純な遺伝的アルゴリズムを使用して1つの出力ニューロンでNNをトレーニングしました。各エポックで、2組の重み「ファイト" 互いに対して; エラーが最も大きいものが失われ、勝者の修正バージョンに置き換えられます。 このスクリプトは、AND、OR、XOR演算子などの単純な問題を簡単に解決しますが、奇数と偶数を分類しようとすると行き詰まります。今のところ、100のうち53の数字を特定するのが最善で、数時間かかりました。入力を正規化してもしなくても、違いはないようです。 不正行為をしたい場合は、データを前処理して、%2を入力としてNNにフィードすることもできますが、それはしたくありません。NNは、モジュロ演算子を含むすべての関数を近似できる必要があります(信じています)。私は何を間違えていますか?


1
フィッシャーの厳密検定と超幾何分布
私はフィッシャーの正確なテストをよりよく理解したかったので、次のおもちゃの例を考案しました。ここで、fとmは男性と女性に対応し、nとyは次のように「ソーダ消費」に対応します。 > soda_gender f m n 0 5 y 5 0 明らかに、これは大幅な簡略化ですが、コンテキストが邪魔になりたくありませんでした。ここで私は男性がソーダを飲まず、女性がソーダを飲まないと仮定し、統計手順が同じ結論になるかどうかを確認したかっただけです。 Rでフィッシャーの正確検定を実行すると、次の結果が得られます。 > fisher.test(soda_gender) Fisher's Exact Test for Count Data data: soda_gender p-value = 0.007937 alternative hypothesis: true odds ratio is not equal to 1 95 percent confidence interval: 0.0000000 0.4353226 sample estimates: odds ratio 0 ここでは、p値が0.007937であるため、性別とソーダ消費が関連付けられていると結論付けます。 フィッシャーの正確な検定が超幾何分布に関連していることを知っています。だから私はそれを使って同様の結果を得たいと思った。つまり、この問題は次のように表示できます。10個のボールがあり、5個が「男性」、5個が「女性」とラベル付けされており、交換せずに5つのボールをランダムに描画すると、0個の男性ボールが表示されます。 。この観察の可能性は何ですか?この質問に答えるために、次のコマンドを使用しました。 …

2
SVM入力変数のRで遺伝的アルゴリズム変数選択を実行する方法は?
Rでkernlabパッケージを使用して、データを分類するためのSVMを構築しています。 SVMは適切な精度の「予測」を提供するという点でうまく機能していますが、入力変数のリストは私が望むよりも大きく、さまざまな変数の相対的な重要性についてはわかりません。 遺伝的アルゴリズムを実装して、最適に訓練された/最適なSVMを生成する入力変数のサブセットを選択したいと思います。 このGA実装を試行するときに使用するRパッケージを選択する際にいくつかの助けが必要です(そしておそらく簡単な疑似例)。 私はそこにあるほとんどのR GA / Pパッケージ(RGP、genalg、subselect、GALGO)を見てきましたが、フィットネス関数の一部としてksvm関数を渡し、人口プールとしての可変配列...? 正しい方向への助け、考え、または微笑は感謝して受け取られました。 ありがとう 後の編集で以下に追加されたこれを解決するコード # Prediction function to be used for backtesting pred1pd = function(t) { print(t) ##add section to select the best variable set from those available using GA # evaluation function - selects the best indicators based on miminsied training error …

2
2つの遺伝的アルゴリズムの比較
同等に動作するはずの遺伝的アルゴリズムの実装が2つあります。ただし、解決できない技術的な制限により、同じ入力が与えられた場合、それらの出力はまったく同じではありません。 それでも、パフォーマンスに大きな違いはないことを示したいと思います。 異なる初期乱数シードを使用して、2つのアルゴリズムのそれぞれに対して同じ構成で20回実行します。各実行のためにと生成誤差最小 人口の最良の個体の適応度を記録しました。アルゴリズムはエリート保持メカニズムを採用しているため、最高の個人の適合度は単調に減少しています。実行は1000世代で構成されるため、実行ごとに1000個の値があります。計算に非常に費用がかかるため、これ以上データを取得できません。 どのテストを採用すべきですか?簡単な方法は、おそらく最終世代のエラーのみを比較することでしょう(ここでも、ここでどのテストを使用しますか?)しかし、一般的に収束動作を比較することも考えられます。

2
特徴の選択と分類において、3つのデータセット全体で2つのアルゴリズムを統計的に比較する方法は?
問題の背景:私の研究の一環として、データセット(がん患者の遺伝子発現データ)から特徴のセットを選択できる2つのアルゴリズムを作成しました。次に、これらの機能をテストして、見えないサンプルをどれだけ癌または非癌として分類できるかを確認します。アルゴリズムの実行ごとに、ソリューション(一連の機能)が生成され、Z個の非表示サンプルでテストされます。ソリューションのパーセンテージ精度は、次のように計算されます(correct classifications / Z) * 100。 アルゴリズムは2つあります:アルゴリズムXとアルゴリズムY データセットA、データセットB、データセットCの3つの別々の(異なる癌)データセットがあります。これらのデータセットは互いに非常に異なります。サンプルごとに同じ数のサンプルや同じ数の測定(機能)はありません。 各データセットで各アルゴリズムを10回実行しました。したがって、アルゴリズムXには、データセットAから10件、データセットBから10件、データセットCから10件の結果があります。全体として、アルゴリズムXには30件の結果があります。 私の問題: 3つすべてのデータセットにわたるアルゴリズムXの合計パフォーマンスが、アルゴリズムYの合計パフォーマンスと統計的に有意に異なるかどうかを確認したいと思います。 各データセットのアルゴリズムXの結果を単一の結果セットに結合することは可能ですか?このようにして、アルゴリズムXの30の標準化された結果とアルゴリズムYの30の標準化された結果を取得します。t検定を使用して、2つの方法の間に有意差があるかどうかを確認できます。 編集-これらは進化的アルゴリズムであるため、実行するたびに少し異なるソリューションを返します。ただし、存在する場合にサンプルを癌または非癌のいずれかに強く分類できるサンプルの機能がある場合、アルゴリズムが実行されるたびにその機能が選択されます。 私が得る少し以下の理由により10回ごとに異なる結果を: これらのアルゴリズムはランダムにシードされます。 私は繰り返しランダムサブサンプリング検証を使用します(10回の繰り返し)。 私が使用しているデータセット(DNAマイクロアレイとプロテオミクス)は、アルゴリズムが行き詰まる可能性のある多くの局所最適値があるという意味で操作するのが非常に困難です。 検出したい機能間およびサブセット間の相互作用がたくさんあります。 私は50の染色体を訓練し、それらは特定の長さに制限されていません。それらは自由に成長したり収縮したりします(ただし、選択圧によって長さが短くなります)。これはまた、最終結果にいくつかのバリエーションをもたらします。 そうは言っても、アルゴリズムはほとんど常に機能の特定のサブセットを選択します! これが私の結果のサンプルです(ここでは、アルゴリズムごとに10のうち4つだけが示されています)。 データセット/実行アルゴリズムXアルゴリズムY A 1 90.91 90.91 A 2 90.91 95.45 A 3 90.91 90.91 A 4 90.91 90.91 B 1 100 100 B 2 100 100 B 3 95.65 100 …

1
ニューロエボリューションは、ニューラルネットワークや遺伝的アルゴリズムの基本的なアプリケーションよりも優れています。
遺伝的アルゴリズムとニューラルネットワークを一般的な神経進化のフレームワークに組み合わせることに最近関心が集まっています。基本的な考え方は、あなたの遺伝的アルゴリズムは多くのニューラルネットワークのパラメーターを進化させ、それが次に目の前のタスクを解くために使われるということです。一種の遺伝的プログラミングですが、コードスニペットを進化させて何らかのタスクを実行する代わりに、ニューラルネットワークを進化させています。 ニューラルネットワークや遺伝的アルゴリズムを単独で使用する代わりに、この組み合わせアプローチをいつ使用すればよいですか?どのような種類の問題について、組み合わせたアプローチは個々のアプローチよりも良い結果をもたらしましたか?組み合わせたアプローチが「最良の」アプローチとはどのような種類の問題ですか?

3
Rでの機能構築
Rに機能構築(既存の予測子から候補予測子を導出する)のためのアルゴリズム(おそらく遺伝的アルゴリズム)があるかどうか疑問に思っていますか?私は、既存の変数(sin、cos、atanなど)の高次のべき、相互作用、比率、線形結合、および非線形関数をテストするルーチンを考えています。 これは、フィルターまたはラッパールーチンである可能性があります(つまり、学習アルゴリズムを使用したり、機能の適合度を定義するために使用したりしません)。 私の目標は、既存の予測子の潜在的に意味のある比率などを「発見」することです。 ありがとう!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.