回帰と分類
機械学習で問題を解く上で基本的なことなので誤解がないように改めて整理しておく。
回帰問題と分類問題の違いは何か
一般人向け: 「値を予測」する問題が回帰問題、「グループに分類」する問題が分類問題
数学で表現してほしい人向け: 目的変数が連続なのが回帰問題、離散なのが分類問題
回帰問題と分類問題の例
「商品の売り上げを予想したい」
→売上という値を予測したいので回帰問題
「ニュース記事を『政治』とか『スポーツ』とか分類したい」
→グループに分類したいので分類問題
「アイドルの顔画像からそのアイドルが誰かを推定したい」
→顔画像を「アイドルAの写真」「アイドルBの写真」に分類するので分類問題
「トマトの写真からその糖度を推定したい」
→糖度という値を推定するので回帰問題
発展的な内容
回帰問題と分類問題は相互に変換することができる
顧客の説明した要件がみるからに回帰問題であっても、詳しく話を聞くと分類問題として解くのが適切である場合がある
例
顧客が「この人たちの年齢を推定したい(回帰)」と要件を説明したとしても、推定した結果の用途をヒアリングしたら「未成年が入らないようにしたい」だったなら、それは「未成年かどうか」の分類問題で解くべき
なぜ「解いてもよい」ではなく「解くべき」か。回帰は正解とのズレを最小化するように解くので「50歳の人を60歳と間違える」と「15歳の人を25歳と間違える」は同程度の間違いだと扱うことになる。しかし顧客の実際の用途を考えると「50歳の人を60歳と間違えること」は問題ではなく、「15歳の人を25歳と間違えること」は大問題。
なので回帰で解くことは適切ではない。
顧客の説明した要件がみるからに回帰問題であっても、その他要件の明確化のためにあえて分類問題として解くことがある
回帰問題は「正解率」を出すことができない。「誤差がこれくらいあります」というコミュニケーションになる。
「売り上げを予測したい」と言う顧客に対して「売り上げの推定器を作りました、平均二乗誤差は100円です」って伝えたら、解釈の仕方が難しいので「もっと誤差を減らせ」しか出てこない可能性が高い。
分類問題で解いて「90%正解する、失敗する例はこちら」と見せた方がよい。特に失敗する例が少ない場合は「これが失敗する例全部です」と言えるのがメリット。
回帰問題でも「誤差の大きいものはこちら」と見せることはできるが、分類問題と違って明確な境界がない。
誤解を招きやすいポイント: 「ロジスティック回帰」は回帰問題ではなく分類問題に使うことの方が圧倒的に多い
ロジスティック回帰は「グループに属する確率」という実数値を回帰によって求めることで「どのグループに属するか」という分類問題を解く手法。つまり分類問題を回帰問題に変換してから解くことに相当する。
発展的な内容
学習したモデルが何を出力するかで分類する
分類問題
二値分類問題: 0か1かを出力する
多値分類問題: 1つの整数を出力する
例えばアイドルの顔画像からそのアイドルが誰かを識別する問題は、アイドルに連番のIDを振れば「整数を出力する」という形で表現できる
整数はただの識別IDで、大小関係や加減乗除には意味がないような対象を想定している。1番のアイドルと2番のアイドルを足して3番のアイドルにはならない。
100番のアイドルが正解の時に101番を答えるとまったく不正解
回帰問題
1つの実数値を出力する
例えば商品の売り上げを予測する
実数は大小関係や加減乗除に意味がある対象を想定している。100円に200円を足すと300円。
売上は実数ではなく整数でも表現できるが、1000円の売り上げを1001円と予測しても「まったく不正解」とはならないので回帰問題
発展的な内容
回帰は目的変数が連続、分類は目的変数が離散、と説明をしたが、それ以外もある
例えば順位を学習するランキング学習など。
回帰は目的変数が間隔尺度、ランキング学習は目的変数が順序尺度、分類は目的変数が名義尺度、である。