📖

機械学習あれこれ

2024/06/03に公開

機械学習とは

  • 機械に何か情報を与えて、機械に学習をさせ、その機械が何かを予測したり、目的を達成したりすること
  • 機械学習には教師あり学習、教師なし学習、強化学習がある

教師あり学習

  • あらかじめ答えが与えられて、その正解データを予測するためのモデルを構築するための機械学習手法
  • y=f(x)という関数があったとしたら、yが目的変数、xが説明変数、f(x)がモデル
  • テストで90点以上取った人が誰か(目的変数)を予測するとなったら、その予測に必要なデータ(勉強時間、塾に行っているのか否か、親の年収、勉強環境、勉強に対する考え方 など)が説明変数

クラス分類

回帰

  • 連続値などの値の予測
  • 過去の広告予算ごとの売り上げデータをもとに回帰直線を作成
  • この回帰直線を利用して予算から売上を予測


引用: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

ブースティングとバギング

ブースティング

  • 予測モデルのバイアスを減らす(未学習を減らす)動きをする

バギング

  • バリアンスを減らす(過学習を減らす)動きをする

参考:https://qiita.com/_tsuru/items/23fdc43ee0e54ec7c87e

Discussion