核心内容摘要
正能量樱花你会感谢我
PCA降维实战从数学原理到特征脸应用主成分分析(PCA)是机器学习中最常用的降维技术之一。
我第一次接触PCA是在处理一个人脸识别项目时当时数据集中的每张图片都有1024个像素特征直接处理计算量巨大。
通过PCA我们成功将维度降到50维不仅提升了训练速度还意外发现识别准确率提高了3%。
PCA的核心思想可以理解为抓大放小——保留数据中方差最大的方向。
想象你是一名摄影师要给一群站在广场上的人拍照。
如果所有人排成一条斜线你会选择哪个角度拍摄当然是沿着斜线方向这样一张照片就能捕捉所有人的位置信息。
PCA就是在高维空间做类似的事情。
数学上PCA有两种等价推导方式最小重构误差寻找使得投影后数据与原数据距离最小的超平面最大方差寻找使得投影后数据方差最大的方向用Python实现PCA异常简单from sklearn.decomposition import PCA pca PCA(n_components
# 降到50维 X_reduced pca.fit_transform(X)**特征脸(Eigenface)**是PCA在人脸识别中的经典应用。
我曾在安防项目中用它做人员初筛。
具体步骤是将所有人脸图像展平为向量组成大矩阵计算均值脸并做中心化对协方差矩阵做特征分解取前k个特征向量作为特征脸这些特征脸看起来像是模糊的人脸模板但神奇的是用它们作为基向量只需
维就能较好地重构任意人脸。
这就像用乐高积木搭建人脸——虽然每块积木形状固定但组合起来能呈现各种面貌。
距离度量优化马氏距离的实战价值在电商推荐系统中我遇到过用户特征尺度差异大的问题年龄范围
岁月消费额
元。
直接用欧氏距离会导致消费额主导相似度计算这时马氏距离就派上用场了。
马氏距离公式为 √[(x-y)ᵀM(x-y)]其中M是正定矩阵通常取协方差矩阵的逆。
当MI时退化为欧氏距离。
它的精妙之处在于自动处理不同特征的尺度差异考虑特征间的相关性对线性变换具有不变性实际使用时要注意当特征维度高样本少时协方差矩阵可能不可逆需要正则化计算成本比欧氏距离高大数据量时需要优化from scipy.spatial.distance import mahalanobis # 计算协方差矩阵的逆 inv_cov np.linalg.inv(np.cov(X.T)) # 计算两个样本的马氏距离 distance mahalanobis(x, y, inv_cov)
L1正则化获得稀疏解的秘诀在广告CTR预测项目中我们有5000多个特征但真正有用的不到100个。
这时L1正则化就像一把精准的手术刀能自动选择重要特征。
L1正则化的神奇之处在于它会产生稀疏解——许多系数正好为零。
这源于它在零点不可导的性质使得优化过程中某些系数会被挤压到零。
可以想象成在参数优化时L1正则像严格的安检员把不重要的特征直接拦在门外。
与L2正则对比L1产生稀疏解适合特征选择L2使参数接近零但不为零适合防止过拟合调节λ的经验法则先用网格搜索确定大致范围观察特征保留数量随λ的变化用交叉验证选择最佳λfrom sklearn.linear_model import Lasso lasso Lasso(alpha
0.
# alpha就是λ lasso.fit(X, y) # 查看非零系数 np.sum(lasso.coef_ !
0)
强化学习双雄Sarsa与Q-Learning对比在开发游戏AI时我同时尝试了Sarsa和Q-Learning两种算法。
它们的核心区别在于更新策略Sarsa是保守派采用同策略(on-policy)学习使用ε-greedy策略选择动作和更新Q值更注重安全性适合高风险场景Q-Learning是冒险家采用异策略(off-policy)学习更新时直接使用最大Q值更激进可能找到更优解但风险也大实际项目中我的经验是机器人控制多用Sarsa因为安全第一游戏AI常用Q-Learning追求更高分两者结合有时效果更好# Q-Learning更新公式实现 def update_q(q_table, state, action, reward, next_state, gamma, lr): max_next np.max(q_table[next_state]) q_table[state, action] lr * (reward gamma * max_next - q_table[state, action])在开发迷宫游戏AI时Q-Learning平均需要50次尝试找到最优路径而Sarsa需要80次但Sarsa的路径更稳定很少出现危险动作。
这印证了理论预期——没有绝对的好坏只有适合的场景。