面试周记总结(一)

目录

    • 1 基本算法
      • 1.0 各种分布
        • 均匀分布
        • 伯努利分布
      • 1.1 逻辑回归
        • 使用极大似然法如何对逻辑回归进行推导?
        • 逻辑回归为什么使用sigmoid函数进行非线性化?
        • 逻辑回归的正则化?用公式说明为什么增加正则可以使逻辑回归避免过拟合?为什么增加L1正则可以使解更加稀疏?
      • 1.2 梯度提升树
        • gbdt, xgboost等算法的基本思路
        • xgboost如何做迭代
        • xgboost和gbdt的区别和联系
        • xgboost为什么用二阶导展开,不用三阶导、四阶导
        • xgboost求导时的工程化实现
      • 1.3 过拟合
      • 1.4 ID嵌入
    • 2 CODING
        • 2.1 树的递归与非递归遍历(三种优先)
        • 2.2 给定一个字符串fskacsbi,删除数字,保留k个字符,使得相对位置不变,字典序最小。
        • 2.3 求一个字符串的最长不重复子串,没做出来

1 基本算法

1.0 各种分布

均匀分布

伯努利分布

伯努利分布(Bernoulli distribution)又名两点分布或0-1分布,介绍伯努利分布前首先需要引入伯努利试验(Bernoulli trial)。

伯努利试验是只有两种可能结果的单次随机试验,即对于一个随机变量X而言:
P r [ X = 1 ] = p P r [ X = 0 ] = 1 − p Pr[X=1] = p \\ Pr[X=0] = 1-p Pr[X=1]=pPr[X=0]=1p

伯努利试验都可以表达为“是或否”的问题。例如,抛一次硬币是正面向上吗?刚出生的小孩是个女孩吗?等等

如果试验E是一个伯努利试验,将E独立重复地进行n次,则称这一串重复的独立试验为n重伯努利试验。

进行一次伯努利试验,成功(X=1)概率为p(0<=p<=1),失败(X=0)概率为1-p,则称随机变量X服从伯努利分布。伯努利分布是离散型概率分布,其概率质量函数为

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

1.1 逻辑回归

使用极大似然法如何对逻辑回归进行推导?

逻辑回归为什么使用sigmoid函数进行非线性化?

答:逻辑回归是一种广义线性模型,解决的是二分类问题。
η = w T x h ( x ) = ϕ ( η ) ( 式 1 ) \eta = w^{T}x \\ h(x) = \phi(\eta) (式1) η=wTxh(x)=ϕ(η)(1)
其中 ϕ \phi ϕ为某种非线性映射,我们的问题是为什么 ϕ \phi ϕsigmoid函数
首先,二分类问题,我们可以自然地假设因变量 y y y 服从于伯努利分布,。 y = 1 y=1 y=1的概率为 ϕ \phi ϕ y = 0 y=0 y=0的概率为 1 − ϕ 1-\phi 1ϕ
P ( Y = y ; ϕ ) = ϕ y ( 1 − ϕ ) 1 − y ( 式 2 ) P(Y=y; \phi) = \phi^{y}(1-\phi)^{1-y} (式2) P(Y=y;ϕ)=ϕy(1ϕ)1y(2)
依据伯努利分布的性质
E [ P ( Y = y ; ϕ ) ] = ϕ ( 式 3 ) E[P(Y=y; \phi)] = \phi (式3) E[P(Y=y;ϕ)]=ϕ(3)
期望求解
其次,伯努利分布是一种指数族分布,
P ( y ∣ η ) = b ( y ) e x p η T T ( y ) − A ( η ) ( 式 4 ) P(y|\eta) = b(y)exp^{\eta^TT(y)-A(\eta)} (式4) P(yη)=b(y)expηTT(y)A(η)(4)
将式2按照式4的形式做一定的变换,可得
P ( Y = y ; ϕ ) = e x p y l n ϕ 1 − ϕ + l n ( 1 − ϕ ) P(Y=y; \phi) = exp^{yln{\frac{\phi}{1-\phi}} + ln(1-\phi)} P(Y=y;ϕ)=expyln1ϕϕ+ln(1ϕ)

{ b ( y ) = 1 , T ( y ) = y , η = l n ϕ 1 − ϕ , A ( η ) = − l n ( 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. b(y)=1,T(y)=y,η=ln1ϕϕ,A(η)=ln(1ϕ),(5)
根据 (式1) 和(式3)可得到:
h ( x ) = E [ T ( y ) ] = E [ y ] = ϕ = e η 1 + e η = 1 1 + e − η h(x) = E[T(y)] = E[y] = \phi = \frac{e^{\eta}}{1+e^{\eta}} = \frac{1}{1+e^{-\eta}} h(x)=E[T(y)]=E[y]=ϕ=1+eηeη=1+eη1
可以自然地推导出 ϕ \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表示这种无重复关系。

你可能感兴趣的:(面经笔经)