面試週記總結(一)

1 基本算法

1.0 各種分佈

均勻分佈

伯努利分佈

伯努利分佈(Bernoulli distribution)又名兩點分佈或0-1分佈,介紹伯努利分佈前首先需要引入伯努利試驗(Bernoulli trial)。

伯努利試驗是隻有兩種可能結果的單次隨機試驗,即對於一個隨機變量X而言:
Pr[X=1]=pPr[X=0]=1p Pr[X=1] = p \\ Pr[X=0] = 1-p

伯努利試驗都可以表達爲“是或否”的問題。例如,拋一次硬幣是正面向上嗎?剛出生的小孩是個女孩嗎?等等

如果試驗E是一個伯努利試驗,將E獨立重複地進行n次,則稱這一串重複的獨立試驗爲n重伯努利試驗。

進行一次伯努利試驗,成功(X=1)概率爲p(0<=p<=1),失敗(X=0)概率爲1-p,則稱隨機變量X服從伯努利分佈。伯努利分佈是離散型概率分佈,其概率質量函數爲

f(x)=px(1p)1x f(x) = p^{x}(1-p)^{1-x}

1.1 邏輯迴歸

使用極大似然法如何對邏輯迴歸進行推導?

邏輯迴歸爲什麼使用sigmoid函數進行非線性化?

答:邏輯迴歸是一種廣義線性模型,解決的是二分類問題。
η=wTxh(x)=ϕ(η)(1) \eta = w^{T}x \\ h(x) = \phi(\eta) (式1)
其中ϕ\phi爲某種非線性映射,我們的問題是爲什麼ϕ\phisigmoid函數
首先,二分類問題,我們可以自然地假設因變量 yy 服從於伯努利分佈,。y=1y=1的概率爲ϕ\phiy=0y=0的概率爲1ϕ1-\phi
P(Y=y;ϕ)=ϕy(1ϕ)1y(2) P(Y=y; \phi) = \phi^{y}(1-\phi)^{1-y} (式2)
依據伯努利分佈的性質
E[P(Y=y;ϕ)]=ϕ(3) E[P(Y=y; \phi)] = \phi (式3)
期望求解
其次,伯努利分佈是一種指數族分佈,
P(yη)=b(y)expηTT(y)A(η)(4) P(y|\eta) = b(y)exp^{\eta^TT(y)-A(\eta)} (式4)
將式2按照式4的形式做一定的變換,可得
P(Y=y;ϕ)=expylnϕ1ϕ+ln(1ϕ) P(Y=y; \phi) = exp^{yln{\frac{\phi}{1-\phi}} + ln(1-\phi)}

{b(y)=1,T(y)=y,η=lnϕ1ϕ,A(η)=ln(1ϕ),(5) \left\{ \begin{array}{lr} b(y)=1, & \\ T(y)=y, \\ \eta = ln{\frac{\phi}{1-\phi}} , \\ A(\eta) = -ln(1-\phi), & \end{array} (式5) \right.
根據 (式1) 和(式3)可得到:
h(x)=E[T(y)]=E[y]=ϕ=eη1+eη=11+eη h(x) = E[T(y)] = E[y] = \phi = \frac{e^{\eta}}{1+e^{\eta}} = \frac{1}{1+e^{-\eta}}
可以自然地推導出ϕ\phi的形式正好爲sigmoid的形式。
總結 從廣義線性模型的角度,廣義線性模型是一種指數族分佈。由於邏輯迴歸是二分類問題,因此我們可以令因變量滿足伯努利分佈。依據伯努利分佈可推出邏輯迴歸的形式,正好與sigmoid函數等價。
某些待看鏈接:
https://blog.csdn.net/kingzone_2008/article/details/80584743
https://zhuanlan.zhihu.com/p/22876460
https://zhuanlan.zhihu.com/p/59137998
https://www.zhihu.com/question/41647192
https://blog.csdn.net/baidu_15238925/article/details/81291247

邏輯迴歸的正則化?用公式說明爲什麼增加正則可以使邏輯迴歸避免過擬合?爲什麼增加L1正則可以使解更加稀疏?

1.2 梯度提升樹

gbdt, xgboost等算法的基本思路

xgboost如何做迭代

xgboost和gbdt的區別和聯繫

xgboost爲什麼用二階導展開,不用三階導、四階導

xgboost求導時的工程化實現

1.3 過擬合

1.4 ID嵌入

2 CODING

2.1 樹的遞歸與非遞歸遍歷(三種優先)

非遞歸用棧做,不說了,全是騷操作。

2.2 給定一個字符串fskacsbi,刪除數字,保留k個字符,使得相對位置不變,字典序最小。

計蒜客-原題
維護一個單調棧。當棧頂元素大於待插入元素,且刪除元素的個數小於n-k時,刪除棧頂元素。
note: 此題用python寫雖然能得到答案,但是太慢,還是用c++寫不超時。c++的相關知識也要撿起來了!!!!!

2.3 求一個字符串的最長不重複子串,沒做出來

這個題真是,太不甘心了!!!做過原題的,結果面試時愣沒做出來。
力扣-最長不重複子串
基本思想是滑動窗口,可以採用python中的set和dict表示這種無重複關係。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章