1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

コンペで勉強になったことまとめ(2023年前期)

Posted at

本記事の目的

本記事は、コンペに参加する中で、勉強になった項目の個人的備忘録です。
随時追加していく予定です。

勉強になった点

ColumTransformer

公式リファレンス
https://scikit-learn.org/stable/modules/generated/sklearn.compose.ColumnTransformer.html#sklearn.compose.ColumnTransformer

公式リファレンスでは、ColumnTransfomerについて、

この推定器は、入力の異なる列または列のサブセットを個別に変換し、それぞれの変換器によって生成された特徴量を連結して単一の特徴空間を形成することができます。これは,複数の特徴抽出機構や変換を1つの変換器にまとめることができるため,異種データや列データに対して有用である.

と書かれています。(DeepL訳)

  • メリット

    • カラムごとに異なる処理ができる
    • ColumnTransfomerでは、オリジナルなtransformerも、TargetEncodingやOneHotEncodingなどの単一のtransformerの両方を使用することができる
    • パイプライン化できるので、処理が単純になる
  • 使い方

    • インポート
    from sklearn.compose import ColumnTransformer
    
    • 処理内容と列を指定
    ct = ColumnTransformer(
        [
            ("scaling", StandardScaler(), ['numerical_column1', 'numerical_column2']),
            ("onehot", OneHotEncoder(), ['categorical_column1', 'categorical_column2'])
        ],
    )
    
    • 適用する
    X_transformed = ct.fit_transform(X)
    
    • 以下のようにpipline化も可能
    pipe = Pipeline(
        steps=[
            ("preprocess", PreProcessTransformer()),
            ("ct", ct),
        ]
    )
    
    from sklearn.base import BaseEstimator, TransformerMixin
    
    class PreProcessTransformer(TransformerMixin, BaseEstimator):
        def fit(self, X, y=None):
            # ここでXから必要な情報を学習します(例: 各列の平均値を計算する等)
            return self
    
        def transform(self, X):
            # ここでXを変換します(例: スケーリング、欠損値の補完等)
            return X
    

TabNet (https://arxiv.org/pdf/1908.07442.pdf)

  • メリット

    • TabNetでは内部的に重要な特徴を選択し、無関係な特徴を無視できる。
    • TabNetはインスタンスごとの特徴の重要度を提供し、モデルの解釈を容易になる。
    • 他の多くのディープラーニングモデルと同様に、TabNetはデータ内の非線形関係を効果的に捉えることができます。
    • TabNetはスパースな特徴セットでも良好な性能を発揮します。
  • デメリット

    • 大規模なデータセットの場合、TabNetのトレーニング時間は長くなる可能性があります。
    • TabNetの性能はハイパーパラメータの選択に大きく依存します。最適なパラメータを見つけるには多くの実験が必要です。
    • ディープラーニングモデルとして、TabNetは十分なメモリと計算リソースを必要とします。
  • 使用方法

    • インポート
    pip install pytorch-tabnet
    
    • 学習・評価
    # モデルのインスタンスを作成
    clf = TabNetClassifier()
    
    # モデルをトレーニング
    clf.fit(X_train, y_train)
    
    # テストデータで評価
    preds = clf.predict(X_test)
    
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?