リッジ回帰とラッソ回帰

線形回帰の「ちょっと困ったこと」

線形回帰は、データにあるまっすぐな関係を見つけるのに便利でしたが、いくつか「ちょっと困ったこと」がありました。

  • 使いすぎちゃう鉛筆(過学習): データに完璧に線を合わせようとしすぎて、新しいデータに対してうまく予測できなくなることがあります。これは、まるでテストの過去問ばかりを完璧に覚えて、初めての問題に対応できなくなるのに似ています。
  • たくさんの説明変数(特徴量): 身長と体重だけでなく、年齢や運動時間、食事の量など、たくさんの要素(説明変数)が体重に関わっているかもしれません。説明変数が多すぎると、どの変数が本当に大切なのか分かりにくくなってしまいます。

そこで登場するのが「リッジ回帰」と「ラッソ回帰」です!

この2つは、線形回帰をちょっと賢くして、上の「困ったこと」を解決しようとする仲間みたいなものです。どちらも、線形回帰の計算方法に少し工夫を加えています。

1. リッジ回帰(お手柔らかペナルティ先生)

リッジ回帰は、「使いすぎちゃう鉛筆」の問題を解決しようとします。

  • 考え方: 線を引くときに、データに完璧に合わせようとするのを少しだけ邪魔します。「そんなに頑張って完璧に合わせなくても、だいたいの傾向が分かれば良いんだよ」と、モデルに優しく注意するイメージです。
  • どうやるの?: 線を決めるときに、線の傾き(専門用語では「重み」と言います)が大きくなりすぎないように、少しだけペナルティ(罰金みたいなもの)を加えます。
  • 効果:
    • 線がギザギザになったり、極端にデータに寄り添ったりするのを防ぎます。
    • その結果、新しいデータに対しても、より安定した予測ができるようになります。
    • たくさんの説明変数があっても、全ての変数を少しずつ考慮に入れます。ただし、どの変数が本当に重要かは、まだ少し分かりにくいかもしれません。
  • 例えるなら: テストで高得点を取りたいけど、一夜漬けで完璧に覚えようとすると、すぐに忘れてしまいますよね。それよりも、毎日少しずつ勉強して、広く浅く理解する方が、応用問題にも対応できるようになるイメージです。リッジ回帰は、モデルが特定のデータにだけ過剰に適合するのを防ぎ、広い範囲のデータに対応できるようにします。

2. ラッソ回帰(スッキリ整理整頓先生)

ラッソ回帰は、「たくさんの説明変数」の問題を解決しようとします。

  • 考え方: たくさんの説明変数の中で、本当に大切なものだけを選び取って、他の重要でない変数を無視しようとします。まるで、部屋の物を全部出して、本当に必要なものだけ残して、あとは捨てるようなイメージです。
  • どうやるの?: 線を決めるときに、線の傾き(重み)が小さい変数に対して、もっと強いペナルティを加えます。すると、重要でない変数の重みはどんどん小さくなり、最終的にはほとんどゼロとみなされるようになります。
  • 効果:
    • 重要でない説明変数を自動的に見つけて、分析から除外してくれます。
    • その結果、どの変数が予測に本当に影響を与えているのかが分かりやすくなります。
    • モデルがシンプルになるので、理解しやすくなります。
  • 例えるなら: たくさんの教科書やノートがあっても、テストに本当に必要なのはその一部だけですよね。ラッソ回帰は、まるで賢い先生が「この教科書とノートだけ勉強すれば大丈夫だよ」と教えてくれるように、重要な説明変数だけを選び出してくれます。

リッジ回帰とラッソ回帰の似ているところ・違うところ

  • 似ているところ:
    • どちらも線形回帰の仲間で、予測の精度を高めようとする方法です。
    • どちらも「ペナルティ」という考え方を使って、モデルが複雑になりすぎるのを防ぎます。
  • 違うところ:
    • ペナルティの種類: リッジ回帰は重みが大きくなりすぎないように「優しく」ペナルティを与え、ラッソ回帰は重要でない変数の重みを「強く」ペナルティを与えてゼロにしようとします。
    • 得意なこと: リッジ回帰は過学習を防ぐのが得意で、ラッソ回帰は重要な変数を選ぶのが得意です。
    • 結果: リッジ回帰では全ての変数が少しずつ影響を持ちますが、ラッソ回帰では一部の変数だけが重要な影響を持つようになります。

どちらを使うか?

どちらの回帰が良いかは、データや解決したい問題によって変わります。

  • もし、たくさんの説明変数があって、どれが重要か見当がつかない場合は ラッソ回帰 を試してみると、重要な変数が見つかるかもしれません。
  • もし、説明変数はある程度絞られているけど、過学習が心配な場合は リッジ回帰 を試してみると、より安定した予測ができるかもしれません。

時には、この2つを組み合わせたような「Elastic Net(エラスティックネット)」という方法も使われます。

難しかったかもしれませんが、リッジ回帰とラッソ回帰は、線形回帰をもっと便利にするための賢い工夫だということです。

Posted in AI, 技術情報 | Leave a comment

教師あり学習と線形回帰

「教師あり学習」

