1,怎么做恶意刷单检验
分类问题用机器学习方法建模解决,特征有:
1)商家特征:商家历史销量、信用、产品类别、发货快递公司等
2)用户行为特征:用户信用、下单量、转化率、下单路径、浏览店铺行为、支付账号
3)环境特征(主要是避免机器刷单):地区、ip、手机型号等
4)异常检测:ip地址经常变动、经常清空cookie信息、账号近期交易成功率上升等
5)评论文本检测:刷单的评论文本可能套路较为一致,计算与已标注评论文本的相似度作为特征
6)图片相似度检测:同理,刷单可能重复利用图片进行评论
2,你系统地学过机器学习算法吗
3,选个讲下原理吧 K-Means算法及改进,遇到异常值怎么办?评估算法的指标有哪些?
1)k-means原理
2)改进:
a. kmeans++:初始随机点选择尽可能远,避免陷入局部解。方法是n+1个中心点选择时,对于离前n个点选择到的概率更大
b. mini batch kmeans:每次只用一个子集做重入类并找到类心(提高训练速度)
c. ISODATA:对于难以确定k的时候,使用该方法。思路是当类下的样本小时,剔除;类下样本数量多时,拆分
d. kernel kmeans:kmeans用欧氏距离计算相似度,也可以使用kernel映射到高维空间再聚类
3)遇到异常值
a. 有条件的话使用密度聚类或者一些软聚类的方式先聚类,剔除异常值。不过本来用kmeans就是为了快,这么做有些南辕北辙了
b. 局部异常因子LOF:如果点p的密度明显小于其邻域点的密度,那么点p可能是异常值
c. 多元高斯分布异常点检测
d. 使用PCA或自动编码机进行异常点检测:使用降维后的维度作为新的特征空间,其降维结果可以认为剔除了异常值的影响(因为过程是保留使投影后方差最大的投影方向)
e. isolation forest:基本思路是建立树模型,一个节点所在的树深度越低,说明将其从样本空间划分出去越容易,因此越可能是异常值。是一种无监督的方法,随机选择n个sumsampe,随机选择一个特征一个值。
f. winsorize:对于简单的,可以对单一维度做上下截取
4)评估聚类算法的指标:
a. 外部法(基于有标注):Jaccard系数、纯度
b. 内部法(无标注):内平方和WSS和外平方和BSS
c. 此外还要考虑到算法的时间空间复杂度、聚类稳定性等
4, 数据预处理过程有哪些?
1)缺失值处理:删、插
2)异常值处理
3)特征转换:时间特征sin化表示
4)标准化:最大最小标准化、z标准化等
5)归一化:对于文本或评分特征,不同样本之间可能有整体上的差异,如a文本共20个词,b文本30000个词,b文本中各个维度上的频次都很可能远远高于a文本
6)离散化:onehot、分箱等
5,随机森林原理?有哪些随机方法?
1)随机森林原理:通过构造多个决策树,做bagging以提高泛化能力
2)subsample(有放回抽样)、subfeature、低维空间投影(特征做组合,参考林轩田的《机器学习基石》
6, PCA
1)主成分分析是一种降维的方法
2)思想是将样本从原来的特征空间转化到新的特征空间,并且样本在新特征空间坐标轴上的投影方差尽可能大,这样就能涵盖样本最主要的信息
3)方法:
a. 特征归一化
b. 求样本特征的协方差矩阵A
c. 求A的特征值和特征向量,即AX=λX
d. 将特征值从大到小排列,选择topK,对应的特征向量就是新的坐标轴
4)PCA也可以看成激活函数为线性函数的自动编码机
7,还有一些围绕着项目问的具体问题
8,参加过哪些活动?
9,hive?spark?sql? nlp?
1)Hive允许使用类SQL语句在hadoop集群上进行读、写、管理等操作
2)Spark是一种与hadoop相似的开源集群计算环境,将数据集缓存在分布式内存中的计算平台,每轮迭代不需要读取磁盘的IO操作,从而答复降低了单轮迭代时间
10,XGBOOST
xgb也是一种梯度提升树,是gbdt高效实现,差异是:
1)gbdt优化时只用到了一阶导数信息,xgb对代价函数做了二阶泰勒展开
2)xgb加入了正则项
3)xgb运行完一次迭代后,会对叶子节点的权重乘上shrinkage(缩减)系数,削弱当前树的影响,让后面有更大的学习空间
4)支持列抽样等特性
5)支持并行:决策树中对特征值进行排序以选择分割点是耗时操作,xgb训练之前就先对数据进行排序,保存为block结构,后续迭代中重复用该结构,大大减少计算量。同时各个特征增益的计算也可以开多线程进行
6)寻找最佳分割点时,实现了一种近似贪心法,同时优化了对稀疏数据、缺对稀疏数据、缺失值的处理,提高了算法效率
7)剪枝:GBDT遇到负损失时回停止分裂,是贪心算法。xgb会分裂到指定最大深度,然后再剪枝