我一直在學習神經網絡的課程,並不真正理解爲什麼我從邏輯迴歸的準確性分數和兩層神經網絡(輸入層和輸出層)中獲得不同的結果。輸出層使用sigmoid激活函數。根據我所瞭解的,我們可以在神經網絡中使用S形激活函數來計算概率。如果邏輯迴歸試圖完成的話,這應該是非常相似的。然後從那裏backpropogate使用梯度下降最小化錯誤。可能有一個簡單的解釋,但我不明白爲什麼準確度分數變化如此之大。在這個例子中,我沒有使用任何訓練或測試集,只是簡單的數據來展示我不明白的東西。神經網絡(無隱藏層)vs Logistic迴歸?
邏輯迴歸的準確性達到了71.4%。在下面的例子中,我只是爲'X'和結果'y'數組創建了數字。當結果等於'1'時,我故意讓'X'的數字更高,這樣線性分類器就可以具有一些準確性。
import numpy as np
from sklearn.linear_model import LogisticRegression
X = np.array([[200, 100], [320, 90], [150, 60], [170, 20], [169, 75], [190, 65], [212, 132]])
y = np.array([[1], [1], [0], [0], [0], [0], [1]])
clf = LogisticRegression()
clf.fit(X,y)
clf.score(X,y) ##This results in a 71.4% accuracy score for logistic regression
然而,當我實現一個神經網絡,沒有隱藏層,只是用S形的激活函數的單個節點的輸出層(總共,輸入和輸出層這樣兩層)。我的準確性分數大概是42.9%?爲什麼這與邏輯迴歸準確性得分顯着不同?爲什麼這麼低?
import keras
from keras.models import Sequential
from keras.utils.np_utils import to_categorical
from keras.layers import Dense, Dropout, Activation
model = Sequential()
#Create a neural network with 2 input nodes for the input layer and one node for the output layer. Using the sigmoid activation function
model.add(Dense(units=1, activation='sigmoid', input_dim=2))
model.summary()
model.compile(loss="binary_crossentropy", optimizer="adam", metrics = ['accuracy'])
model.fit(X,y, epochs=12)
model.evaluate(X,y) #The accuracy score will now show 42.9% for the neural network
太謝謝你了!我沒有意識到這些參數會產生很大的差異。我們瞭解了這兩種模型,並且我認爲精確度得分幾乎相同。我真的想了解神經網絡如何工作,這真的有助於澄清事情。看起來我仍然需要花幾個小時來查看神經網絡的參數,以充分和真實地理解一切。再次感謝! – James