機械学習が何かと問われれば、様々な答えがあるかと思いますが、私は「未知のデータに対して予測を立てる」ための技術だと理解しています。過去のデータをもとにして、感や経験ではなく科学的なプロセスで予測・判断を行うことが機械学習のゴールです。機械学習のアルゴリズムには様々なものがあり、これを使えば終わりという単純なものではありません。未知のデータにどれほど当てはまるのかを見つけ出すために、この分野では新たなアルゴリズムやアルゴリズムのパラメータを調整する方法がどんどん改善されています。機械学習ののなかで最もシンプルで、基礎となるのが「最小二乗法による回帰分析」です。私はビールが大好きで、いつでもどこでもずっと飲んでいます。仕事終わりの冷たいビールはおいしいですよね。生産者からすると、作りすぎると余って困るし、足りないと私が激怒します。いつでも新鮮なビールを飲むためには、数か月先の需要を読みながら生産を続ける必要があります。月別のビールの需要を予測したいビールの需要は毎月変化しますが、ある月に売れるビールの量は比較的安定しています。350))夏場は多く、2月は日数が少ないので少なく、1月と12月は集計タイミングで凸凹になっているんでしょうか。それとも忘年会で大量消費されるんでしょうか。図に示したデータはガタガタですが、その月々に固有のノイズが加わって、実際の出荷量が得られていると仮定します。この仮定が正しければ、ノイズを取り払ったなめらかな曲線を見出すことで、来年度の出荷量を予測することが可能になります。ノイズが加わるので、正確な予測にはなりませんが、確率的には下の図のような曲線状の値になる可能性が最も高くなるでしょう。この予測を使うことで、1年前の出荷量をそのまま使うよりも正確に需要を読んで生産することができます。2)二乗誤差で曲線のあてはまらなさを評価ここでさらに、上の図で示したような曲線が4次関数で表されるものと仮定します。1~12の値を代入すると、その月の需要予測が計算されます。未知のパラメータで、この値を変化させて、図のデータに最もフィットするものを導き出します。フィットするものを探すための手がかりが、どれだけフィットしているのかを表す指標の一つである「二乗誤差」です。1月~12月までの合計を表します。月の出荷量を表します。計算される値は、予測される値と実際に観測された値の差を二乗した値の合計です。二乗する理由は、正と負の値が混じっていても、あてはまらなさを数字の大きさで測れるようにするためです。特別な意味があるわけではありません。計算するために、次の連立方程式を解きます。0になることを表しています。多数の変数を持つ関数に対して、特定の変数で微分するのが偏微分です。ある関数が最大または最小値をとるときには、微分係数が0になります。混ざるのを避けるためです。次に使うテクニックが「合成関数の微分」です。二乗しているカッコ内の式を以下の関数に置き換えます。関数とみなしています。この関数を代入して、次式を得ます。「合成関数の微分」の公式を適用します。微分したものを掛けた式」にします。1次関数の微分となります。代入して、次式を得ます。使って、式を書き換えます。使った和の計算は、次の行列で表された式となります。行列の転置を表します。縦ベクトルが横ベクトルに、行列は左上から右下にかけて対角線で折り返したものになります。かけて、これで最小二乗法による回帰分析の導出は完了です。近似ではない解析的な値が導出できたので、Rで値を計算してみます。0.2243251Rで回帰分析を行うlm関数の結果と比較してみましょう。4次多項式で回帰することを指定しています。計算結果はオブジェクトfitに格納されます。係数は、fit$coefficientsで参照できます。以下に示すように、関数の形はよく似ていて、ほぼ重なっています。係数のわずかな違いは、lmが実際には最小二乗法ではなく近似で解を計算しているために生じます。5次関数のほうがいいかも?1年間のデータだけでなく、複数年のデータを使って回帰したほうがいいかも?最小二乗法以外の回帰アルゴリズムを使ったほうがいいかも?といったことを考えていくことが、機械学習を使ったデータサイエンスになります。まとめ機械学習の初歩である最小二乗法を使った回帰の例を示しました。実際にここで書いたような数式の変換を手で動かすことはありません。Rでは、回帰を行うための関数が用意されています。最小二乗法のポイントは、重みを定めたときの「あてはまらなさ」を示す関数を用意して、その関数の値が最も小さくなるような解を求めていることです。計算のポイントは微分したときに値がゼロになる重みを、偏微分という方法を使うことです。することで、他の変数の値を、とりあえず無視することができます。「最小二乗法による回帰分析」で理解する機械学習の初歩rmarkdownを使った組み込みShinyアプリケーションベルヌーイ分布と二項分布はてなブログをはじめよう!phmpkさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。