はじめに
Python、AI初心者な自分がAI関連の部署に異動になったので、以下の書籍を読んで勉強始めました。
個人的に見返すため、あと学習内容のアウトプットを目的として、雑多にメモしていきます。
機械学習関連
用語
目的変数、説明変数
- 目的変数:機械学習の結果、予測したい変数の事。
y
で表す。 - 説明変数:予測に使用する変数の事。
X
で表す。
競馬の着順を予想したいとした場合は以下のような例になるはず。
- 目的変数:着順
- 説明変数:馬場状態、馬の情報、騎手の情報
カテゴリカル変数
データのカテゴリー分けを表す変数の事。
- 売り上げデータにおける店舗名、商品名
機械学習は数値を扱うものであり、上記のような変数はそのままでは学習に使えない。
ワンホットエンコーディング
にて0と1のフラグに置き換える
ワンホットエンコーディング
カテゴリカル変数を機械学習で扱えるように、0と1のフラグに置き換えること。
置き換えた後の変数の事をダミー変数
という。
例として、売上データの店舗名をワンホットエンコーディングする。
- 変換前
ID | 売上 | 店舗名 |
---|---|---|
1 | 2,000 | 店舗A |
2 | 3,200 | 店舗B |
3 | 1,900 | 店舗C |
4 | 2,900 | 店舗B |
5 | 3,600 | 店舗C |
- 変換後
ID | 売上 | 店舗A | 店舗B | 店舗C |
---|---|---|---|---|
1 | 2,000 | 1 | 0 | 0 |
2 | 3,200 | 0 | 1 | 0 |
3 | 1,900 | 0 | 0 | 1 |
4 | 2,900 | 0 | 1 | 0 |
5 | 3,600 | 0 | 0 | 1 |
カテゴリに応じて列を作り、そのカテゴリに属しているレコードに1が設定されるイメージ。
多重共線性(マルチコ:multi-colinearlity
)
多変量解析において、説明変数間に高い相関が認められる場合に発生する事象の事。
発生する具体的なケースとしては、上記で述べたダミー変数を試用している場合に発生する。
例えば、上記のデータでは必ずどこかの店舗に属している。
つまり店舗A~Cの説明変数間に対して完全に相関してしまっている。
結果として誤差が大きくなり、解析結果が不安定となってしまう。
対応としては、作成したダミー変数のうち、1列を削除するなどが挙げられる。
(上記の例であれば、「店舗A」を削除するとか。)
表現力
与えられた訓練データを再現するモデルの力の事。
モデルの表現力が高すぎると、訓練データの些細な違いまでモデルが学習してしまう。
すると、未知のデータに対する予測が難しくなる。
汎化性能
データに含まれる誤差の部分を無視する力の事。
汎化性能が高いほど未知のデータに対する識別能力が高いという扱いになる。
ただ、汎化性能が高すぎても鈍感なモデルになる。
汎化性能と表現力はトレードオフ。
同じ学習データを使用しても使用するモデルによって差がでる。
交差検証(cross-validation)
個々のモデルの汎化性能を評価する手法。
学習結果の評価のため、学習データと未知のデータ(テストデータ)に適用した時の結果を比較する。
代表的な交差検証の一つにK-分割交差検証
がある。
これはデータをK個に分割し、そのうちの一つをテストデータ、残りのK-1
個を学習データとし正解率の評価を行う。
予測結果と混合行列
モデルの予測結果はいかに分類される。
種類 | 説明 |
---|---|
True Negative(真陰性) | 予測結果は負 、実際も負
|
False Negative(偽陰性) | 予測結果は負 、実際は正
|
True Positive(真陽性) | 予測結果は正 、実際も正
|
False Positive(偽陽性) | 予測結果は正 、実際は負
|
マトリクス(混合行列)で表すと以下となる。
予測は負 | 予測は正 | |
---|---|---|
実際は負 | TN(True Negative) | FP(False Positive) |
実際は正 | FN(False Positive) | TP(True Positive) |
評価指標
モデルの評価指標として正解率
、再現率
、適合率
、F値
という指標が扱われる。
それぞれの値は上記のTP
などから算出する。
正解率(Accuracy)
全部の合計の内、予測結果と実際の結果が合致している割合(TNとTP)。
式で書くと以下のようになる。
$Accuracy = \frac{TP + TN}{TP + FP + TN + FN}$
再現率(Recall)
実際は正
だった物のうち、どの程度予想できていたかという割合。正
の物に対しての正答率となる。
式で書くと以下のようになる。
$Recall = \frac{TP}{FN + TP}$
適合率(Precision)
正
と予測した物のうち、実際と合っていた件数の割合。
式で書くと以下となる。
$Precision = \frac{TP}{FP+TP}$
F値(F-measure)
適合率
と再現率
の調和平均の事。
式で書くと以下となる。
$F = \frac{2 × Precision * Recall}{Precision + Recall}$
参考資料
下山 輝昌,三木 孝行,伊藤 淳二『Python実践機械学習システム100本ノック』秀和システム
pandasでワンホットエンコーディング(ダミー変数)
重回帰分析における多重共線性への対応
汎化性能、表現力はトレードオフな事が分かる記事
交差検証(クロスバリデーション)とは?合わせてグリッドサーチに関しても学ぼう!
【入門者向け】機械学習の分類問題評価指標解説(正解率・適合率・再現率など)