問題タブ [feature-engineering]

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.

0 投票する
1 に答える
132 参照

python - Python - 分類の最小分散のビン サイズ

次のように、機能「年齢」を連続変数から、バイナリ分類の年齢範囲のカテゴリ変数に変更したいと思います。

ただし、データを最も効率的に分類できるように、最適な方法で分割したいと考えています。つまり、年齢範囲内のクラスの分散は最小化されますが、オーバーフィッティングは発生しません。

このようにデータを分割するときの分散を最小限に抑えることができるメソッドを持つパッケージはありますか、それとも自分で作成する必要がありますか?

0 投票する
2 に答える
196 参照

machine-learning - ニューラル ネットワーク機能の組み合わせ論

これらのパラメーターがネットワークの予測に影響を与えないように、十分な数の隠れ層、層ごとの隠れユニット、および反復を備えたニューラル ネットワークがあるとします。

特徴 x1、x2、...、xn が与えられた場合、この特徴のサブセット (x1 から xn) が与えられた場合、潜在的な特徴の範囲が冗長であるかどうかを (証明するために) 可能ですか? つまり、これらの特徴 (x1 から xn) が与えられると、ニューラル ネットワークは次のような他の特徴を識別することができます。

  • 違いまたは追加 (x1-x49、または x17+xn)?
  • 積と比率 (x1*x1 または x47/xn)
  • 高次多項式 (または ∏(x1 から xn) のような数列の積)
  • 元の特徴に基づく三角関数 (sin(x1*xn) + x17)
  • 対数関数 (ln(x2*x4)/x6)

ニューラル ネットワークを使用して、ネットワークが正確に予測するために高次関数または別の関数を追加する必要がある状況があるかどうか疑問に思っているのは、この一連の調査です。

一般に、適切な数の機能が与えられた場合、ネットワークは任意のグラフをモデル化できますか? また、そうでない場合、ニューラル ネットワークが予測できない機能ドメインはどれですか?

さらに、このトピックを参照していると誰かが指摘できる研究はありますか?

ありがとう!

0 投票する
0 に答える
770 参照

apache-spark - PySpark での遅い機能エンジニアリング

文字列のインデックス作成、ワンホットエンコーディング、分位点の離散化などの手順を含む pyspark を使用してデータを準備しようとしています。私のデータ フレームには、100 万行の非常に多くの列 (500 間隔列、250 カテゴリおよび 250 バイナリを含む 1,000 列) があります。

私の観察によると、一部のデータ変換は他のものよりもはるかに遅くなります。以下の要約にあるように、約 3 時間かかるステップもあれば、数分しかかからないステップもあります

ステップ (実行時間):

  • すべての間隔変数の Log10 変換 (00:02:22)
  • データ フレームのランダム データ分割 (00:02:48)
  • 分位点の離散化と区間のベクトルの組み立て ( 02:31:37 )
  • カテゴリカルの 1 つのホット エンコーディングとベクトル アセンブル ( 03:13:51 )
  • バイナリの文字列インデックス作成とベクトル アセンブル ( 03:17:34 )

最悪のパフォーマンスのステップは、文字列のインデックス付け、1 つのホット エンコーディング、分位点の離散化、またはベクトル アセンブラーのようです。

これらのステップのパフォーマンスを大幅に向上させるために、スパーク構成またはコードで何を確認または調整する必要があるか教えてください。

上記の機能エンジニアリング ステップでは、Pyspark.ml.feature の QuantileDiscretizer、VectorAssembler、OneHotEncoder、StringIndexer メソッドを使用しました。データが完全にクラスター メモリにアップロードされたことを確認します (persist(StorageLevel.MEMORY_ONLY))。

私のクラスターには 7 つのノード (それぞれ 4 つのコアと 16GB の RAM) が含まれています。Spark のバージョンは 2.2 です。ピスパークを使用。

Spark 構成が適用されました:

  • spark.serializer = org.apache.spark.serializer.KryoSerializer
  • spark.kryo.unsafe = true
  • spark.rdd.compress = false
  • マスター = 糸
  • デプロイモード = クラスター
  • spark.driver.cores=4
  • ドライバーメモリ = 4G
  • num-executor = 6
  • エグゼキュータメモリ = 10G
  • エグゼキュータ コア = 4
  • spark.yarn.maxAppAttempts=1
  • spark.sql.cbo.enabled=true
  • spark.sql.constraintPropagation.enabled=false