2018」の6日目の記事です。DataStrategyの齋藤(@pigooosuke)が担当します。Regression(分位点回帰)のお話をします。回帰モデルの評価カテゴリーを予測するような分類問題では、各クラスでの精度を確認することはできます。売上や何かしらの値を予測する回帰問題では、そのモデルにおける特定地点での単一の予測値しか出力することが出来ず、その分布を把握することは単純ではありません。5]に対して、予測値は1つarray([16.])ここで説明にあたって予測の確度という言葉を使うと定義が甘いのでもう少し分解します。回帰予測の範囲を把握する上でよく出てくるのは、この2種類ではないでしょうか。混同しないように事前に再確認しましょう。こちらは、同じ条件で100回測定したら、計算した回帰曲線がその信頼区間内に収まった測定が95回ありましたという意味になります。こちらは、今後観測しうるデータが100回出現したら、予測区間内に収まる観測が95回ありましたという意味になります。下図は、標本に対して回帰曲線を計算したものです。回帰曲線は信頼区間に収まり、標本は予測区間に収まります。基本的には予測区間のほうが信頼区間の外側に位置します。使い分けとしては、モデルそのものの精度を測りたいのであれば信頼区間モデルにおける特定地点での予測値のばらつきを調べたいのであれば予測区間が目安になると思います。Regressionは、予測区間を説明するために利用します。~Quantileとは、日本語で四分位のことです。データをソートして区切った場合、それぞれのデータが上位何%に位置するのかを表現するときに使います。quantileは、中央値と一致します。損失関数を最適化していきます。年収など偏りがある分布を平均値ではなく、中央値で確認したい場合に利用されます。用途としても、単純に各分位点での予測値の開きをみるだけでなく、例えば、年収or家賃の大小によって格差を図る指標がどれぐらい変化するのかを比較することによって変数の理解に繋がることもあり、社会学や経済学の分野で活用される事例が多くあります。以下の損失関数を最適化していきます。重み付けされた和をLossとしています。導出を詳しく知りたい人はこちらのリンクが詳しいです。Regression理論的な部分の解説リンク先を見ても細かな部分の省略が多かったので、勉強ついでに自分でも導出をやってみました。興味がなければ読み飛ばし推奨です。分布の中心として定義した場合、平均は誤差の平方和の最小値で表せるように、中央値は絶対偏差和の最小値で表すことができます。これを逆関数で表すとこうなります。最初に出てきた非負となるインジケーター関数です。このインジケーター関数を一行で表現するとこうなります。表現すると、それぞれ以下の通りになります。Regressionの損失関数がサポートされており、サンプルとして少し紹介してみます。sin波にノイズを加えたデータセットでやってみます。right')plt.show()現在は、アンサンブルのGradientBoostingRegressorでしか、この損失関数は設定出来ません。Regressionを追加しようという動きはあるようです。y.shape[0]と、非常にシンプルな構造になっています。ちなみに、LightGBMの実装は以下のようになっていました。}};それぞれのleaf_valueでの正解と予測の差に対して重みを付けているだけなので、根本は同じですね。一つの勾配ブースティング代表格のXgboostでは標準実装されておらず、自分で損失関数を設定する必要がありそうです。興味がある人は自作してみると面白いかもしれませんね。Regressionを紹介しました。回帰モデルの出力に関して説明を求められたときの一つの手法として覚えておくと良さそうですね。さんがデザインについて語ってくれます。)の開発チームによるブログです。Groupの大木です。Developerをしている東口です。Groupのマネージャーをしている山田です。12/1から始まっ...Archiveスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。