看板 C_and_CPP 關於我們 聯絡資訊
本想用推文的討論, 無耐不小心一路按錯到回文 (應沒人這麼傻..) 這裡便討論一些小弟知道的東西 首先回 purpose 之推文 - 是,原po要做的是4個自變數的一階線性回歸。 在此說我所知道的回歸 1. 概述 回歸真正意義,是要求一條曲線,使得所有點到該線之距離和為最短。 而這條曲線可以是 Y=AX+B,也可以是 Y=AX^2+BX+C,甚至是更高項數, 而原 po 要用的是一階線性回歸,所以用的模型是 Y=AX+B。這裡有個重要的概念, 求出的 Y=AX+B 其中之係數 A, B,「並不能保證通過所有的資料點」, 「但能保證會使所有資料點到此曲線之距離和為最短(MSE)」 這和一般數值分析上的「內差法」還是「插值法」有些不同,內差法是給出一堆點, 而要求的是真正通過這所有點的一條曲線。詳細做法可查「牛頓差值法」 (內差/外差) 2. 公式 在了解定義之後,公式是從定義推導出來的。以一階線性單變數 回歸為例,設 y=ax+b,已知點有 (x0,y0),(x1,y1),(x2,y2) 三點, 根據點到線的距離公式,距離和可寫成 |y0-ax0-b|+|y1-ax1-b|+|y2-ax2-b| d0+d1+d2 = -------------------------------- (a^2+b^2)^(1/2) 要去求係數 a,b ,使得 d0+d1+d2 最小化, 對於一階線性單變數,已經有人推導出 a, b 之公式, 而一階線性多變數,由於計算繁雜,於是較沒人去推導出相關公式, 即使推導出相關公式,計算時間也較久,故大多人還是建議使用現有之 library 去做 或是直接用 SPSS 這類統計軟體進行協助。 以原po 所說的四個自變數,其模型會設成 f(x1,x2,x3,x4) = a1x1+a2x2+a3x3+a4x4+c, 如果數學夠強的話一樣, 目標式為 min {Sum(di) | i=1~n} 要求 a1,a2,a3,a4 及 c 之值, 由上述, 實在是沒有理由會有「無解」的情況發生 這問題實在覺得放到 數學/統計 版去問會好些.. ※補充一點, 這問題一大、變數一多的時候, 可以拿來當做是 GA 的測試模型。 -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.76.142 ※ 編輯: tropical72 來自: 180.177.76.142 (03/01 22:31)
purpose:蠻專業的。翻了一下統計學,多變數的迴歸公式好麻煩 03/01 22:47
purpose:最後說GA是指什麼? 03/01 22:48
tropical72:GA:基因演算法,期望能在有效時間內找出「近似最佳解」 03/01 23:00
tropical72:之演化式演算法,事實上多變數、多階回歸大多都建議用 03/01 23:01
tropical72:SPSS 去做,沒什麼人自己寫的. 03/01 23:01
purpose:瞭解,謝謝 03/01 23:02
ojasono:感謝回應 最後我是利用 AX = b 矩陣求法得到近似解的 03/02 02:38
ojasono:不過這方法我也試過OK! 03/02 02:38
竟然找到線性代數解法了.. [定理] 最小平方解之唯一性 若 A 為一 m*n 矩陣, 且其行向量為線性獨立,則 對每一 n*1 矩陣 b, 線性聯立方程組 Ax=b 有最小唯一解 t -1 t x = (A A) A b 原 po 應是用這個吧 ※ 編輯: tropical72 來自: 180.177.76.142 (03/02 09:22)