ps:本博客內容根據唐宇迪的的機器學習經典算法 學習視頻複製總結而來
http://www.abcplus.com.cn/course/83/tasks
問題描述:咱們將創建一個邏輯迴歸模型來預測一個學生是否被大學錄取。假設你是一個大學系的管理員,你想根據兩次考試的結果來決定每一個申請人的錄取機會。你有之前的申請人的歷史數據,你能夠用它做爲邏輯迴歸的訓練集。對於每個培訓例子,你有兩個考試的申請人的分數和錄取決定。爲了作到這一點,咱們將創建一個分類模型,根據考試成績估計入學機率。算法
數據下載:https://pan.baidu.com/s/1pNbtrjP機器學習
數據大概長這個樣函數
上圖來自https://www.jianshu.com/p/b4b5dd20e48a學習
設定閾值,根據閾值判斷錄取結果(此處設置爲50%,≥50%即判斷錄取)spa
要完成的模塊:
- sigmoid
: 映射到機率的函數3d
model
: 返回預測結果值code
cost
: 根據參數計算損失視頻
gradient
: 計算每一個參數的梯度方向blog
descent
: 進行參數更新博客
accuracy
: 計算精度
下面這段代碼僅僅是將過程可視化
上面的迭代次數過少,修改閾值爲1E-6,迭代次數大概須要110000次 。會發現值再次下降
這種策略雖然準確度較高,可是迭代次數多,計算量大
設定閾值 0.05,差很少須要40 000次迭代
至關不穩定,再來試試把學習率調小一些
速度快,效果和穩定性都差,須要很小的學習率
浮動仍然比較大,咱們來嘗試下對數據進行標準化 將數據按其屬性(按列進行)減去其均值,而後除以其方差。最後獲得的結果是,對每一個屬性/每列來講全部數據都彙集在0附近,方差值爲1。
它好多了!原始數據,只能達到達到0.61,而咱們獲得了0.38個在這裏! 因此對數據作預處理是很是重要的。
更多的迭代次數會使得損失降低的更多!
隨機梯度降低更快,可是咱們須要迭代的次數也須要更多,因此仍是用batch的比較合適!