機械学習---線形回帰、重回帰、コスト関数

1. 線形回帰

回帰は教師あり学習の手法の 1 つです。この手法の核となる考え方は、連続的な統計データから数学的モデルを取得し、

この数学モデルを予測または分類に使用します。この方法で処理されるデータは多次元になる可能性があります。

回帰はダーウィンのいとこであるフランシス・ゴルトンによって発明されました。ゴルトンは 1877 年に次の目的で最初の回帰予測を完了しました。

前世代のエンドウ豆の種子 (親) のサイズに基づいて、次世代のエンドウ豆の種子 (子) のサイズ (高さ) を予測します。ゴルトンは

回帰分析は、人間の身長を含む多数の物体に適用されました。彼は、両親の身長が平均身長より高ければ、と結論づけた。

身長が高くても、子供も平均的な身長になる傾向がありますが、親ほど身長は高くありません。これは、「子供の身長は平均身長に戻る傾向がある」と表現できます。

戻る。ゴルトンは多くの研究でこのことに気づき、この研究方法を回帰と呼びました。

例:次のような住宅販売データがあります。

販売価格記録にない新しいエリアが入ってきた場合はどうなりますか?

解決策: 曲線を使用してデータをできるだけ正確に適合させ、新しい入力がある場合はそれを曲線に追加します。

この点に対応する値が返されます。直線を使用して当てはめると、次のようになります。

共通の概念とシンボル:

住宅販売記録テーブル: プロセスの入力データであるトレーニング セットまたはトレーニング データ

によると、一般に x と呼ばれます。

住宅販売価格: 一般に y と呼ばれる出力データ。

近似関数 (または仮説またはモデル): 通常、y=h(x) として記述されます。

学習データのエントリ数 (#training set): 学習データ 1 つは、入力データと出力データのペアからなる入力データです

次元 n (特徴の数、#features);

この例のフィーチャは 2 次元であり、結果は 1 次元になります。ただし、回帰法では多次元の特徴の問題を解決でき、結果は 1 次元の多離散値になります。

または、1 次元の連続値の問題特定結果。

知らせ:

(1) 線形回帰なので、学習した関数は一次関数、つまり直線関数になります。

(2) 単一変数なので、x は 1 つだけです。

単変量線形回帰モデル:

正の線形関係:

負の線形関係:

 関係ない:

y^=b0+b1x

この式を推定回帰直線と呼びます。

このうち、b0 は推定一次方程式の縦切片、b1 は推定一次方程式の傾き、y^ は独立変数 x が所定の値に等しいときの値です。

、y の推定値。

線形回帰の例:

自動車販売者によるテレビ広告の数と販売された自動車の数:

 

1週間の広告掲載数を6とすると、推定販売台数は5*6+10=40台となります。 

代数的導出:

行列の導出:

 

2. 重回帰

単純線形回帰と多重線形回帰の違い:

1. 単純な線形回帰との違い: 複数の独立変数 x

2. 重回帰モデル

y=β0+β1x1+β2x2+…+βpxp+e

そのうち: β1、β2 … βp はパラメータ値、e はエラー値

3. 重回帰式

E(y)=β0+β1x1+β2x2+…+βpxp

4. 重回帰式の推定

y_hat=b0+b1x1+b2x2+…+bpxp

1 つのサンプルは、β0、β1、β2....βp の点推定値 b0、b1、b2....bp を計算するために使用されます。

例: 宅配会社が商品を配達する

x1: 移動距離 x2: 移動回数 y: 総移動時間

3. コスト関数

コスト関数 (損失関数とも呼ばれる場所もあります) は、機械学習のすべてのアルゴリズムにおいて非常に重要です。

モデルをトレーニングするプロセスはコスト関数を最適化するプロセスであり、各パラメーターのコスト関数の偏導関数が勾配降下法で言及される勾配です。

度、過学習を防ぐときに追加される正則化項もコスト関数の後に追加されます。優れたコスト関数は、最も基本的な 2 つの条件を満たす必要があります。

この要件は、モデルの精度を評価でき、パラメーターに関して微分可能であることです。

線形回帰では、最も一般的に使用されるコスト関数は平均二乗誤差 (平均二乗誤差) であり、その具体的な形式は次のとおりです。

パラメータの見つけ方:

最小二乗法: これは直接的な数学的解の公式ですが、X がフルランクであることが必要です。

勾配降下:

勾配降下の原理: 関数を山に例えると、私たちはある丘の中腹に立って周囲を見渡し、どちらの方向に少しずつ降りていきます。

最も速く落ちることができます。

方法:

(1) まず、次のステップへのステップのサイズを決定します。これを学習率と呼びます。

(2) 初期値を任意に与える。

(3)下方向を決定し、所定のペースで下方向に移動し、初期値を更新する。

(4) 下降高さが一定の規定値未満になった場合、下降を停止します。

勾配降下法の特徴:

(1) 初期点が異なると最小値も異なるため、勾配降下法では極小値のみが得られます。

(2) 最小値に近づくほど、減少速度は遅くなります。

パラメータの初期値が極小値の位置にある場合、導関数は 0 でなければならないため、パラメータ値は変化しません。

正しいα値が得られれば、コスト関数はどんどん小さくなるはずです。

いつでも Q 値を観察し、コスト関数が小さくなればOK、そうでなければ小さい値を採用します。

上図から分かるように、初期値が異なれば得られる最小値も異なるため、勾配降下法では極小値のみが求められます。

下降ステップの大きさは非常に重要で、小さすぎると関数の最小値を求める速度が非常に遅くなり、大きすぎるとエラーが発生する可能性があります。

ミニアムのオーバーシュート現象が発生しています。

 学習率の値を取得した後にコスト関数が増加していることが判明した場合は、学習率を下げる必要があります。

def gradientDescent(x,y,theta,alpha,m,numIterations):
    xTrans =x.transpose()
    for i in range(0,numIterations):
        hypothesis=np.dot(x,theta)
        loss=hypothesis-y
        #cost np.sum(loss *2)/(2 m)
        #print("Iteration %d Cost:%f"%(i,cost))
        gradient=np.dot(xTrans,loss)/m
        theta=theta-alpha*gradient
    return theta

 

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/weixin_43961909/article/details/132012008