關於python機器學習演算法,我們學了KNN,kmeans,樸素貝葉斯,除了這些還有哪些演算法簡單?我想通過PM2.5,PM10,SO2,O3這些污染物對空氣質量指數預測,可以用線性回歸和決策樹演算法嗎?或者還有什麼適合的比較簡單的演算法?

數據是這樣的。


儘管線性模型是最簡單的機器學習技術之一,但它們仍然是進行預測的強大工具。

代碼格式亂可以看原文鏈接:

http://tecdat.cn/?p=11387?

tecdat.cn

這尤其是由於線性模型特別容易解釋這一事實。在這裡,我將討論使用空氣質量數據集的普通最小二乘回歸示例解釋線性模型時最重要的方面。

空氣質量數據集

空氣質量數據集包含對在紐約獲得的以下四個空氣質量指標的154次測量:

  • 臭氧:平均臭氧水平,以十億分之一為單位
  • Solar.R:太陽輻射
  • 風:平均風速,每小時英里
  • 溫度:每日最高溫度,以華氏度為單位

我們將通過刪除所有NA 並排除 MonthDay 列來清理數據集 ,這些列和 列不應充當預測變數。

data(airquality) ozone &

數據探索和準備

預測任務如下:根據太陽輻射,風速和溫度,我們可以預測臭氧水平嗎?要查看線性模型的假設是否適合手頭的數據,我們將計算變數之間的相關性:

# scatterplot matrix plot(ozone)

?

# pairwise variable correlations cors &

## Ozone Solar.R Wind Temp ## Ozone 1.0000000 0.3483417 -0.6124966 0.6985414 ## Solar.R 0.3483417 1.0000000 -0.1271835 0.2940876 ## Wind -0.6124966 -0.1271835 1.0000000 -0.4971897 ## Temp 0.6985414 0.2940876 -0.4971897 1.0000000

# which variables are highly correlated, exclude self-correlation print(cor.names)

## [1] "Wind+Ozone: -0.61" "Temp+Ozone: 0.7" "Ozone+Wind: -0.61" ## [4] "Ozone+Temp: 0.7"

由於臭氧參與兩個線性相互作用,即:

  • 臭氧與溫度呈正相關
  • 臭氧與風負相關

這表明應該有可能使用其餘特徵來形成預測臭氧水平的線性模型。

分為訓練和測試集

我們將抽取70%的樣本進行訓練,並抽取30%的樣本進行測試:

set.seed(123) N.train &

研究線性模型

為了說明解釋線性模型的最重要方面,我們將通過以下方式訓練訓練數據的普通最小二乘模型:

為了解釋模型,我們使用以下 summary 函數:

model.summary &

## ## Call: ## Residuals: ## Min 1Q Median 3Q Max ## -36.135 -12.670 -2.221 9.420 65.914 ## ## Coefficients: ## Estimate Std. Error t value Pr(&>|t|) ## (Intercept) -65.76604 22.52381 -2.920 0.004638 ** ## Solar.R 0.05309 0.02305 2.303 0.024099 * ## Temp 1.56320 0.25530 6.123 4.03e-08 *** ## Wind -2.61904 0.68921 -3.800 0.000295 *** ## --- ## Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 ## ## Residual standard error: 18.17 on 74 degrees of freedom ## Multiple R-squared: 0.5924, Adjusted R-squared: 0.5759 ## F-statistic: 35.85 on 3 and 74 DF, p-value: 2.039e-14

殘差

我們獲得的第一條信息是殘差。

殘留中值表明,該模型通常預測的臭氧值略高於觀測值。但是,最大值很大,表明某些離群值預測也太低了。查看數字可能有點抽象,因此讓我們根據觀察值繪製模型的預測:

res &

?

係數

現在我們了解了殘差,讓我們看一下係數。我們可以使用該 coefficients 函數來獲取模型的擬合係數:

## (Intercept) Solar.R Temp Wind ## -65.76603538 0.05308965 1.56320267 -2.61904128

請注意,模型的截距值非常低。這是在所有獨立值均為零的情況下模型將預測的值。 低係數 Solar.R 表示太陽輻射對預測臭氧水平沒有重要作用,這不足為奇,因為在我們的探索性分析中,它與臭氧水平沒有很大的相關性。 係數 Temp 表示溫度高時臭氧水平高(因為臭氧會更快形成)。 係數 Wind 告訴我們快風時臭氧水平會降低(因為臭氧會被吹走)。

與係數關聯的其他值提供有關估計的統計確定性的信息。

## Estimate Std. Error t value Pr(&>|t|) ## (Intercept) -65.76603538 22.52380940 -2.919845 4.638426e-03 ## Solar.R 0.05308965 0.02305379 2.302860 2.409936e-02 ## Temp 1.56320267 0.25530453 6.122894 4.034064e-08 ## Wind -2.61904128 0.68920661 -3.800081 2.946349e-04

  • Std. Error 是係數估計的標準誤差
  • t value 以標準誤差表示係數的值
  • Pr(&>|t|) 是t檢驗的p值,表示檢驗統計量的重要性

標準誤差

係數的標準誤差定義為特徵方差的標準偏差:

?

在R中,可以通過以下方式計算模型估計的標準誤差:

## (Intercept) Solar.R Temp Wind ## (Intercept) 507.32198977 2.893612e-02 -5.345957524 -9.940961e+00 ## Solar.R 0.02893612 5.314773e-04 -0.001667748 7.495211e-05 ## Temp -5.34595752 -1.667748e-03 0.065180401 6.715467e-02 ## Wind -9.94096142 7.495211e-05 0.067154670 4.750058e-01

## (Intercept) Solar.R Temp Wind ## 22.52380940 0.02305379 0.25530453 0.68920661

現在, 你可能想知道這些值的 vcov 來源。它定義為設計矩陣的方差-協方差矩陣,該矩陣按誤差的方差標準化:

## (Intercept) Solar.R Temp Wind ## (Intercept) 507.32198977 2.893612e-02 -5.345957524 -9.940961e+00 ## Solar.R 0.02893612 5.314773e-04 -0.001667748 7.495211e-05 ## Temp -5.34595752 -1.667748e-03 0.065180401 6.715467e-02 ## Wind -9.94096142 7.495211e-05 0.067154670 4.750058e-01

用於標準化的方差-協方差矩陣的方差是誤差的估計方差,其定義為

?

cov.unscaled 參數是簡單地所有的方差-協方差矩陣 :

# include intercept as a feature via model.matrix X &

## [1] "Is this the same? TRUE"

t值

t值定義為

?

在R中

## (Intercept) Solar.R Temp Wind ## -2.919845 2.302860 6.122894 -3.800081

p值

在所有係數βi=0 的假設下計算p值。t值遵循t分布

model.df &

自由程度。線性模型的自由度定義為

?

其中n 是樣本數,p 是特徵數(包括inctercept)。p值表示獲得的係數估計純粹是偶然地與零不同的可能性。因此,低p值表明變數與結果之間存在顯著關聯。

進一步統計

summary 函數提供以下附加統計信息 :多個R平方,調整後的R平方和F統計。

殘留標準誤差

顧名思義,殘留標準誤差是模型的平均RSS(MSE)的平方根:

## [1] 18.16979

殘留標準誤差僅表示模型的平均精度。在這種情況下,該值非常低,表明該模型具有良好的擬合度。

多個R平方

R平方的倍數表示確定係數。它定義為估計值與觀察到的結果之間的相關性的平方:

## [1] 0.5924073

與[-1,1] [-1,1]中的相關性相反,R平方在[0,1] [0,1]中。

調整後的R平方

調整後的R平方值會根據模型的複雜性來調整R平方:

?

其中nn是觀察數,pp是特徵數。因此,調整後的R平方可以像這樣計算:

n &

## [1] 0.5758832

如果R平方和調整後的R平方之間存在相當大的差異,則表明可以考慮減少特徵空間。

F統計

F統計量定義為已解釋方差與無法解釋方差的比率。為了進行回歸,F統計量始終指示兩個模型之間的差異,其中模型1(p1p1)由模型2(p2p2)的特徵子集定義:

?

F統計量描述模型2的預測性能(就RSS而言)優於模型1的程度。報告的默認F統計量是指訓練後的模型與僅截距模型之間的差異:

## ## Call: ## ## Coefficients: ## (Intercept) ## 36.76

?

因此,測試的零假設是唯一的截距-模型的擬合和指定的模型是相等的。如果可以拒絕原假設,則意味著指定模型比原模型具有更好的擬合度。

讓我們通過手工計算得出這個想法:

rss &

## [1] 35.85126

在這種情況下,F統計量具有較大的值,這表明我們訓練的模型明顯優於僅攔截模型。

置信區間

置信區間是解釋線性模型的有用工具。默認情況下, confint 計算95%置信區間(±1.96σ^±1.96σ^):

ci &

## (Intercept) Solar.R ## "95% CI: [-110.65,-20.89]" "95% CI: [0.01,0.1]" ## Temp Wind ## "95% CI: [1.05,2.07]" "95% CI: [-3.99,-1.25]"

這些值表明模型對截距的估計不確定。這可能表明需要更多數據才能獲得更好的擬合度。

檢索估計值的置信度和預測間隔

通過提供自interval 變數,可以將線性模型的預測轉換為間隔 。這些間隔給出了對預測值的置信度。間隔有兩種類型:置信間隔和預測間隔。讓我們將模型應用於測試集,使用不同的參數作為 interval 參數,以查看兩種間隔類型之間的差異:

# compute confidence intervals (CI) for predictions: preds.ci &

## fit lwr upr Method ## [1,] "-4.42397219873667" "-13.4448767773931" "4.59693237991976" "CI" ## [2,] "-22.0446990408131" "-61.0004555440645" "16.9110574624383" "PI"

置信區間是窄區間,而預測 區間是寬區間。它們的值基於level 參數指定的提供的公差/重要性水平 (默認值:0.95)。

它們的定義略有不同。給定新的觀測值xx,配置項和PI定義如下

?

其中tα/ 2,dftα/ 2,df是df = 2df = 2自由度且顯著性水平為αα的t值,σerrσerr是殘差的標準誤差,σ2xσx2是獨立特徵的方差, x(x)表示特徵的平均值。


編輯一下,問題修改過了,原回答是針對原問題「機器學習哪個演算法最簡單」給出的emmm(當時也不知道題主具體用意)。

可以簡單採用L(linear/logistic)R來處理這些樣本數據,進行回歸預測。二者實現的不同之處只在於loss function與label的形式。

這裡污染指數是你的label(記得先數值化),linear建議按程度輕重簡單映射至1~n個整數,logistic則建議map成one-hot。由於label不只有2個維度,這裡的logistic嚴格來說應該是softmax。不過這兩者之中還是linear要更簡單一些,無論是從形式上還是理解上√


卸腰。線性回歸。最小二乘法引出內種,最簡單沒有之一#手動狗頭


謝邀 這樣的問題網上到處是答案 還是自己知乎下吧


牆裂推薦LSTM (RNN系列)

原因:

  1. 實現簡單,現在主流的機器學習框架 Tensorflow、Pytorch都有現成的API;
  2. 原理簡單,這個相對而言,當然沒有KNN、kMeans簡單,但是LSTM非常容易理解,推薦講解:https://colah.github.io/posts/2015-08-Understanding-LSTMs/;
  3. 適合問題背景,LSTM適合於具有長期和短期記憶性的時序預測/分類問題,以及單變數和多變數的輸入問題,空氣質量的預測必定具備一定的記憶性(因為這是一個非線性系統,或者說是一個非線性動力學過程;昨天的空氣質量必然會影響今天的空氣質量,具體這個影響要考慮其他諸多因素,比如天氣、溫度、濕度等等);
  4. 變形豐富,想要預測未來很多天的空氣質量嗎?可以試試seq2seq;想要看到哪一天對預測的影響比較大嗎?可以試試attention;想要增加輸入的信息嗎?多變數輸入LSTM非常方便;想要構建多模態模型嗎?LSTM+其他模型;等等,絕對可以為你打開新世界的大門。

其他方法在這裡就不贅述了,建議有時間可以多學幾個,順便做個benchmark,列個表對比一下,分析分析,然後再改進一下,說不定一篇論文就出來了。


線性回歸。

決策樹


推薦閱讀:
相关文章