質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

7332閲覧

機械学習の回帰を使うタイミング

nazo_o

総合スコア99

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2016/12/11 10:46

機械学習には回帰と呼ばれる手法があります。これは教師データを基に適切な回帰モデルを作成し、未知のインプットからアウトプットを予測するものだと理解しています。

これは統計学の重回帰分析と非常によく似ていますが、どのような時に機械学習の回帰を使い、どのような時に重回帰分析を使う、という使い分けはどのようになっているのでしょうか?

機械学習は、例えば画像から自動で独立変数を取得し、重回帰分析は人間が考えて独立変数を探さないといけないという違いでしょうか?

初歩的な質問で申し訳ありませんが、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

機械学習的な回帰と言っても、どのようにして、何を目的として、また、何故その手法を 使うと良いのかは問題設定による所が多く、何に使えるのか、何故最適化されるのかなどについては、数式などを解いてそれぞれの手法について個別に理解していくしかないので、大まかな枠組みだけ説明しますね。

回帰は重回帰だろうと機械学習の手法だろうとモデルが同じであれば解こうとしてる問題は同じです。使い分けと言うより数理モデルが正しければどちらの結果も同じ推定値に収束します。重回帰を最小二乗法で解いたもの。ベイズ理論の最尤推定で解いたもの。これらの重み係数の最適解は一致します。つまり、機械学習的な手法でも数理モデルが同じであれば、解いてる問題は本質的に重回帰であるに過ぎません。数理モデルが十分に正しいと検証出来ていれば統計学でいう重回帰でも同じ結果が出るいうことになります。より広く一般化したものが線形回帰モデルになります。

ただし、
nazo_oさんが言うように、重回帰は人間が立てた数理モデルを使うのであり、それが正しいというのが前提の元で、得られたデータから最も誤差が小さくなるように重みを決定することからレンジの広い基底関数の影響によって点を必ず通るような曲線であるものの値が発散するような動きを推定してしまうようなことがあります。機械学習的にはこの現象を過学習やオーバーフィッティングと呼んだりします。機械学習的な手法にはこれらの過学習を起こす基底関数に対して制約条件を課すことで、影響の大きすぎる期待関数の重みを調節し、過学習を防ぐなどの知見が見られます。

この制約の種類に応じてredge回帰(L2ノルム正則化、二乗和制約)、lasso回帰(L1ノルム正則化、1乗和制約)などと呼びます。それぞれ、使わない重みが0に近づくようにする。使わない重みを0にするなどの特徴があります。(L1は特に解が実際に疎であることが解っている場合に、圧縮センシング、スパースコーディングと言う観測しなくて済む点を特定する手法として使うことが出来ます。)

また、重回帰では相関係数によって変数の信頼度は測れますが、そこからどのように予測精度を上げれば良いのかという知見は得られません。データが非常に多ければ重回帰でも上手く回帰を行う事が出来ますが、少ないデータから回帰を行うと予測精度が上手く出ません。さらに次元が増えると簡単には解けない、あるいは解くのが現実的な時間では不可能なモデルになります。

これらの問題に対してはカーネルトリックと呼ばれる次元に対してデータ点が少ない場合でも正確な回帰が出来るような手法があったりします。

また、説明変数と目的変数の相関を調べる手法としてランダムフォレスト、RVM。

クラスタリングの識別面を調べるための決定木回帰、ロジスティック回帰、他クラスロジスティック回帰、SVMなど、回帰する曲線の予測自体が目的ではない回帰手法があります。

また、ニューラルネットやディープラーニングも非線形な回帰です。これらの内部では実は、シグモイド関数または、ソフトマックス関数と呼ばれる関数のパラメータを一般化線形モデルで表し、その重みを、それぞれのニューロンによって推定しているだけです。出力が決まった際の最適解は誤差逆伝搬法と呼ばれる方法で数理的に綺麗に解くことができます。

まとめると、重回帰も本質的には線形回帰モデルで、機械学習の手法にも線形回帰モデルを解く手法が多々存在し、どれを使うべきかは問題設定によると言うのが答えです。
基本的には重回帰で充分精度が出る問題では重回帰を、重回帰では解けない、精度が出ない、データが足りない、などであれば機械学習を使うと言った使い分けが出来ると言えるかもしれません。

補足

機械学習的な手法であっても相関のある変数を捨てる選択の自動化は難しいです。何故なら入力するデータ、出力して欲しいデータを決めるのは人間だからです。基本的に線形回帰モデルは変数同士が独立であることを仮定しています。独立のないデータをどうやって回帰するかですが、PCAと呼ばれる次元削減手法や混合ガウス分布のMAP推定(chinese restaurant process、変分ベイズEM)、最尤推定(GMMEM)などを使って独立な変数を選択します。機械学習的な回帰手法全てが相関を考慮せずに適応出来るわけではありません。

投稿2016/12/11 20:56

編集2016/12/11 21:30
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nazo_o

2016/12/20 02:57

詳しい説明、どうもありがとうございました!助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問