線形回帰のの最小二乗

作者: リン・ハーン小さな夢作成日:2016年12月18日 11:36:26 更新日:2016年12月18日 11:41:31

線形回帰のの最小二乗


  • "つ目 序言

    この間,機械を学ぶを学び,第5章のLogistic回帰を学び,かなり苦しいと感じた. この追溯源は,Logistic回帰から線回帰,そして最小二乗法まで. 最終的には,高等数学 (第6版・下冊) 第9章第10節の最小二乗法に設定され,最小二乗法の背後の数学原理がどこから来たのかを理解した. 最小二乗は,最適化問題における経験式の構築の一つの実装方法である. その仕組みを理解することは,Logistic回帰がベクトルマシンをサポートする学習を理解するのに有益である.

  • 2 背景知識

    最小二乗の出現の歴史的背景は興味深い.

    1801年,イタリアの天文学者ジュセッペ・ピアツィが最初の小惑星,谷神星を発見した.40日間の追跡観察の後,谷神星が太陽の後ろまで走るため,ピアツィは谷神星の位置を失ってしまった.その後,世界中の科学者はピアツィの観測データを使って谷神星を探し始めたが,ほとんどの人たちの計算の結果では結果が出なかった.24歳の谷神星も谷神星の軌道を計算した.オーストリアの天文学者ハイリッヒ・オルブスは谷神星の軌道を計算して再び発見した.

    高司が使った最小二乗の方法については,1809年に彼の著書『天体運動論』で公表され,フランスの科学者レジェンドは1806年に独立しての最小二乗を発見したが,当時知られていなかったため沈黙した.両者は,最小二乗の原理を最初に創出した者が誰なのかについて論争した.

    1829年,ゴースは最小二乗法による最適化効果が他の方法よりも強いことを証明した.ゴース-マルコフ定理を参照.

  • 3 知識の活用

    最小二乗の核心は,すべてのデータ偏差の平方と最小を保証することである.

    横幅と長さのデータを収集するとしたら

    img

    このデータを使って, Python で散点図を描きます.

    img

    画像のコードは以下の通りです.

    import numpy as np                # -*- coding: utf-8 -*
    import os
    import matplotlib.pyplot as plt
    def drawScatterDiagram(fileName): # 改变工作路径到数据文件存放的地方
        os.chdir("d:/workspace_ml")
        xcord=[];ycord=[]
        fr=open(fileName)
        for line in fr.readlines():
            lineArr=line.strip().split()
            xcord.append(float(lineArr[1]));ycord.append(float(lineArr[2]))
        plt.scatter(xcord,ycord,s=30,c='red',marker='s')
        plt.show()
    

    この2つの点から,この2つの点を取り除くと,この2つの式になります. 152 についてa+b=15.5 328これは,a+b=32.4です. この2つの方程式を解くと,a=0.197,b=-14.48になります. このグラフは,xとyの両辺に等しいです.

    img

    A,b が最適ですか? 専門用語では,a,b がモデルで最適ですか? この質問に答える前に,次の質問に答える必要があります.

    答えは:すべてのデータの偏差の平方と最小を保証する. 原則については,後で説明します. まず,このツールを使用して a と b を最もうまく計算する方法を見てみましょう. すべてのデータの平方と M を仮定します.

    img

    この方程式では,yiとxiが既知の値で,xはxの値です.

    この式は,a,b を自変数と,M を因数とする二次関数である.

    高数では,単数関数に対して極値がどのようにあるかを思い出してください. 導関数というツールを使います. 二元関数では,導関数を使います. しかし,ここに導関数は新しい名前の偏導関数があります. 偏導関数とは,2つの変数のうちの1つを定数として求めることです. 偏微分数Mについて解き明かすことができます.

    img

    この2つの方程式では,xとyiの両方が知られています.

    AとBは簡単です. ウィキペディアのデータを使っているので,ここで答えを直接使って適切な画像を描きます.

    img

    # -*- coding: utf-8 -*importnumpy as npimportosimportmatplotlib.pyplot as pltdefdrawScatterDiagram(fileName):
    # 改变工作路径到数据文件存放的地方os.chdir("d:/workspace_ml")xcord=[];
    # ycord=[]fr=open(fileName)forline infr.readlines():lineArr=line.strip().split()xcord.append(float(lineArr[1]));
    # ycord.append(float(lineArr[2]))plt.scatter(xcord,ycord,s=30,c='red',marker='s')
    # a=0.1965;b=-14.486a=0.1612;b=-8.6394x=np.arange(90.0,250.0,0.1)y=a*x+bplt.plot(x,y)plt.show()
    # -*- coding: utf-8 -*
    import numpy as np
    import os
    import matplotlib.pyplot as plt
    def drawScatterDiagram(fileName):
        #改变工作路径到数据文件存放的地方
        os.chdir("d:/workspace_ml")
        xcord=[];ycord=[]
        fr=open(fileName)
        for line in fr.readlines():
            lineArr=line.strip().split()
            xcord.append(float(lineArr[1]));ycord.append(float(lineArr[2]))
        plt.scatter(xcord,ycord,s=30,c='red',marker='s')
        #a=0.1965;b=-14.486
        a=0.1612;b=-8.6394
        x=np.arange(90.0,250.0,0.1)
        y=a*x+b
        plt.plot(x,y)
        plt.show()
    
  • 4 原則を調査する

    モデルパラメータを最適化するために,なぜ絶対値と最小値ではなく,モデル予測データと実際のデータとの差の平方根を使うのか?

    この質問に答えられた人は,リンクを参照してください.http://blog.sciencenet.cn/blog-430956-621997.html

    個人的にはこの説明が非常に興味深いと感じています. 特に,その仮定は,f (x) のすべての偏差点にノイズがあるということです.

    ある点の偏差が大きいほど,ノイズが大きいほど,この点が現れる可能性が小さい.したがって,偏差の程度xが発生確率f (x) に満たす関係は何ですか? 正規分布です.

    img

    img

  • 5. 拡張する

    上記は2次元的な状況である.つまり,1つの自己変数しかない.しかし,現実世界では,最終結果に影響を与えるのは複数の要因の重複である.つまり,自己変数には複数の状況がある.

    一般的なN元線形関数について,線形代数のの中の逆行列で解くのはOKである.適当な例が一時的に見つからないため,引数としてここに残る.

    自然界は,単純線形ではなく,多項式結合であり,より高度な内容である.

  • 参考文献

原作,複製は許されている.複製の際には,超リンク形式で記事の原発,著者情報および本声明を記載してください.そうでなければ法的責任を追及します.http://sbp810050504.blog.51cto.com/2799422/1269572


もっと