機械学習

やっとモデル完成!&結果発表【MLC#16】

こんにちは、チズチズです!

今回も前の続きをやります。

前回の記事

前までは、前処理等行っていましたがこれからはモデル作りをしていきます。

まずは多項式で特徴をまとめてからロジスティック回帰で分類させます。

多項式回帰

参照

多項式回帰は前にやったので説明等は簡単にします。

線形回帰では、直線で予測しますが多項式回帰では曲線等(二次曲線、三次…)

まずは使うデータを入れておきます。

そっから欠損値を処理です。

sklearnのImputerで欠損値の処理ができます。

ここではmedianを選択しているので平均が欠損値に代入されます。

欠損値の処理が完了したら多項式のモデルを定義します。

ここでは3次にします。

あまり高い次元になると… 過学習のような問題が起きるそうです。

fit_transform()とtransform()の違い (コラム的

transformはfitさせたモデルを予測させてデータを書き換える(test and train用

fit_transformはモデルのfitと予測を一気に行う(train用

昔fit_transoformの使いみちがわからなかったが、ただのトレーニングデータのテストなら楽だし使えそうだと思います。

列数が35と新しい列がいくつも出来ています。

よくわからない新しい列がいくつもの出来てますね…

相関係数を見てみましょう

新しく追加された列は相関係数が高いものが多いですね。(絶対値で

余計な行が増えたかと思ったら結構相関係数上がってたので重要なデータが増えたようです。

さっきやったことをもう一度やります。

マージとかありましがた、単に結合するだけです。

列はさっきよりももっと増えています。

ドメイン知識

紅葉, 気分, 秋の色, 明るい, 大気, 秋の気分, カラフル, 分岐, 色, Emerge, 背景

ドメイン知識とはデータに関する業界の知識や事業についての知識です。

例えば景気がすっごく悪かったら失業率だってどんどん上がっていきますし、良かったら下がっていく…というに予測できるためデータ分析では必要不可欠なものです。

では、今回のデータのドメイン知識として使えるものを挙げていきます。

  • CREDIT_INCOME_PERCENT:
    クライアントの収入に対するクレジット量の割合
  • ANNUITY_INCOME_PERCENT:
    顧客の収入に対するローンの年金の割合
  • CREDIT_TERM:
    月単位での支払いの量(年金は1ヶ月毎払うため)
  • DAYS_EMPLOYED_PERCENT:
    クライアントの年齢に対する、働いた日数の割合

targetが1のときも0のときもあまり変わらなさそうで…

実際に試してみないとわかりませんが、あまり良いデータとは言えないですね。

ロジスティック回帰

これからはモデルを作っていきます。

正規化させてからロジスティック回帰にぶち込んで学習させます。

基本的にロジスティック回帰は分類問題に使われますが、今回は確率(0~1)の予測で使います。なぜなら、ロジスティック回帰ではシグモイド関数(変域0<y<1)を使っているからです。

まずは先程使ったtrainデータとtestデータの前処理を行います。

最終的な前処理をします。正規化、欠損値処理です。

モデルの訓練は済みました。後はテストデータで予測するだけです。求めたいものはローンを返済しない確率なので、2列目を取得します。

最終的に提出するファイルには、Id列と確率を表示させるので

データを連結させてcsvファイルに保存します。

後はcsvファイルで保存するだけです。

早速提出してみましょう。

結果は、0.67と初めてにしては良いんじゃないかっていうスコアでしょうか…

今度は最後にLightGBMで予測させます。

ただ、これで基礎的なものは大体できたと思います。

まだ自力で組めないので自力で組むシリーズも始めてみようと思います。

お読みいただいてありがとうございました!

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です