📖
機械学習あれこれ
機械学習とは
- 機械に何か情報を与えて、機械に学習をさせ、その機械が何かを予測したり、目的を達成したりすること
- 機械学習には教師あり学習、教師なし学習、強化学習がある
教師あり学習
- あらかじめ答えが与えられて、その正解データを予測するためのモデルを構築するための機械学習手法
- y=f(x)という関数があったとしたら、yが目的変数、xが説明変数、f(x)がモデル
- テストで90点以上取った人が誰か(目的変数)を予測するとなったら、その予測に必要なデータ(勉強時間、塾に行っているのか否か、親の年収、勉強環境、勉強に対する考え方 など)が説明変数
クラス分類
- 分類のイメージ
引用:https://avinton.com/academy/classification-regression/ - タイタニック号の生存者分析など(死んだか、生きたか)
回帰
- 連続値などの値の予測
- 過去の広告予算ごとの売り上げデータをもとに回帰直線を作成
- この回帰直線を利用して予算から売上を予測
引用:https://avinton.com/academy/classification-regression/
- 過去の〇〇データから将来の〜〜を予測
- RandomForestRegressorは回帰
- これでタイタニック号生存者分析のAgeカラムの欠損値を予測したりする。Pclass、Sex、Parch、SibSpなどの欠損値がない情報を用いて、Ageの欠損値を補完する。(ちなみに英語で「Ageの欠損値を補完する」はmissing value imputation of Age_columnという)
ロジスティック回帰
- 2値分類に非常に適した手法
- ある特定の事象が起きる確率を分析する
- この確率は0〜1
- 予測された確率が0.5以上は、クラス1、それ未満の場合はクラス0
教師なし学習
- 未知のデータに対して予測
- 答えは与えられていない
- 入力データを学習→データに潜むパターンを認識→未知データ予測
マーケットバスケット分析
- 教師なし学習の一つ
- バスケット分析やアソシエーション分析とも呼ばれる
- 「米を買うなら納豆を購入する」のように商品購入の際の関連性を分析する
- 企業は顧客がどのようなものが併売しやすいを知りたいので、マーケティング等でよく使用される
支度度
- ある商品Aと別の商品Bが併売(一緒に購入)された数、あるいは全体に占める割合
リフト値
- リフト値が1.0を超えていれば、両品の関連性があるといえるので、例えば「スーパーなどで同じ棚に陳列するなどすれば併売量が増加する」などに応用できる
Numpy
- 演算効率化のライブラリ
- データサイエンスは膨大な量のデータに対して一括で計算する必要がある。なので、numpyで高速な計算をする必要がある。
lambda()
- 機械学習の勉強をしているとよく出てくる
- 基本的な構文:lambda 引数: 式
例
# 通常の関数
def add(x, y):
return x + y
# ラムダ関数
add_lambda = lambda x, y: x + y
# 使用例
print(add(3, 5)) # 出力: 8
print(add_lambda(3, 5)) # 出力: 8
- ラムダ関数は使い捨ての関数を簡潔に記述するのに便利(←関数名が不要だから)
モデル
決定木モデル
- 回帰モデル(予算から売上を予測)と分類モデル(死んだか生きたかなど)がある
- 不純度を表すジニ係数を使用して分類するモデル
- 不純度:分類するとき、どれだけ綺麗に分類できたか
決定木モデルの種類
-
XG Boost
-
LightGBM
-
RandomForest
-
XG,Lightはブースティングという手法を使用
-
Randomはバギングという手法を使用
→ブースティングとバギングを理解するには「バイアス」と「バリアンス」について理解する必要がある
バイアスとバリアンス
バイアス
- 偏りという意味
- 実際の値と予測値の誤差の平均
バリアンス
- 分散:予測値の散らばり具合
バイアスとバリアンスを表す図としてこれがわかりやすい
引用:https://qiita.com/_tsuru/items/23fdc43ee0e54ec7c87e
ブースティングとバギング
ブースティング
- 予測モデルのバイアスを減らす(未学習を減らす)動きをする
バギング
- バリアンスを減らす(過学習を減らす)動きをする
Discussion