先生が生徒に問題を教えて、生徒が答えを学ぶのに似ています。

  • 先生(教師)の役割:
    • 問題と、その正しい答えをセットで教えてくれます。
    • 例えば、「リンゴが3個で300円でした。リンゴ5個ではいくらになりますか?」という問題と、「500円」という正しい答えを教えます。
    • たくさんの問題と答えのセットを教えます。
  • 生徒(学習するコンピュータ)の役割:
    • 先生に教えてもらったたくさんの問題と答えのセットを見て、「こういう問題のときは、こういう答えになるんだな」というルールパターンを見つけようとします。
    • 新しい問題が出されたとき、見つけたルールやパターンを使って、正しい答えを予測しようとします。

つまり、教師あり学習は、「正しい答えが分かっているたくさんのデータを使って、新しいデータに対する答えを予測する」方法のことです。

「線形回帰」

これは、教師あり学習の中でも、特に「数字と数字の関係」を見つけるのが得意な方法です。

例えるなら、グラフに点をたくさん打って、その点に一番近いまっすぐな線を見つけるようなイメージです。

  • 例:
    • 身長が高い人ほど、体重も重くなる傾向がありますよね?
    • たくさんの人の「身長」と「体重」のデータを集めて、グラフに点を打ちます。
    • すると、点が右上がりのまっすぐな線に近い並び方をしていることが多いです。
    • 線形回帰は、この「身長」と「体重」の関係を表す一番良いまっすぐな線を見つけ出す方法です。
  • 何がわかるの?
    • この線が見つかると、「身長が〇〇cmなら、体重はおよそ△△kgだろう」と予測できるようになります。
    • 例えば、新しい人の身長が分かれば、この線を使ってだいたいの体重を予測できるわけです。

線形回帰のポイント

  • 「線形」 っていうのは、「まっすぐな線」のことです。複雑なカーブではなく、シンプルな直線を考えます。
  • 「回帰」 っていうのは、「元の数値に戻る」「予測する」という意味合いがあります。ここでは、入力された数値(例えば身長)から、別の数値(例えば体重)を予測することです。

まとめると…

  • 教師あり学習 は、先生(正解データ)からルールを学んで、新しい問題の答えを予測する方法。
  • 線形回帰 は、教師あり学習の中でも、特に数字と数字のまっすぐな関係を見つけて予測する便利な方法。身長と体重のように、片方の数字が増えると、もう片方の数字もだいたい同じように増えるような関係を見つけるのに役立ちます。
Posted in AI, 技術情報 | Leave a comment

Gmail 未読のみのフィルター

is:unread
Posted in 技術情報 | Leave a comment

Mac Finder でファイルを移動する方法

Mac のFinder で、いつも困るのが、「コピー」はあるのに「移動」のメニューがないこと。

実は、移動の方法はあって、他のディレクトリへ行ったら下記のコマンドで移動ができる。

⌥:Option + ⌘:Command + V : ペースト
 

⌥:Optionを付けることで、コピー&ペーストではなくファイルの移動ができる。

Posted in Mac, 技術情報 | Leave a comment

WordPress のAuthentication unique keys の設定方法

基本的に、WordPressの wp-config.php の設定はWordPressをインストールするときに、設定値が提案されるが、もし、独自で wp-config.php の設定するときは、下記のURLに行くと提案してくれる。

https://api.wordpress.org/secret-key/1.1/salt/
Posted in php, WordPress, 技術情報 | Leave a comment

Finder で一時的に隠しファイルを表示する方法

⌘:Command + ⇧:Shift + .:ピリオド
Posted in Mac, 技術情報 | Leave a comment

Linux alias の作成

Linux コマンドでよく使うコマンドをエイリアスにしておくと便利。

自分がよく使うコマンドが以下。~/.bashrc に登録しておく。

alias hisgre='history | grep'
Posted in AWS, CentOS, Linux, Mac, 技術情報 | Leave a comment

CDKでEC2インスタンスを初期化される場合の注意点

CDK で EC2 インスタンスを ec2.InstanceCfnInstance を使って定義すると、CDK のスタックが更新される際に、新しいインスタンスが作成され、既存のインスタンスが削除される ことがあります。

特に以下の変更を加えた場合、CDK は新しいインスタンスを作成します:

  1. AMI ID の変更
  2. インスタンスタイプの変更
  3. IAM ロールの変更
  4. Elastic IP の関連付け変更
  5. CDK の Instance リソースを変更・削除して再デプロイ
  6. リソースの一意識別子 (Logical ID) の変更
Posted in AWS, CDK, 技術情報 | Leave a comment

WordPress のUpdraftPlus の HTTP エラー 413 (Request Entity Too Large) が発生する問題

WordPress のバックアッププラグイン UpdraftPlus を使用している際に、ファイルのアップロード時に HTTP エラー 413 (Request Entity Too Large) が発生する問題です。

Nginx default.conf

sudo vi /etc/nginx/conf.d/default.conf
server {
    listen 80;
    server_name example.com;

    client_max_body_size 512M;
}

php.ini

$ sudo vi /etc/php.ini
upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 300
max_input_time = 300
memory_limit = 512M
Posted in Linux, Nginx, php, 技術情報 | Leave a comment

デレクトリのみの権限を一括変換

$ sudo find . -type d -exec chmod 766 {} \;
Posted in AWS, CentOS, Linux, 技術情報 | Leave a comment