百面の機械学習-1。機能エンジニアリング

前書き

  参照:100面の機械学習pdf:リンク:https
://pan.baidu.com/s/1QHWWEXxrOIOQgTycz3YX6Q抽出コード:y01g

1.機能の正規化

説明
  データフィーチャ間の次元の影響を排除するには、フィーチャを正規化して、さまざまなインジケーターを比較できるようにし、インジケーターが同じ数値の大きさで分析しやすいようにする必要があります。
方法:

  1. 線形関数の正規化(最小-最大)、元のデータを[0,1]の範囲にマッピングします

    from sklearn.preprocessing import MinMaxScaler
    
  2. ゼロ平均正規化(標準化)、元のデータを平均= 0およびstd = 1の分布にマッピング

    from sklearn.preprocessing import StandardScaler
    

なぜ数値的特徴を正規化する必要があるのですか?
  確率的勾配降下法を例にとると、学習率が同じである場合、正規化されたデータは、勾配降下法によって最適な解をより早く見つけることが容易になります。
ここに画像の説明を挿入します
  実際のアプリケーションでは、線形回帰、ロジスティック回帰、サポートベクターマシン、ニューラルネットワーク、その他のモデルなど、勾配降下アルゴリズムによって解決されるモデルを正規化する必要があります。ただし、情報ゲイン、情報ゲイン比、ジニ係数は、特徴が正規化されているかどうかとは関係がないため、決定木モデルには適用できません。

2つのカテゴリの特徴

記述的
  カテゴリ機能とは、通常は文字列の形式で、限られたオプション内で値を取得する機能を指します。文字列の形式で入力を直接処理できる決定木などのいくつかのモデルを除いて、ロジスティック回帰やサポートベクターマシンなどのモデルは、カテゴリの特徴を数値の特徴に直接変換する必要があります。
データを前処理するときにカテゴリ機能を処理するにはどうすればよいですか?

  1. シリアル番号のコーディング
    は通常、カテゴリ間にサイズの関係があるデータを処理し、サイズの関係に従ってカテゴリ機能に数値IDを割り当てます。

    from sklearn.preprocessing import OrdinalEncoder
    import numpy as np
    
    label = OrdinalEncoder()
    list = ['中国', '美国', '法国', '德国']
    list = np.array(list).reshape(-1,1)
    labels = label.fit_transform(list)
    print(labels)
    
    [[0.]
     [3.]
     [2.]
     [1.]]
    

    データ自体にサイズの関係がない場合、このコードを使用すると、存在しないシーケンスの関係がこの機能に追加され、ノイズが増加します

  2. ワンホットエンコーディング-ワンホットエンコーディング
    は通常、カテゴリ間にサイズの関係がない機能を処理するために使用されます。

    from sklearn.preprocessing import LabelEncoder,OneHotEncoder
    import numpy as np
    
    label = LabelEncoder()
    labels = label.fit_transform(['中国', '美国', '法国', '德国'])
    print(labels)
    
    labels = np.array(labels).reshape(len(labels), 1)  # 先将X组织成(sample,feature)的格式
    # list = ['中国', '美国', '法国', '德国']
    # list = np.array(list).reshape(-1,1)
    onehot = OneHotEncoder()
    onehot_label = onehot.fit_transform(labels)
    print(onehot_label.toarray())  # 这里一定要进行toarray(),转换成array格式
    
    [0 3 2 1]
    [[1. 0. 0. 0.]
     [0. 0. 0. 1.]
     [0. 0. 1. 0.]
     [0. 1. 0. 0.]]
    

    多くの種類の値がある場合は、次の問題に注意してください(onehotエンコーディングに変換すると、次元が非常に高くなります):
    1。スパースベクトルを使用してスペースを節約します
    2.特徴選択と協力して次元を削減する必要があります。一方では、次元削減モデルでは、次元の増加はパラメーターの数の増加につながり、過剰適合の問題を引き起こす可能性があります。他方では、一部の次元のみが分類に有効であり、予測。

  3. バイナリエンコーディング-バイナリエンコーディングは、
    最初にシリアル番号エンコーディングを使用して各カテゴリにカテゴリIDを割り当て、次にカテゴリIDに対応するバイナリコードを結果として使用します。バイナリエンコーディングは、基本的にバイナリを使用してIDをハッシュし、最終的に0/1の特徴ベクトルを取得します。これは、ワンホットエンコーディングよりも次元が少なく、スペースを節約します。

3.高次元の結合された特徴の処理

結合された機能とは何ですか?
  複雑な関係の適合能力を向上させるために、1次の離散機能は、多くの場合、機能エンジニアリングでペアで結合され、高次の結合された機能を形成します。
高次元の複合機能をどのように処理しますか?

次元削減方法を使用して、2つの高次元の特徴の組み合わせ後に学習する必要のあるパラメーターを削減します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

4つの組み合わせ特性

  複数の高次元の特徴を単純にペアで組み合わせると、パラメーターが多すぎて過剰適合の問題が発生し、すべての特徴の組み合わせが意味を持つわけではありません。したがって、どの機能を組み合わせる必要があるかを見つけるための効果的な方法が必要です。

1.組み合わせた機能を効果的に見つける方法は?

  決定木の特徴組み合わせ検索法に基づき、ルートノードからリーフノードまでの各パスを特徴組み合わせ法と見なすことができます。
ここに画像の説明を挿入します

5、テキスト表現タイプ

  テキストは非構造化データです

1.どのようなテキスト表現モデルがありますか?

ここに画像の説明を挿入します

2.モデルの長所と短所は何ですか?

言葉の袋モデル:

意味:各記事を単語の袋として扱い、各単語が表示される順序を無視します。(記事を単語ごとに分け、各記事は長いベクトルとして表され、ベクトルの各次元は単語を表します)
ここに画像の説明を挿入します

N-gramモデル:n個の連続する単語で構成されるフレーズを単一の特徴としてベクトル表現に入れます

トピックモデル:テキストライブラリから代表的なトピックを見つけ、各記事の本文の分布を計算します。

単語の埋め込み:単語をベクトル化し、各単語を低次元空間の密なベクトルにマッピングします

深層学習モデル:深層学習モデルの各隠れ層は、さまざまな抽象的なレベルの特性に対応していると見なすことができます。
ここに画像の説明を挿入します

6、Word2Vec

この部分については説明しません

七、不十分な画像データの処理方法

  画像分類モデルをトレーニングする場合、トレーニングサンプルが少ない場合はどうすればよいですか?
ここに画像の説明を挿入します

1.画像分類タスクでは、トレーニングデータが不十分な場合にどのような問題が発生しますか?

  過剰適合、弱いモデルの一般化能力

2.不十分なデータによって引き起こされる問題をどのように軽減しますか?

1.モデルベースの方法は、主に過剰適合のリスクを低減するための対策を採用しています

モデルの単純化、通常の用語の追加、アンサンブル学習、ドロップアウトハイパーパラメーターを含む

2.データベースの方法は、主にデータ拡張用です。特定の情報を維持することを前提として、元のデータを適切に変換して、データセットを拡張する効果を実現します。
ここに画像の説明を挿入します

3.アップサンプリングと生成的敵対的ネットワーク
ここに画像の説明を挿入します

4.転移学習
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_46649052/article/details/114282003