「コスト付き回帰分析」という新理論を提案。会社で難を逃れた話。
お疲れ様です。東京で仕事をしているものです。へちやぼらけと申します。(統計学・機械学習に関する動画も投稿している、所謂YouTuberです。笑)
データサイエンティストになると悲しいもので、正しい予測結果を出すだけが仕事じゃないんですね。結果ありきで、つじつまの合う分析をして下さい!見たいな注文も時たまある。
今回は、”つじつまの合う回帰分析”をご紹介します、僕が勝手に思いついたものですので手法に名前はありません。「コスト付き回帰分析」とでも呼んで下さい。同手法により、無難に会社の無理難題を乗り切ることができました。
問題設定!
会社のオーダーとしては、線形重回帰y=a1x1+a2X2の回帰係数に対して、a1の値を大きく・a2の値を小さくして欲しい的なオーダーだったんですよ。a1を大きく??皆さんだったらどうします?(あ、ちなみに、xの値は正規化してますよ。)
コスト付き回帰分析
そこで、思いつきました。コスト付き回帰分析。
同手法は、端的に言えば「ある程度の理屈が通った上でxの回帰係数の値を変化することのできる手法」です。
着想を得たのは、「コスト考慮型学習」「Ridge回帰」です。コスト考慮型学習ってご存知ですか?データを分類する際に、たまに使う概念なんですけど、端的に言えば損失関数に「任意のコスト」をぶち込む手法です。詳しくは、下のサイトを見てください↓↓。
例えば、集団Aと集団Bを分類する際、どうしても分類境界からはみ出るデータが存在するもの。基本的には、AもBもフェアに扱って、その上で、分類境界からはみ出るデータを最小限にしようと境界線を引きますよね。
コスト考慮型の場合は、違いますAとBはフェアでありません。Aのコストを超絶重くしたら、Bが境界にはみ出ることを犠牲にして、なるべくAがはみ出ない様に境界を引きます。下の図がそのイメージ。
このコストを使った分類の方法、何だかAdaBoostっぽいなぁ~とも感じるんですが、古くからあった手法でございます。(今でも、医療の分野で使われているとか、使われていないとか)
分類する際には、当然境界からはみ出るケース(間違って分類してしまうケース)もあるんだけど、そのはみ出た場合の(間違って分類してしまった場合の)深刻度が違う時に使われるんですね。
で、Ridge回帰は皆さんご存知かと。回帰分析に式にL2ノルムを設けて、過学習を予測する手法です。式にするとこんな感じでしょうか↓(式を書くのが面倒だったので、このサイト「https://m.blog.naver.com/PostView.nhn?blogId=sw4r&logNo=221000542623&proxyReferer=https%3A%2F%2Fwww.google.com%2F」から引用しました。)
そして、私が思いついたのは、このL2ノルムに係数つけて、それをコストとみなして回帰分析すれば、回帰係数を自由に操れるんちゃうんか?というアイデアです。
上述の通り、分類の世界でコスト付きの考えが成り立っているんだから、回帰でやってもいいでしょって感じです。「コスト付き回帰」を式で書くと以下の様な式になります。
Ridgeの拡張verとも言い換えることができるかもしれません。正則化項(罰則項)の回帰係数jに対して、それぞれwjという重みを付けています。
例えばw1の係数c1が0.2に対して、w2の係数c2が0.4の場合、x2はx1の2倍コストが大きいと読み解くことができます。コストは自由に置いて下さい。基本的に、コストの大きい値は、回帰係数が小さくなります。そうです。置いたコストに合わせて、回帰係数を自由に変えることができてしまうんですよ!(でも、こういったコストを加味した回帰って、以外と活用する価値ありませんか? 説明変数x1、x2をそれぞれ「1」だけ上げるために、同じ労力を払う何て場面ないですから。「1」上げるためのコストは、変数同士で違うのが、より一般的なのではないでしょうか?)
下は、この「コスト付き回帰」のイメージ図です。従来のRidgeが”円”ならば、重み付き回帰は"楕円"ですね!
この手法でオーダー通りの回帰係数を求めて、難を逃れることができました。良かったです!
この記事が気に入ったらサポートをしてみませんか?