使用 C++ 進行迴歸分析和最佳擬合線
簡介
迴歸分析是最基本的預測分析形式。
在統計學中,線性迴歸是一種對標量值與一個或多個解釋變數之間關係進行建模的方法。
在機器學習中,線性迴歸是一種監督演算法。這種演算法根據自變數預測目標值。
更多關於線性迴歸和迴歸分析
線上性迴歸/分析中,目標是一個實數或連續值,例如薪資、BMI 等。它通常用於預測因變數與一組自變數之間的關係。這些模型通常擬合線性方程,但是也存在其他型別的迴歸,包括高階多項式。
在將線性模型擬合到資料之前,有必要檢查資料點之間是否存線上性關係。這可以透過它們的散點圖來體現。演算法/模型的目標是找到最佳擬合線。
在本文中,我們將探討線性迴歸分析及其使用 C++ 的實現。
線性迴歸方程的形式為 Y = c + mx,其中 Y 是目標變數,X 是自變數或解釋引數/變數。m 是迴歸線的斜率,c 是截距。由於這是一個二維迴歸任務,因此模型在訓練期間嘗試找到最佳擬合線。並非所有點都必須完全位於同一條線上。一些資料點可能位於線上,一些則散佈在其周圍。線與資料點之間的垂直距離稱為殘差。根據點位於線下方還是上方,它可以是負數或正數。殘差是衡量線擬合數據好壞的指標。演算法繼續最小化總殘差誤差。
每個觀測值的殘差是 y(因變數)的預測值與 y 的觀測值之間的差值。
$$\mathrm{殘差\: =\: 實際 y 值\:−\:預測 y 值}$$
$$\mathrm{ri\:=\:yi\:−\:y'i}$$
評估線性迴歸模型效能最常用的指標稱為均方根誤差,或 RMSE。其基本思想是衡量模型預測與實際觀測值相比有多糟糕/錯誤。
因此,高 RMSE 是“糟糕的”,而低 RMSE 是“好的”。
RMSE 誤差給出為
$$\mathrm{RMSE\:=\:\sqrt{\frac{\sum_i^n=1\:(yi\:-\:yi')^2}{n}}}$$
使用 C++ 實現
#include<iostream> #define N 50 using namespace std; int main(){ int n, i; float x[N], y[N], sum_x=0, sum_x2=0, sum_y=0, sum_xy=0, a, b; /* Input */ cout<<"Please enter the number of data points.."; cin>>n; cout<<"Enter data:"<< endl; for(i=1;i<=n;i++){ cout<<"x["<< i <<"] = "; cin>>x[i]; cout<<"y["<< i <<"] = "; cin>>y[i]; } /* Calculating Required Sum */ for(i=1;i<=n;i++){ sum_x = sum_x + x[i]; sum_x2 = sum_x2 + x[i]*x[i]; sum_y = sum_y + y[i]; sum_xy = sum_xy + x[i]*y[i]; } /* Calculating a and b */ b = (n*sum_xy-sum_x*sum_y)/(n*sum_x2-sum_x*sum_x); a = (sum_y - b*sum_x)/n; /* Displaying value of a and b */ cout<<"Calculated value of a is "<< a << "and b is "<< b << endl; cout<<"Equation of best fit line is: y = "<< a <<" + "<< b<<"x"; return(0); }
輸出
Please enter the number of data points..5 Enter data: x[1] = 2 y[1] = 5 x[2] = 5 y[2] = 7 x[3] = 2 y[3] = 6 x[4] = 8 y[4] = 9 x[5] = 2 y[5] = 7 Calculated value of a is 4.97917 and b is 0.479167 Equation of best fit line is: y = 4.97917 + 0.479167x
結論
迴歸分析是一種非常簡單但功能強大的預測分析技術,在機器學習和統計學中均有應用。其思想在於其簡單性和自變數與目標變數之間潛在的線性關係。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP