1 基本算法
1.0 各種分佈
均勻分佈
伯努利分佈
伯努利分佈(Bernoulli distribution)又名兩點分佈或0-1分佈,介紹伯努利分佈前首先需要引入伯努利試驗(Bernoulli trial)。
伯努利試驗是隻有兩種可能結果的單次隨機試驗,即對於一個隨機變量X而言:
伯努利試驗都可以表達爲“是或否”的問題。例如,拋一次硬幣是正面向上嗎?剛出生的小孩是個女孩嗎?等等
如果試驗E是一個伯努利試驗,將E獨立重複地進行n次,則稱這一串重複的獨立試驗爲n重伯努利試驗。
進行一次伯努利試驗,成功(X=1)概率爲p(0<=p<=1),失敗(X=0)概率爲1-p,則稱隨機變量X服從伯努利分佈。伯努利分佈是離散型概率分佈,其概率質量函數爲:
1.1 邏輯迴歸
使用極大似然法如何對邏輯迴歸進行推導?
邏輯迴歸爲什麼使用sigmoid函數進行非線性化?
答:邏輯迴歸是一種廣義線性模型,解決的是二分類問題。
其中爲某種非線性映射,我們的問題是爲什麼是sigmoid函數。
首先,二分類問題,我們可以自然地假設因變量 服從於伯努利分佈,。的概率爲 ,的概率爲。
依據伯努利分佈的性質
期望求解
其次,伯努利分佈是一種指數族分佈,
將式2按照式4的形式做一定的變換,可得
即
根據 (式1) 和(式3)可得到:
可以自然地推導出的形式正好爲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表示這種無重複關係。