1、机器学习的数学基础1 – 数学分析

机器学习的一般方法和横向比较
数学是有用的:以SVD为例
机器学习的角度看数学
复习数学分析
直观解释常数e
导数/梯度
随机梯度下降
Taylor展式的落地应用
gini系数
凸函数
Jensen不等式
组合数与信息熵的关系

2、机器学习的数学基础2 – 概率论与贝叶斯先验

概率论基础
古典概型
贝叶斯公式
先验分布/后验分布/共轭分布
常见概率分布
泊松分布和指数分布的物理意义
协方差(矩阵)和相关系数
独立和不相关
大数定律和中心极限定理的实践意义
深刻理解最大似然估计MLE和最大后验估计MAP
过拟合的数学原理与解决方案

3、机器学习的数学基础3 – 矩阵和线性代数

线性代数在数学科学中的地位
马尔科夫模型
矩阵乘法的直观表达
状态转移矩阵
矩阵和向量组
特征向量的思考和实践计算
QR分解
对称阵、正交阵、正定阵
数据白化及其应用
向量对向量求导
标量对向量求导
标量对矩阵求导

3、机器学习的数学基础3 – 数理统计与参数估计

统计量
期望/方差/偏度/峰度
中心矩/原点矩
矩估计
深刻理解最大似然估计
过拟合的数学原理与解决方案
最大后验估计MAP
偏差方差二难

4、Python基础1 – Python及其数学库
解释器Python2.7与IDE:Anaconda/Pycharm
Python基础:列表/元组/字典/类/文件
Taylor展式的代码实现
numpy/scipy/matplotlib/panda的介绍和典型使用
多元高斯分布
泊松分布、幂律分布
典型图像处理

5、Python基础2 – 机器学习库

scikit-learn的介绍和典型使用
损失函数的绘制
多种数学曲线
多项式拟合
快速傅里叶变换FFT
奇异值分解SVD
Soble/Prewitt/Laplacian算子与卷积网络
卷积与(指数)移动平均线
股票数据分析

6、Python基础3 – 数据清洗和特征选择

实际生产问题中算法和特征的关系
股票数据的特征提取和应用
一致性检验
缺失数据的处理
环境数据异常检测和分析
模糊数据查询和数据校正方法、算法、应用

7、回归

线性回归
Logistic/Softmax回归
广义线性回归
L1/L2正则化
Ridge与LASSO
Elastic Net
梯度下降算法:BGD与SGD
特征选择与过拟合
Softmax回归的概念源头
最大熵模型
K-L散度

8、回归实践

机器学习sklearn库介绍
回归代码实现和调参
Ridge回归/LASSO/Elastic Net
Logistic/Softmax回归
广告投入与销售额回归分析
鸢尾花数据集的分类
回归代码实现和调参
交叉验证
数据可视化

9、决策树和随机森林

熵、联合熵、条件熵、KL散度、互信息
最大似然估计与最大熵模型
ID3、C4.5、CART详解
决策树的正则化
预剪枝和后剪枝
Bagging
随机森林
不平衡数据集的处理
利用随机森林做特征选择
使用随机森林计算样本相似度

10、随机森林实践

随机森林与特征选择
决策树应用于回归
多标记的决策树回归
决策树和随机森林的可视化
葡萄酒数据集的决策树/随机森林分类

11、提升

提升为什么有效
Adaboost算法
加法模型与指数损失
梯度提升决策树GBDT
XGBoost算法详解

12、XGBoost实践

自己动手实现GBDT
XGBoost库介绍
Taylor展式与学习算法
KAGGLE简介
泰坦尼克乘客存活率估计

13、SVM

线性可分支持向量机
软间隔的改进
损失函数的理解
核函数的原理和选择
SMO算法
支持向量回归SVR

14、SVM实践

libSVM代码库介绍
原始数据和特征提取
调用开源库函数完成SVM
葡萄酒数据分类
数字图像的手写体识别
SVR用于时间序列曲线预测
SVM、Logistic回归、随机森林三者的横向比较

15、聚类

各种相似度度量及其相互关系
Jaccard相似度和准确率、召回率
Pearson相关系数与余弦相似度
K-means与K-Medoids及变种
AP算法(Sci07)/LPA算法及其应用
密度聚类DBSCAN/DensityPeak(Sci14)
谱聚类SC
聚类评价和结果指标

16、聚类实践

K-Means++算法原理和实现
向量量化VQ及图像近似
并查集的实践应用
密度聚类的代码实现
谱聚类用于图片分割

17、EM算法

最大似然估计
Jensen不等式
朴素理解EM算法
精确推导EM算法
EM算法的深入理解
混合高斯分布
主题模型pLSA

18、EM算法实践

多元高斯分布的EM实现
分类结果的数据可视化
EM与聚类的比较
Dirichlet过程EM
三维及等高线等图件的绘制
主题模型pLSA与EM算法

19、贝叶斯网络

朴素贝叶斯
贝叶斯网络的表达
条件概率表参数个数分析
马尔科夫模型
D-separation
条件独立的三种类型
Markov Blanket
混合(离散+连续)网络:线性高斯模型
Chow-Liu算法:最大权生成树MSWT

20、朴素贝叶斯实践

GaussianNB
MultinomialNB
BernoulliNB
朴素贝叶斯用于鸢尾花数据
朴素贝叶斯用于18000+篇新闻文本的分类

21、主题模型LDA

贝叶斯学派的模型认识
共轭先验分布
Dirichlet分布
Laplace平滑
Gibbs采样详解

22、LDA实践

网络爬虫的原理和代码实现
停止词和高频词
动手自己实现LDA
LDA开源包的使用和过程分析
Metropolis-Hastings算法
MCMC
LDA与word2vec的比较

23、隐马尔科夫模型HMM

概率计算问题
前向/后向算法
HMM的参数学习
Baum-Welch算法详解
Viterbi算法详解
隐马尔科夫模型的应用优劣比较

24、HMM实践

动手自己实现HMM用于中文分词
多个语言分词开源包的使用和过程分析
文件数据格式UFT-8、Unicode
停止词和标点符号对分词的影响
前向后向算法计算概率溢出的解决方案
发现新词和分词效果分析
高斯混合模型HMM
GMM-HMM用于股票数据特征提取

log

在数学中,对数是对求幂的逆运算,正如除法是乘法的倒数,反之亦然。 这意味着一个数字的对数是必须产生另一个固定数字(基数)的指数。 在简单的情况下,乘数中的对数计数因子。更一般来说,乘幂允许将任何正实数提高到任何实际功率,总是产生正的结果,因此可以对于b不等于1的任何两个正实数b和x计算对数。
如果a的x次方等于N(a>0,且a不等于1),那么数x叫做以a为底N的对数(logarithm),记作x=logaN。其中,a叫做对数的底数,N叫做真数

支持向量机公式

最优解公式

核函数推导

 

核函数公式

核函数选择

分别选用了linear, rbf, poly。

就拟合程度来讲,linear在线性可分的情况下和rbf想过差不多,在线性不可分的情况下rbf明显优于linear,poly在前两种情况下效果都不怎么好,但是在变化剧烈的情况下ploy稍微好点。

就速度来讲,linear肯定是最快的,poly的话因为参数很多,测试中最慢。

就参数而言,linear简单易用,rbf, poly参数较多,但是调参好的话可以得到较好的结果。

还是需要看情况选择吧。

 

 

Continue reading

1. 实现归并排序。

def merge(left, right):
    i, j = 0, 0
    result = []
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result += left[i:]
    result += right[j:]
    return result
 
def merge_sort(lists):
    # 归并排序
    if len(lists) <= 1:
        return lists
    num = len(lists) / 2
    left = merge_sort(lists[:num])
    right = merge_sort(lists[num:])
    return merge(left, right)

Continue reading