tksnnx / signate_scup2023

https://signate.jp/competitions/1051
0 stars 0 forks source link

思いついたことリスト #1

Open tksnnx opened 1 year ago

tksnnx commented 1 year ago

思いついたことを書いていく

tksnnx commented 1 year ago

とりあえずカテゴリカル特徴量へのターゲットエンコーディング

tksnnx commented 1 year ago
tksnnx commented 1 year ago

create_feature get_featureで型とか制限できるようにする

tksnnx commented 1 year ago

モデルごとの特徴量選別

tksnnx commented 1 year ago

kfold target encoding

tksnnx commented 1 year ago

なんやかんやいって当時2位の肩が提供していただいたスクリプトとデータの修正が一番スコアが高い状態です 他に試したこととしては,TargetEncoderのほかにも一部の特徴量に対してGLMMEncoderを適用させました.また,ユニーク値の数が多い質的変数に関しては次元削減(scikit-learnの手法諸々試した結果因子分析が一番よさげ)を実行したものでlightGBMのハイパーパラメータチューニングを行ったモデルが43.87くらいのスコアでした. 欠損値の補完ですが,他の特徴量(2変数の組み合わせまでクロス集計表で確認)した感じ,これといった傾向はつかめませんでした. 以下,regionに対しての次元削減手法,主成分分析・因子分析の比較になります.独立成分分析やSVDなども主成分分析と似たような傾向になりました. 初心者ながら,個人的にここまで取り組んだ結果,モデルの組み方というよりやはり特徴量エンジニアリングの部分が大事になってきそうな印象ですが,皆さん的にはどのように見てますでしょうか

tksnnx commented 1 year ago

objective=mapeで学習 前処理 size, manufacturerの表記ゆれを修正 yearが3000以上のものは2000年代に変更 特徴量 もともとある特徴量全て odometer / year TargetEncoding 使っていないが実装済み 集約特徴量 CountEncoding 実装方法 sklearnのbaseクラスとColumnTransformerを使って前処理を行っています。特徴量生成の見通しがよくなるのでおすすめです

tksnnx commented 1 year ago

https://static.signate.jp/competitions/162/summaries/1st_place_solution.pdf 緯度経度の近くのやつの平均

重要数値特徴量のターゲットエンコーディング

tksnnx commented 1 year ago

異常値排除 clipping

tksnnx commented 1 year ago

target encodingで指定する価格を幅があるものにしない。例えばfuelだったら有名所のtoyotaとかだけで平均とって代入。そうすると高級車の価格の偏りを受けなくなる

tksnnx commented 1 year ago

https://www.kaggle.com/competitions/used-car-price-forecasting/discussion/180144  ・LigthGBM(objective:regression) 3  ・LightGBM(objective:xentropy) 3  ・CatBoost  ・XGBoost  ・NN   keras NNの作り方

tksnnx commented 1 year ago

https://www.kaggle.com/competitions/used-car-price-forecasting/discussion/180283

1.odometerのnull埋め  ・descriptionにmilesの記載があるものはdescriptionから抽出した.   kmilesとごっちゃになっていて,100万mile以上走ってる車がゴロゴロ・・・   (100万mile以上は1/1000を掛けました)  ・yearから平均的な走行距離を算出 2.モデル名の名寄せ?集約?  基本的にはmodelの先頭単語をmodel名としたが,表記ゆれ等は各メーカーごとに対処した.  (深夜にモデル名"pirus"とか見つけて発狂してました.)  台数の少ないメーカーはメーカー名をそのままモデル名とした. 3.モデル名のnull埋め  descriptionに,各メーカーごとのモデル名のユニークなリストと合致する文字列があれば,それをモデル名とした. 4.その他基本的なpreprocessはbaselineと一緒

■feature engineering 1.null count  各行のnullの数 2.モデルごとの基準価格,基準年度,基準走行距離を算出  kdeにより各モデルごとに価格の密度を算出して,最も密度の高い値を基準価格とした.  年度や走行距離も同様の処理をした. 3.price_ratio:基準価格と実際の価格との比(説明変数には入れない)  極端に高い,安いがわかりやすくなる・・・かも.  この変数はこのあとtarget encodingのtargetにする. 4.モデルごとの基準年数と,実際の年数の差 5.モデルごとの基準走行距離と,実際の走行距離との差 6.yearごとの平均走行距離と実際の走行距離との差 7.vin -> has_vinの[0, 1]とした. 8.drive -> is_4wdの[0, 1]とした. 9.transmission -> is_automaticの[0,1]とした 10.cylinder:baselineのまま 11.位置情報から出品数の密度を推定  カーネル密度推定した 12.位置情報から価格比を推定  位置情報を説明変数としてprice_ratioをカーネル回帰で推定 13.lat*lngのカウントエンコーディング 14.ターゲットエンコーディング(価格の平均値)  manufacturer, size, type, fuelの4変数に対して価格を対象にターゲットエンコーディングした 15.ターゲットエンコーディング(価格比の平均値)  condition, title_status, state, region, paint_colorの  5変数に対して価格比(price_ratio)を対象にターゲットエンコーディングした 16.ターゲットエンコーディング(価格の標準偏差)  manufacturer, condition, fuel, title_status, transmission, size, type, state, model の  9変数に対して価格を対象に標準偏差をとるようなターゲットエンコーディングした

tksnnx commented 1 year ago

kfold target encodig

tksnnx commented 1 year ago

ベースラインノートブックのチューニング

tksnnx commented 1 year ago

stateやregionなどにかんして 他の特徴量が全く一致するものを比較して、stateごとの価格係数を算出、priceを割って参考価格を算出、これをtarget encや予測してそこに係数をかける