我用你的數據集來創建真正簡單的模型。爲此,我在R中使用了Rattle庫。
輸入數據
rgbh1 - number of bins in RGB histogram, which value > @[email protected], in my case @[email protected] = 30 (340 is maximum value)
rgbh2 - number of bins in RGB histogram, which value > 0 (not empty)
hsvh1 - number of bins in HSV histogram, which value > @[email protected], in my case @[email protected] = 30 (340 is maximum value)
hsvh2 - number of bins in HSV histogram, which value > 0 (not empty)
countours - number of contours on image
PicFlag - flag indicating picture/photo (picture = 1, photo = 0)
數據探索
爲了更好地瞭解您的數據,這裏是圖片/照片組獨立變量的分佈圖(有關於y軸的百分比):
它清楚地表明,有潛在的力量變量。他們中的大多數都可以在我們的模型中使用。接下來,我已經創建了簡單的散點圖矩陣看到一些變量組合是否可能是有用的:
你可以看到countours數量的例如組合rgbh1看起來很有希望。
在下面的圖表中,您可以注意到變量之間也存在很強的相關性。 (一般來說,我們希望有很多變量具有較低的相關性,而只有有限數量的相關變量)。餅圖顯示有多大的相關性 - 充分圓圈表示1,空圓圈表示0,我的意見是,如果相關性超過.4可能不是好主意,在這個模型中兩個變量)
模型
然後我使用決策樹,隨機森林,邏輯迴歸和神經網絡創建簡單的模型(保持拉特爾的默認)。作爲輸入,我已經使用60/20/20分割(訓練,驗證,測試數據集)的數據。這是我的結果(請參閱谷歌,如果你不明白錯誤矩陣):
Error matrix for the Decision Tree model on pics.csv [validate] (counts):
Predicted
Actual 0 1
0 167 22
1 6 204
Error matrix for the Decision Tree model on pics.csv [validate] (%):
Predicted
Actual 0 1
0 42 6
1 2 51
Overall error: 0.07017544
Rattle timestamp: 2013-01-02 11:35:40
======================================================================
Error matrix for the Random Forest model on pics.csv [validate] (counts):
Predicted
Actual 0 1
0 170 19
1 8 202
Error matrix for the Random Forest model on pics.csv [validate] (%):
Predicted
Actual 0 1
0 43 5
1 2 51
Overall error: 0.06766917
Rattle timestamp: 2013-01-02 11:35:40
======================================================================
Error matrix for the Linear model on pics.csv [validate] (counts):
Predicted
Actual 0 1
0 171 18
1 13 197
Error matrix for the Linear model on pics.csv [validate] (%):
Predicted
Actual 0 1
0 43 5
1 3 49
Overall error: 0.07769424
Rattle timestamp: 2013-01-02 11:35:40
======================================================================
Error matrix for the Neural Net model on pics.csv [validate] (counts):
Predicted
Actual 0 1
0 169 20
1 15 195
Error matrix for the Neural Net model on pics.csv [validate] (%):
Predicted
Actual 0 1
0 42 5
1 4 49
Overall error: 0.0877193
Rattle timestamp: 2013-01-02 11:35:40
======================================================================
結果
正如你所看到的6.5%和8%之間的總體誤差率oscilates。我不認爲通過調整使用的方法的參數可以顯着提高此結果。有兩種方法如何降低總體誤差率:
- 添加更多不相關的變量(我們通常有100+的建模數據集的輸入變量和+/- 5-10是在最後的模型)
- 添加更多的數據(我們可以再調整模型不受過度擬合被嚇)
使用sofware:
代碼用於創建corrgram和散點圖(使用嘎嘎GUI產生其他輸出):
# install.packages("lattice",dependencies=TRUE)
# install.packages("car")
library(lattice)
library(car)
setwd("C:/")
indata <- read.csv2("pics.csv")
str(indata)
# Corrgram
corrgram(indata, order=TRUE, lower.panel=panel.shade,
upper.panel=panel.pie, text.panel=panel.txt,
main="Picture/Photo correlation matrix")
# Scatterplot Matrices
attach(indata)
scatterplotMatrix(~rgbh1+rgbh2+hsvh1+hsvh2+countours|PicFlag,main="Picture/Photo scatterplot matrix",
diagonal=c("histogram"),legend.plot=TRUE,pch=c(1,1))
那麼什麼區別從圖片中的照片?對象的數量? – Blender
我得出結論,他們之間的主要區別是顏色的數量。但是,正如我在前面的問題中所展示的,照片也可以具有少量的顏色......在大多數情況下,照片的邊緣並不多。但它也不是一個羅爾。 –
你是否嘗試過一些機器學習方法,如決策樹,邏輯迴歸,神經網絡?我認爲你必須僱用其中的一些方法來更好地解決這個n維問題。你可以發佈數據集,以便任何人都可以嘗試提出更好的解決方案嗎? –