美文网首页
字节跳动数据挖掘实习面试

字节跳动数据挖掘实习面试

作者: 骆旺达 | 来源:发表于2021-03-01 16:17 被阅读0次
    image.png

    字节数据挖掘实习生二面:

    1、自我介绍

    2、算法题
    给定正浮点数 x,err;计算 x 的平方根 res;满足收敛条件 |x ^ 0.5 - res| <= err;

    def sqrt(x,err):
        
        l,p = 0,x
        if x<1:
            l,p = x,1
        
        while 1:
            
            q = (l+p)/2
            
            if abs(q*q - x)<=err:
                
                return q
            else:
                if q*q>x:
                    p=q
                else:
                    l=q
    
    

    3、数据话题;题外话:如何做爬虫?遇到的问题

    巴拉巴拉,403,伪装,cookie等

    4、我们部门NLP工作会比较少,我们需要的是一个确定型的结果,NLP主要是概率型的结果;

    解释了概率型模型

    5、你能简述一下句子的一个含义?你会用一个什么样的方法去做文本;

    解释了词带模型, word2vec(CBOW,skip-gram),Bert,robert编码

    6、word2vec需要一个窗口,后面bert等模型都解决了这一个问题;他是怎么解决的呢?

    解释了词编码原理

    7、把两个词的概率乘起来,这样就是一个最大似然概率的思想,这就出现独立性的问题和依赖性的问题;那因为文本间词关系又是相互依赖的,最大似然又要求样本件相互独立;他是怎么解决这个问题的呢?

    巴拉巴拉,将其简化成马尔可夫链,下一个链只和上一个链相关;就将依赖问题转化成独立问题进行简化;

    8、你有什么要问的?

    9、大概什么时候能实习,实习时间;

    部门是做;给予API接口、文本等信息,进行数据挖掘,预测是否是非法用户等;(例如检测爬虫等)

    可能需要提前掌握的内容是 sql语法;

    字节数据挖掘实习生一面:

    1、 自我介绍

    2、 LR损失函数?它是怎么来的;什么是最大似然函数;为什么用最大似然函数来推loss function;为什么不用最小二乘法?


    image.png

    3、SVM和LR,你有仔细的对比过?他们本质上有什么区别?
    相同点:
    1) LR和SVM都是分类算法(SVM也可以用与回归)
    2) 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
    3) LR和SVM都是有监督模型
    4) LR和SVM都是判别模型。 判别式模型(Discriminative Model)是直接对条件概率p(y|x;θ)建模。常见的判别式模型有线性回归模型、线性判别分析、支持向量机SVM、神经网络、boosting、条件随机场等。
    生成式模型(Generative Model)则会对x和y的联合分布p(x,y)建模,然后通过贝叶斯公式来求得p(yi|x),然后选取使得p(yi|x)最大的yi

    不同点:
    1)本质上是其loss function不同
    2) 支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用,虽然作用会相对小一些)
    3)在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法(通过上面的第二点不同点可以了解,在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制)
    4) 线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响,一个基于概率,一个基于距离!
    5)SVM的损失函数就自带正则(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因,而LR必须另外在损失函数上添加正则项。

    4、 Linear SVM(线性核)本质上是一种线性分类的办法?

    不是,如果不考虑核函数,它才是线性分类算法;

    5、SVM核函数的作用?

    映射函数的作用是将低维空间的数据映射到高维空间中,
    核函数表示的是映射之后高维空间中两个矢量的点积。

    6、LR可以用核函数解决线性不可分数据?

    从工程/复杂度上来说,可以用的,但为什么不用呢,因为计算量太大了,需要每个点两两计算核函数;SVM因为转化成对偶问题,只需要计算少量的点就可以了;他的计算量和SVM相比就不是一个数量级上的了。

    7、交叉墒公式,写一下

    image.png

    8、MSE和交叉墒这两种方式有啥不一样的?

    第一点:MSE无差别得关注全部类别上预测概率和真实概率的差.交叉熵关注的是正确类别的预测概率. 举个例子, 实际标签是[1,0,0],模型预测得到的概率是[0.9,0.4,0.3],那么交叉熵损失函数的结果是 1log(0.9)+0log(0.4)+0log(0.3),而MSE则都得全部算一遍。

    第二点:交叉熵更有利于梯度更新。MSE会收敛的慢一些,因为它求导的结果相比于交叉熵还多乘以一个sigmod函数,但是交叉熵梯度中不再含有sigmoid的导数,有的是sigmoid的值和实际值之间的差,也就满足了我们之前所说的错误越大,下降的越快的要求,

    第三点:MSE是假设数据符合高斯分布时,模型概率分布的负条件对数似然;交叉熵是假设模型分布为多项式分布时,模型分布的负条件对数似然。还有一点要说明,MSE对残差大的样例惩罚更大些.,比如真实标签分别是(1, 0, 0).模型1的预测标签是(0.8, 0.2, 0),模型2的是(0.9, 0.1, 0). 但MSE-based算出来模型1的误差是MSE-based算出模型2的4倍,而交叉熵-based算出来模型1的误差是交叉熵-based算出来模型2的2倍左右.对于模型1和模型2输出的结果。

    9、 做梯度更新,你觉得用交叉墒更有利,还是MSE更有利;那个收敛速度快一点;
    8题(2)问

    10、正则表达式,解释一下;L1和L2,原理;

      简单
    

    11、AUC,用一句话描述?ROC的横轴和纵轴分别是什么?样本不均衡适合用AUC?多分类的AUC怎么计算的呢?

    简单;每种类别下,都可以得到m个测试样本为该类别的概率(矩阵P中的列)。所以,根据概率矩阵P和标签矩阵L中对应的每一列,可以计算出各个阈值下的假正例率(FPR)和真正例率(TPR),从而绘制出一条ROC曲线。这样总共可以绘制出n条ROC曲线。最后对n条ROC曲线取平均,即可得到最终的ROC曲线。

    12、有用过spark或者H相关的内容?数据挖掘相关的?

    13、算法题

    数组 nums:-1,其他是正整数。
    -1 -> 数组的头部;
    其他元素 -> 保持原来的顺序;
    • 输入: [-1,3,-1,4,2]
    • 输出: [-1,-1,3,4,2]

    
    class S:
        def solve(self,nums):
    
            n = len(nums)
            
           j=0
            
          for i in range(n):
               
               if nums[i]==-1:
                    nums[i],num[j] = nums[j],nums[I]
    
                    j+=1
         
        return nums        
    
    
    

    相关文章

      网友评论

          本文标题:字节跳动数据挖掘实习面试

          本文链接:https://www.haomeiwen.com/subject/kpgufltx.html