本文轉載自:https://www.jianshu.com/p/99eb7dcd0114,如有侵權,請及時聯繫刪除
logistic分佈函數和密度函數,手繪大概的圖像
- 分佈函數:-
- 密度函數:
其中,μ表示位置參數,γ爲形狀參數。logistic分佈比正太分佈有更長的尾部且波峯更尖銳
LR推導,基礎5連問
- f(x) = wx + b
- y = sigmoid(f(x))
- 可以看作是一次線性擬合+一次sigmoid的非線性變化
- 對於lr來說事情只有發生和不發生兩種可能,對於已知樣本來說,滿足伯努利的概率假設:
- p(y=1/x,θ) = h(θ,x)
- p(y=0/x,θ) = 1-h(θ,x)
- p(y/x,θ) = h(θ,x)^y · (1-h(θ,x))^(1-y)
- 第i個樣本正確預測的概率如上可得
- 機率odds
- 數據特徵下屬於正例及反例的比值
- ln(y/(1-y))
- 第i個樣本正確預測的概率如上可得每條樣本的情況下
- 綜合全部樣本發生的概率都要最大的話,採取極大似然連乘可得:
- ∏(h(θ,x)^y · (1-h(θ,x))^(1-y))
- 通常會對極大似然取對數,得到損失函數,方便計算
- ∑ylogh(θ,x)+(1-y)log(1-h(θ,x))最大
- 及-1/m · ∑ylogh(θ,x)+(1-y)log(1-h(θ,x))最小
- 損失函數求偏導,更新θ
- θj+1 = θj - ∆·∂Loss/∂θ =θj - ∆·1/m·∑x·(h-y)
- ∆爲學習率
梯度下降如何並行化?
- 首先需要理解梯度下降的更新公式:
- ∑處的並行,不同樣本在不同機器上進行計算,計算完再進行合併
同一條樣本不同特徵維度進行拆分,
處並行,把
LR明明是分類模型爲什麼叫回歸?
觀測樣本中該特徵在正負類中出現概率的比值滿足線性條件,用的是線性擬合比率值,所以叫回歸
爲什麼LR可以用來做CTR預估?
- 點擊行爲爲正向,未點擊行爲爲負向,ctr需要得到點擊行爲的概率,lr可以產出正向行爲的概率,完美match
- 實現簡單,方便並行,計算迭代速度很快
- 可解釋性強,可結合正則化等優化方法
滿足什麼樣條件的數據用LR最好?
- 特徵之間儘可能獨立
- 不獨立所以我們把不獨立的特徵交叉了
- 還記得FM的思路?
- 不獨立所以我們把不獨立的特徵交叉了
- 離散特徵
- 連續特徵通常沒有特別含義,31歲和32歲差在哪?
- 離散特徵方便交叉考慮
- 在異常值處理上也更加方便
- 使的lr滿足分佈假設
- 什麼分佈假設?
- 在某種確定分類上的特徵分佈滿足高斯分佈
-
C1和C2爲正負類,觀測樣本中該特徵在正負類中出現概率的比值滿足線性條件的前提就是P服從正太分佈
-
實際中不滿足的很多,不滿足我們通常就離散化,oneHotEncode
此處就用到了全概率公式推導,有可能會回到寫出全概率公式&貝葉斯公式的問題中
LR爲什麼使用sigmoid函數作爲激活函數?其他函數不行嗎?
思路一:lr的前提假設就是機率odds滿足線性迴歸,odds又爲正負樣本的log比,參見滿足什麼樣條件的數據用LR最好?
中第三點公式的展開
思路二:Exponential model 的形式是這樣的:假設第i個特徵對第k類的貢獻是
,則數據點
二分類上:
- 化簡即爲sigmoid
- 以上思路源自:PRML(Pattern Recognition and Machine Learning)
思路三:glm有滿足指數族的性質,而作爲lr作爲y滿足伯努利分佈的的線性條件,伯努利分佈的指數族形式就是sigmoid,或者也叫連接函數
利用機率odds的意義在哪?
- 直接對分類模型進行建模,前提假設爲非常弱的指定類別上自變量的條件分佈滿足高斯
- 由預測0/1的類別擴展到了預測0-1的概率值
- 任意階可導的優秀性質
Sigmoid函數到底起了什麼作用?
- 數據規約:[0,1]
- 線性迴歸在全量數據上的敏感度一致,sigmoid在分界點0.5處更加敏感
- sigmoid在邏輯迴歸的參數更新中也不起影響,避免了更新速度不穩定的問題
LR爲什麼要使用極大似然函數,交互熵作爲損失函數?那爲什麼不選平方損失函數的呢
- 更新速度只與真實的x和y相關,與激活函數無關,更新平穩
- 比如mse就會導致更新速度與激活函數sigmoid掛鉤,而sigmoid函數在定義域內的梯度大小都比較小(0.25>x),不利於快速更新
- mse下的lr損失函數非凸,難以得到解析解
LR中若標籤爲+1和-1,損失函數如何推導?
- way1:把0-1的sigmoid的lr結果Y映射爲2y-1,推導不變
- way2:把激活函數換成tanh,因爲tanh的值域範圍爲[-1,1],滿足結果,推導不變
way3:依舊以sigmoid函數的話,似然函數(likelihood)模型是:
,重複極大似然計算即可
如果有很多的特徵高度相關或者說有一個特徵重複了100遍,會造成怎樣的影響?
爲什麼要避免共線性?
- 如果在損失函數最終收斂的情況下,其實就算有很多特徵高度相關也不會影響分類器的效果
- 每一個特徵都是原來特徵權重值的百分之一,線性可能解釋性優點也消失了
- 增加訓練收斂的難度及耗時,有限次數下可能共線性變量無法收斂,係數估計變得不可靠
- 泛化能力變差,訓練是兩列特徵可能會共線性,當線上數據加入噪聲後共線性消失,效果可能變差
LR可以用核麼?可以怎麼用?
結論:可以,加l2正則項後可用
原因:
- 核邏輯迴歸,需要把擬合參數w表示成z的線性組合及representer theorem理論。這邊比較複雜,待更新,需要了解:
- w拆解的z的線性組合中的係數α來源
- representer theorem 的證明
- 凡是進行L2正則化的線性問題我們都能使用核函數的技巧的證明
- 如何將將W*表示成β的形式帶到我們最佳化的問題
LR中的L1/L2正則項是啥?
- L1正則項:爲模型加了一個先驗知識,未知參數w滿足拉普拉斯分佈,
,u爲0。在lr模型損失函數中新增了
L2正則項:爲模型加了一個先驗知識,未知參數w滿足0均值正太分佈,
,u爲0。在lr模型損失函數中新增了
lr加l1還是l2好?
這個問題還可以換一個說法,l1和l2的各自作用。
剛纔我們說到l1對未知參數w有個前提假設滿足拉普拉斯分佈,l2對未知參數的假設則是正太分佈,且都是零均值,單純從圖像上我們就可以發現,拉普拉斯對w的規約到0的可能性更高,所以對於特徵約束強的需求下l1合適,否則l2
正則化是依據什麼理論實現模型優化?
結構風險最小化:在經驗風險最小化的基礎上(也就是訓練誤差最小化),儘可能採用簡單的模型,以此提高泛化預測精度。
LR可以用來處理非線性問題麼?
- 特徵交叉,類似fm
- 核邏輯迴歸,類似svm
- 線性變換+非線性激活,類似neural network
爲什麼LR需要歸一化或者取對數?
模型中對數據對處理一般都有一個標答是提升數據表達能力,也就是使數據含有的可分信息量更大
- 工程角度:
- 加速收斂
- 提高計算效率
- 理論角度:
- 梯度下降過程穩定
- 使得數據在某類上更服從高斯分佈,滿足前提假設,這個是必須要答出來的
- 歸一化和標準化之間的關係
爲什麼LR把特徵離散化後效果更好?離散化的好處有哪些?
- 原來的單變量可擴展到n個離散變量,每個變量有單獨的權重,相當於爲模型引入了非線性,能夠提升模型表達能力,加大擬合
- 離散後結合正則化可以進行特徵篩選,更好防止過擬合
- 數據的魯棒性更好,不會因爲無意義的連續值變動導致異常因素的影響,(31歲和32歲的差異在哪呢?)
- 離散變量的計算相對於連續變量更快
邏輯迴歸估計參數時的目標函數邏輯迴歸的值表示概率嗎?
lr的output是彼此之間相對誰的可能性更高,而不是概率,概率是事情發生的可能,lr的output不代表可能
LR對比萬物?
-
lr和線性迴歸
- lr解用的極大似然,線性迴歸用的最小二乘
- lr用於分類,線性迴歸用於迴歸
- 但兩者都是廣義線性迴歸GLM問題
- 兩者對非線性問題的處理能力都是欠佳的
-
lr和最大熵
- 在解決二分類問題是等同的
-
lr和svm
- 都可分類,都是判別式模型思路
- 通常都是用正則化進行規約
- 模型上
- lr是交叉熵,svm是HingeLoss
- lr是全量數據擬合,svm是支持向量擬合
- lr是參數估計有參數的前提假設,svm沒有
- lr依賴的是極大似然,svm依賴的是距離
-
lr和樸素貝葉斯
- 如果樸素貝葉斯也有在某一類上的數據x滿足高斯分佈的假設前提,lr和樸素貝葉斯一致
- lr是判別模型,樸素貝葉斯是生成模型
- lr沒有明確feature條件獨立(但是不能共線性,理由之前講了),樸素貝葉斯要求feature條件獨立
-
lr和最大熵模型
- 本質沒有區別
- 最大熵模型在解決二分類問題就是邏輯迴歸
- 最大熵模型在解決多分類問題的時候就是多項邏輯迴歸迴歸
LR梯度下降方法?
- 隨機梯度下降
- 局部最優解,可跳出鞍點
- 計算快
- 批梯度下降
- 全局最優解
- 計算量大
- mini批梯度下降
- 綜合以上兩種方法
除此之外,比如ada和衝量梯度下降法會對下降的速率速度進行控制,也會對不同更新速度的參數進行控制,等等,多用於深度學習中
LR的優缺點?
- 優點
- 簡單,易部署,訓練速度快
- 模型下限較高
- 可解釋性強
- 缺點
- 只能線性可分
- 數據不平衡需要人爲處理,weight_class/有哪些常見的採樣方法
- 模型上限較低
除了做分類,你還會用LR做什麼?
特徵篩選,特徵的係數決定該特徵的重要性
你有用過sklearn中的lr麼?你用的是哪個包?
sklearn.linear_model.LogisticRegression
看過源碼麼?爲什麼去看?
- 看部分參數的解釋
- 比如dual、weight_class中的1:0還是0:1比
- 比如輸出值的形式,輸出的格式
談一下sklearn.linear_model.LogisticRegression中的penalty和solver的選擇?
- penalty是正則化,solver是函數優化方法
- penalty包含l1和l2兩種,solver包含座標軸下降、牛頓、隨機梯度下降等
- 牛頓法,擬牛頓法和隨機梯度下降都不能使用l1,因爲他們都需要損失函數的一階二階導數,而座標軸下降法不限制這些,l1和l2都可行。
- l1和l2選擇參考上面講的正則化部分
- 隨機梯度下降在數據較少的時候最好別用,但是速度比較快。默認的是座標軸下降法
談一下sklearn.linear_model.LogisticRegression中對多分類是怎麼處理的?
- 首先,決定是否爲多分類的參數是multi_class
- 在二分類的時候,multi和ovr和auto都是一樣的
- 在真正執行multi的時候,會通過LabelEncoder把目標值y離散化,不停的選擇兩類去做ovr的計算直到取完所有情況
我的總結
- 邏輯迴歸假設觀測樣本中該特徵在正負類中出現結果服從伯努利分佈,通過極大化似然函數的方法,運用梯度下降來求解參數,來達到將數據二分類的目的
- 邏輯迴歸本質是線性模型,只能解決線性相關的問題,非線性相關用核或者svm等
- 邏輯迴歸不需要特徵的條件獨立,但是不能共線性,需要核線性迴歸一樣,做共線性檢驗
- 邏輯迴歸對樣本噪聲是魯棒對,SVM對噪聲比較敏感,而logistic迴歸對噪聲不是很敏感,是因爲如果噪聲點落在了支持向量上,將會直接影響判別面的方程。而logistic迴歸通過最大似然求解模型參數,將會弱化噪聲的影響