機械学習 - -feature世代とエンジニアリングは、特徴選択が特徴

  1. 概要:レッツは、祭りは、エンジニアリング機械学習のコア機能であると言います。その後、我々は、エンジニアリング特性の基礎を学習値の処理方法および技術の一部をコードするカテゴリーデータが欠落しています。しかし、コンテンツの一部は、このような場合のように、あまりにも多くの人が私たちの元のデータを備え、多くの例の実用的な仕事に対処するには十分ではない、光の前になります、私たちは私たちのトレーニングの特徴として、これらの機能を選択すればよいですか?あまりにも私たちの機能や少し、既存の新機能のいくつかを再作成を使用することができますが、より密接にそれの私達の目的の機能に関連していますか?これらは、当社の機能のシーンは、多くの場合、いくつかの一般的に使用される技術は、各機械学習やデータ解析エンジニア必見のマスターを行う必要エンジニアリング、で遭遇しています。特徴生成および特徴選択:テクノロジーは、それが頻繁に呼び出され、前述しました。ここでは、それのこれら二つの技術的なポイントについて話してきます
  2. 世代の特徴この技術的なポイントのために、実際には、何のトリックは、創造性のタッチで私たちのデータの重要性を深く理解ではありません。これがために行われ、ハハ、非常に無知力ではないでしょうか?母はもちろんありませんが、これは、特定のランダム性を持つ統合モデルの欠如、ではありません。しかし、合計して、我々は時間基準の適用を容易にするため、コモンモードをまとめることができます。2.1インタラクション。実際には、これは、そうでなければ、白のみ、あるいはオリジナルの良いを取得することはできません、有意義である必要があります覚えておいて、クロスの意味に、我々はいくつかの特徴が「面白い」新機能を形成するために一緒にスプライシング直接結合することができます同等ですデータは、あなたは負荷力と負荷力に、私たちは目に見えない中で力にロードする必要がありません、めちゃくちゃにされました。だから、これはどのような意義を持っているのでしょうか?まず、それが処理する我々のデータを容易にするため、カラム内に複数の列をインストールします。第二に、いくつかの特定のデータで、そのような相互作用は、データの性質を反映する方が可能です。具体的に動作し、我々は、単純なコードで表示するために、私は自分のコードの一部の唯一の傍受、デフォルトのデータは、ので、私のコードの変数やデータハをもつれていないロードされていることに注意している方法を、主にプロセスやアイデアを見て
    相互作用= data_raw [ " カテゴリ" ] + " _ " + data_raw [ " " ] 
    baseline_data = baseline_data.assign(category_country = label_encoder.fit_transform(相互作用))

    上記のコードでは、我々は最初の相互作用部、第二の文は、ラベルエンコーディングデータの相互作用の後に話すと簡単な内部の我々のデータセットに追加されたものです。上記の新機能2.2の数値変換を形成するために一緒に生カテゴリのデータ、および国に接続されています。それが何を意味し、列のいくつかの数値データのために、彼らのデータの分布は非常に不均一である、またはその値が我々のデータを訓練するため、時には適切ではない、大きすぎるか小さすぎること、勾配が消失することができますまたは勾配の場合に爆発します。Shajiaoが爆発勾配や勾配を消失詳細、後で彼はゆっくりと内容を説明しました。これだけは非常に面倒なことのようであることを知っておく必要がありますされている、それはトレーニングモデルラインではないので、高速なハードウェアをリードします。そして、どのような方法でそれを解決?ここでは、ログまたはSQRTなどの方法で、たとえば、主にいくつかの一般的な数学的な方法で解決。あなたはどのようにシンプルな表示するには、次のコードを使用することができます

    np.sqrt(baseline_data [ ' 目標' ])
    np.log(baseline_data [ ' 目標' ])

    私たちは、ここでは主にAPIのようなnumpyの処理のために内部に、非常に単純な、簡単な、が提供する、上から見ることができ、よく、ここではアップしています。ちなみに、すべてのツリーベースのモデルは、スケール不変なので、それは、ツリーベースのモデルは、データの分布の大きさを気にしていないで、ツリーベースのモデルで使用される卵を変換なしの数値がでない、事を忘れて。2.3ローリング。これは、転がりこのため、カードの小さなウィンドウの上(シリーズ)上の固定サイズで私たちのデータに事実と同等であり、そして、それは(前の二つの方法に比べて)、最初にすべての私たちが最初のローリングの概念を理解しなければならないことがより進んでいます例えば、いくつかの簡単な計算をカバーするデータウィンドウ、:カウント、平均、合計など。あなたはまだ分からないと感じた場合、私はそれを置く公式リンクはここに掲載、我々はすべての多くの例があるた、行くと参照してください。https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas #pandas.Series.rolling .Series.rolling.html  。だから私はあなたの参照のハための簡単な少し例を記述します

    打ち上げ= pd.Series(data_raw.index、data_raw.launched、名前= " count_7_days " ).sort_index()
    count_7_days = launched.rolling(' 7D ' ).count()
    count_7_days.index = launched.values 
    count_7_days
    = count_7_days.reindex (data_raw.index)

    私は簡単にコード上記の意味SIHAを説明させて、最初の文は二文が減少する前に話すように、最後の7日間の計算回数、第三及び第四の文章インデックスデータをローリングされ、インデックスのシリーズとして、この時間を作ることですオーダー、再合流元のデータセットへの部屋。そして、それを使用するためにどのような状況の下で、一般的にこの方法を転がし?一般的に、あなたは、時間の結果に影響を与えるのか、データの前後に、私たちはケースを考えることができ、日時データを持っているが、これは必ずしもない場合、または必要性はいくつかの創造性を持っています。例えば、上記の例では、特定のAPPは、アプリケーションシナリオをダウンロードしているかどうかを判断するために、総アップロードAPPの過去7日間の数を数えることです。一般的には、あまりにも多くのAPPが最近アップロード、ダウンロード中の確率が低く、彼らはまだいくつかは、提携しているそう。私は、新しい機能や真実の穀物を生成するようにします。2.4時間デルタ。このことから、我々は名前を知っている可能性があり、これはこれは私が右のそれを推測し、確かに時間との関係です。時間デルタは、時にはそれは、必ずしも必要ではなく、実際のデータの特性に応じて決定されるべきである、とも多少類似圧延以上により、決定する独自の技術者によれば、特定のランダムです。説明の詳細を簡単にするために、私はまた、直接、その後の例にゆっくりと説明しています

    デフtime_since_last_project_same_category(シリーズ):
         リターン。series.diff()dt.total_seconds()/ 3600 
    DF = data_raw [[ ' カテゴリが'' 打ち上げ'。]] sort_values(' 打ち上げ' 
    group_category = df.groupby(' カテゴリ' 
    timedeltas = group_category.transform(time_since_last_project_same_category)
    timedeltas = timedeltas.fillna(timedeltas.mean())。REINDEX(baseline_data.index)

    隣接する2行の前で、以前に作成したグループのDFへカテゴリの条件に応じて、時間datatimeの数との間の計算された差であり、データフレームの時間を開始したソートインデックスを作成する第三の線によれば、第4行隣接するデータ間の時間デルタを計算することである、とシリーズを返し五の群は、6行目は、ヌルデータで充填され、元のデータ・モードでは、元のデータに付加されたリオーダー指標を容易にします。これは、プロセスを終了します。上記のシナリオは、アプリのアップロード時間差、実際に私たちのAPPをダウンロードするかどうかに影響要因を隣接同じカテゴリに計算されます。これが私たちの創造性の一つであるので、刻々と変化する中、実際の状況は、実際の状況ではなく、負荷力と負荷力に基づいている必要があり、実際のビジネスニーズ、または単に反対に基づいている必要があります。実際には、特徴生成については、さまざまな方法がまだあるまあ、など、剰余を2つの列の間の差を計算するなど、いくつかのものは、ない均一な標準が存在しない、そして唯一のショートカットキーがあり、我々はそれぞれの私たちを理解するようになりました列と実際のビジネスセンスのデータセットは、そうでない場合は、高速なハードウェアの世代があなたを救うことはありません。ここでは、この章機能選択バーの最後のセクションに入力します。

  3. 特徴選択我々は今、不足している場合は値、カテゴリデータ処理、特徴生成は、この複雑なステップを完了し、そして我々は、特徴選択である機能工学の最後の段階に来ています。我々は最終的に我々は最終的にデータが我々のモデル、良い選択データを訓練するために何を選択することを意味するよると、モデル、効率と精度の範囲が優れている、または当社の以前の努力が破壊されることがあります。特徴選択について私は個人的には個人的な経験と訓練として最高の機能のサンプルを選択するための選択の多くの技術の組み合わせだと思います。個人的な経験、データを理解するために、エンジニア自身、との関係を見ると、対象とする一部の機能は半分のダイムではない、我々は確かに直接、価格は何の関係もありませんでした確認するために、このような当社のモバイル機器や携帯電話番号など、これらの機能を除外する確かにデバイス機能の電話番号を削除し、一部の機能は、見て、ターゲットを参照するには強い相関関係があるように携帯電話の携帯電話のメモリサイズや価格などの強力な関係を持って、我々は確かにメモリ機能を選択する必要がありますので、 。個人的な経験だけでなく、どのようによりそれの曖昧な機能の多くを行うには?私が先に言ったと同じように、あなたはまた、から選択する多くの技術を使用することができます。ここでは、一般的に使用される2つの特徴選択技術を紹介します。3.1 F-分類方法。これは、各協会やターゲットのための別の列を計算し、その後、fは、当社独自の値であり、F、の最も関連する列を選択することです。我々は良いsklearnは、次のコードから車輪を、支援してきました作られたので、我々は、それほど深く知っておく必要があり、特定の実装の詳細は、我々はそれの魅力だと感じに来て
    sklearn.feature_selectionのインポートSelectKBest、f_classif 
    セレクタ = SelectKBest(score_func = f_classif、K = 5 
    列車、有効、テスト = get_data_splits(baseline_data、0.1 
    feature_cols = train.columns.drop(" 結果" 
    X_new = selector.fit_transform(電車[feature_cols]、電車[ " 結果" ])

    我々は保持機能にバック#get
    = pd.DataFrame(selector.inverse_transform(X_new)、インデックス= train.index、列= feature_cols)機能を
    値がすべて0であること列を#drop
    feature_cols_final = features.columns [features.var ()!= 0]
    features_final =]を[feature_cols_finalています

    我々は、まず、このモジュールsklearn.feature_selectionからSelectKBestと二つのサブモジュールf_classifを導入し、上記のコードから確認することができ、第二のステップは、このセレクタは、パラメータKに我々の最終的なリターンを介してどのように多くの機能、オブジェクトのセレクタのインスタンスを作成することですそして、最後の変換のセレクタであり、Kに、彼は自動的に取得されますし、彼に渡されたパラメータ、および戻り値などの機能とターゲットが特徴;制御、セレクタは、最終的にも、この機能f_classifによって制御されている機能を選択しますnumpyの配列は、データフレームのフォーマットに戻ります。この方法でのみ、各機能の線形依存し、ターゲットを計算し、使い捨ての相関計算のためのすべての機能が含まれていません。3.2 L1回帰。L1回帰は、すべての機能を直接使い捨てカラムの計算および目標に関連付けることができる含みます。値が大きいほど、相関関係が強く。それは、それが自動的にあるL1の結果に基づいて、当社の機能をどのように役立つか多くの機能最後のリターンの開発を必要としません。しかし、その速度ははるかに遅い、上記の方法のK-classifよりますが、利益は、一般的に、より良いK-classifより実行L1回帰の結果であり、必ずしも必要ではないが、オーストラリアは、ほとんどが唯一これが事実であると言うことができます。

    sklearn.linear_model インポートロジスティック回帰
     から sklearn.feature_selectionのインポートSelectFromModelの
    列車、有効、テスト = get_data_splits(baseline_data、0.1 
    X、Y =列車[train.columns.drop(" 結果")]、列車[ " 結果" ] 
    logistic_model =ロジスティック回帰(C = 1、ペナルティ= " L1 "、random_state = 7 ).fit(X、Y)
    セレクタ = SelectFromModel(logistic_model、prefit = TRUE)
    X_new = selector.transform(X)
    機能= pd.DataFrame(selector.inverse_transform(X_new)、インデックス= train.index、列= feature_cols)
    feature_cols_final = features.columns [features.var()!= 0]

    概要:上記の一般的なエンジニアリング機能と特徴生成の特徴選択の一般的な方法であり、私たちはさまざまな方法で、上記の話では、1つまたは実際の状況に応じて実際の状況の特定の選択、ダイ読書はなりません。一般的な特徴生成は相互作用、数値の生成、圧延時間デルタ4つの方法です。特徴選択は、使用される技術は、いくつかの方法でF-classif及びL1回帰であるが一般的です。

おすすめ

転載: www.cnblogs.com/tangxiaobo199181/p/12210734.html