機械学習とは
データを入力すると、データを出力する数式をモデルと呼ぶ。
- モデルは原形を持っているが、学習データを元にパラメータが決まる。
例 y = ax +b という式の原形は決まっているが、aとbはパラメータで「学習」で調整される。
y を目的変数、xを説明変数と呼ぶ。
- 出力された値を元に「分類」や「値の予測(=回帰)」を行う。
例 出力値を予測値として使う。10以上だったら「正」と判定する。
機械学習プログラムの手順
kaggleを例に手順を説明します。
データ読込み
CSVファイル等からデータを読み込みます。
EDA(探索的データ解析:Exploratory data analysis)
データの傾向を掴みます。(これにより、どの変数を使うか等を考えます。)
matplotlib,seaborn,pandas等を使います。
- データの分布はどうなっているか?
- データはどのような種類の値をとるか?
- 外れ値がないか?
- 欠損値(NULL)の値はないか?
- 変数間の相関はないか?(使わなくてよい変数はないか?)
- 目的変数の正解ラベルの分布はどうなっているか?
前処理
Pandasを使って、使用するデータを加工します。
- 外れ値 外れ値がある場合は除外します。
- 正規化 モデルによっては、0~1の間に変数の値が収まるように正規化した方がよい。(線形回帰など)
- カテゴリー変数の数値化 数値への変換、または、One-Hotベクトル化する。使用するモデルによっては必要ない。
- 欠損値補完 欠損値がある場合、最大値や最頻値等で補完する。(あえて補完しない。補完する値も予測する等ある。)
モデル作成
モデルを作成します。
モデルの複雑度が上がるほど精度が上がるが、過学習しやすくなります。
単純なモデルほど解釈がしやすいです。
■分類
・ロジスティク回帰
・ニューラルネットワーク
・決定木
・決定木系(/Random Forest/XGboost/CatBoost/LightGBM)
■回帰系
・線形回帰モデル
・決定木系(Random Forest/XGboost/CatBoost/LightGBM)
チューニング
モデルのハイパーパラメータをチューニングします。(グリッドサーチ等の方法がある。)
例:決定木の木の数、深さ
検証
モデルが過学習を起こしていないか確認するため、学習データから検証用のデータを作成して評価します。
- ホールドアウト法
- 交差検証法
評価
評価指標には以下のようなものがあります。
分類・・・Accuracy(正解率)、AUC(偽陽性率、真陽性率を考慮)
回帰・・・RMSE(平均平方二乗誤差:Root Mean Square Error)
採択
モデルを採択します。(精度がよい。分かりやすい等の基準で選びます。)
備考
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit(train["Sex"])
train["Sex"] = le.transform(train["Sex"])
test["Sex"] = le.transform(test["Sex"])
```
```
le2 = LabelEncoder()
le2.fit(train["Embarked"])
train["Embarked"] = le2.transform(train["Embarked"])
test["Embarked"] = le2.transform(test["Embarked"])
```