機械学習 はじめよう

第8回 線形回帰[前編]

この記事を読むのに必要な時間:およそ 2 分

隠されていた3つの仮定

1つめの仮定:関数の形

試しに別のサンプルデータを使ってちょっと考えてみましょう。

(x,y)=(0.0,4.0),(2.0,0.0),(3.9,3.0),(4.0,2.0)

このデータをプロットしてみます。

画像

この点に近い直線も最小二乗法を使って求められますが,こんなグラフになってしまいます。これは明らかに変ですね。

画像

これはきっと直線じゃあなくてもうちょっと曲がった線を引かないと……って,あれ? ちょっと待ってください。

このグラフが変だってことは明らかなのだとしても,最初の例題で引いた線を直線にしなければいけないと,いつ決まったんでしょう? 最初の例題で曲線を引いていいのであれば,以下のようなグラフも描けるわけです(下図の緑の線⁠⁠。

画像

これならすべての点を通っていますから,正確さで言えばむしろ直線より良くなっています。一体どちらが「正解」なんでしょう。

これが授業であれば「直線が正解だと思う人~?」⁠いやいや曲線でしょ,って人~?」と手を挙げてもらうところですね(笑⁠⁠。でも実は,今与えられている情報だけではどちらが良いかなんて言えません。もっとはっきり言うと,そもそも機械学習に「正解」なんてないのです。

「直線」「曲線」のどちらが良いかは,⁠問題を解きたい人はどちらが欲しいか」なのです。そしてそれを決めるのは,⁠そのデータがどういう由来なのか⁠⁠結果をどのように使おうとしているのか⁠であるため,データだけを見てどちらが良いなんて言えないんですね。つまり,⁠モデルとして直線を考える」のは,データからは決して導くことのできない仮定だったのです。

2つめの仮定:二乗誤差という指標

仮定のその2は「二乗誤差」のところに隠れています。差の二乗を取ってプラスとマイナスが打ち消しあわないようにしましたが,以下のように,差の絶対値を取ることでも同じ効果が得られます。

画像

二乗誤差よりも多少面倒ですが,この式を最小にするaとbを求めることもできて,(a,b)=(7/13,63/13) であることがわかります(下図の緑の線⁠⁠。

画像

さきほどの「直線と曲線のどちらがいいか」でも悩ましい問題でしたが,今度は「どちらの直線を選ぶか」ですからね。データだけから決めるのはますます無理です。つまり,⁠適切なパラメータを選ぶ指標として二乗誤差を使う」こともデータから導くことのできない仮定だった,ということです。

実は,二乗誤差の最小化は,差の分散を最小化してくれることがわかっています。つまり,どの点にもできるだけ同じくらいの誤差がのっているような調整をするわけです。しかも計算しやすいというメリットもあるため,二乗誤差を使うというのは比較的必然性のある仮定ではあります。とはいえ,データに含まれる誤差が偏っていることがわかっている場合などはその限りではありませんので,いつでも必ず二乗誤差を使うというわけにはいかないということです。

著者プロフィール

中谷秀洋(なかたにしゅうよう)

サイボウズ・ラボ(株)にてWebアプリの連携や自然言語処理を中心に研究開発を行いながら,英単語タイピングゲームiVocaをサービス提供している。参加した懇親会はいつもなぜかRESTとExcelの話になる。