一、业务场景

怎么做恶意刷单检测?

分类问题,用机器学习方法建模解决,可以构造以下特征:

  1. 商家特征:商家历史销量、信用、产品类别、发货快递公司等
  2. 用户行为特征:用户信用、下单量、转化率、下单路径、浏览店铺行为、支付账号
  3. 环境特征(主要是避免机器刷单):地区、IP、手机型号等
  4. 异常检测:IP 地址经常变动、经常清空 Cookie 信息、账号近期交易成功率上升等
  5. 评论文本检测:刷单的评论文本可能套路较为一致,计算与已标注评论文本的相似度作为特征
  6. 图片相似度检测:同理,刷单可能重复利用图片进行评论

你理解的分析师的工作是怎样的?价值是什么?

思考角度:业务、算法、工具各占多少比重。

常用的数据分析工具有 Excel + SQL + Python/R,有的公司要求会一种就可以,有的要求都会,根据应聘职位不同自由选择:

工具关键技能
Excel数据透视表、VLOOKUP、常用函数、基础图表
SQL存储过程、分组、聚合、排序
Python / R分类算法(逻辑回归、贝叶斯、决策树、随机森林)、回归算法(线性回归)、聚类算法(K-Means)

二、数据存储

DB — 数据库(Database)

一般指 OLTP(在线事务)数据库,用来支持生产的,比如超市的买卖系统。DB 保留的是数据信息的最新状态,只有一个状态

比喻

每天早上起床洗脸照镜子,看到的就是当时的状态,至于之前每天的状态,不会出现在你眼前——这个”眼前”就是 DB。

DW — 数据仓库(Data Warehouse)

保存的是 DB 中不同时间点的状态,便于做统计分析。

比喻

每天早上洗完脸照镜子时都拍一张照片,天天这样,这些照片放入到一个相册中,之后就可以查看每一天的状态了——这个相册就是数据仓库。

DB vs DW 区别

  1. 简单理解:数据仓库是多个数据库以一种方式组织起来
  2. 数据库强调范式,尽可能减少冗余
  3. 数据仓库强调查询分析的速度,优化读取操作,主要目的是快速做大量数据的查询
  4. 数据仓库定期写入新数据,但不覆盖原有数据,而是给数据加上时间戳标签
  5. 数据库采用行存储,数据仓库一般采用列存储
  6. 数据仓库的特征是面向主题、集成、相对稳定、反映历史变化,存储历史数据;数据库是面向事务的,存储在线交易数据
  7. 数据仓库的两个基本元素是维表事实表——维是看待问题的角度(比如时间、部门等),事实表放着要查询的数据

ETL — 抽取-转换-加载(Extraction-Transformation-Loading)

用于完成 DB 到 DW 的数据转存:

  1. 抽取(E):将 DB 中某一个时间点的状态抽取出来
  2. 转换(T):根据 DW 的存储模型要求,转换数据格式
  3. 加载(L):将转换后的数据加载到 DW 中

为什么需要转换?

DB 的模型是 ER 模型,遵从范式化设计原则;DW 的数据模型是雪花型结构星型结构,用的是面向主题、面向问题的设计思路。两者模型结构不同,所以需要进行转换。


三、Python 数据分析

生态全景

推荐平台:Anaconda(集成了大量 Python 科学计算第三方库)

定位核心功能
NumPy数据结构基础ndarray、多维操作、线性代数
Pandas基础数据分析套件(基于 NumPy)DataFrame、数据清洗、分组聚合
Matplotlib可视化套件绑图库,图表绑制
SciPy科学计算矩阵分析、信号分析、数理分析
Scikit-learn数据分析建模(基于 NumPy + SciPy + Matplotlib)回归、降维、分类、聚类
Keras深度学习人工神经网络(Keras 3 支持 TensorFlow/JAX/PyTorch 多后端)

如何对 list 中的 item 进行随机重排?

使用 shuffle() 函数:

import random
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)  # 原地修改

NumPy array 比 Python list 的优势

a. NumPy array 比 Python list 更紧凑,存储数据占的空间小,读写速度快。这是由于 Python list 储存的是指向对象(至少需要 16 个字节)的指针(至少 4 个字节);而 array 中储存的是单一变量(比如单精度浮点数为 4 个字节,双精度为 8)

b. array 可以直接使用 vector 和 matrix 类型的处理函数,非常方便


四、机器学习核心概念

如何理解过拟合?

过拟合和欠拟合一样,都是数据挖掘的基本概念。

  • 过拟合:数据训练得太好,在实际的测试环境中可能会产生错误,所以适当的剪枝对数据挖掘算法来说也很重要
  • 欠拟合:机器学习得不充分,数据样本太少,不足以让机器形成自我认知

为什么说朴素贝叶斯是”朴素”的?

朴素贝叶斯是一种简单但极为强大的预测建模算法。之所以称为朴素贝叶斯,是因为它假设每个输入变量是独立的。这是一个强硬的假设,实际情况并不一定,但是这项技术对于绝大部分的复杂问题仍然非常有效。

SVM 最重要的思想是什么?

SVM 计算的过程就是帮我们找到超平面的过程,它有个核心概念叫分类间隔。SVM 的目标就是找出所有分类间隔中最大的那个值对应的超平面。在数学上,这是一个凸优化问题。

根据数据是否线性可分,SVM 分为:

  • 硬间隔 SVM — 数据严格线性可分
  • 软间隔 SVM — 允许少量误分类
  • 非线性 SVM — 通过核函数映射到高维空间

K-Means 和 KNN 算法的区别是什么?

首先,这两个算法解决的是数据挖掘中的两类问题。K-Means 是聚类算法,KNN 是分类算法。

其次,这两个算法是两种不同的学习方式。K-Means 是非监督学习,不需要事先给出分类标签;而 KNN 是有监督学习,需要我们给出训练数据的分类标识。

最后,K 值的含义不同。K-Means 中的 K 值代表 K 类,KNN 中的 K 值代表 K 个最接近的邻居