0绪论1
0.1机器学习基础1
0.1.1机器学习的概念1
0.1.2机器学习算法的分类2
0.2监督学习3
0.2.1监督学习3
0.2.2监督学习的流程3
0.2.3监督学习算法4
0.3无监督学习4
0.3.1无监督学习4
0.3.2无监督学习的流程4
0.3.3无监督学习算法5
0.4推荐系统和深度学习6
0.4.1推荐系统6
0.4.2深度学习6
0.5Python和机器学习算法实践6
参考文献7
第一部分分类算法
1Logistic Regression10
1.1Logistic Regression模型10
1.1.1线性可分VS线性不可分10
1.1.2Logistic Regression模型11
1.1.3损失函数13
1.2梯度下降法14
1.2.1梯度下降法的流程14
1.2.2凸优化与非凸优化15
1.2.3利用梯度下降法训练Logistic Regression模型17
1.3梯度下降法的若干问题18
1.3.1选择下降的方向18
1.3.2步长的选择19
1.4Logistic Regression算法实践20
1.4.1利用训练样本训练Logistic Regression模型20
1.4.2最终的训练效果22
1.4.3对新数据进行预测23
参考文献26
2Softmax Regression27
2.1多分类问题27
2.2Softmax Regression算法模型28
2.2.1Softmax Regression模型28
2.2.2Softmax Regression算法的代价函数28
2.3Softmax Regression算法的求解29
2.4Softmax Regression与Logistic Regression的关系31
2.4.1Softmax Regression中的参数特点31
2.4.2由Softmax Regression到Logistic Regression31
2.5Softmax Regression算法实践32
2.5.1对Softmax Regression算法的模型进行训练33
2.5.2最终的模型34
2.5.3对新的数据的预测35
参考文献39
3Factorization Machine40
3.1Logistic Regression算法的不足40
3.2因子分解机FM的模型42
3.2.1因子分解机FM模型42
3.2.2因子分解机FM可以处理的问题43
3.2.3二分类因子分解机FM算法的损失函数43
3.3FM算法中交叉项的处理43
3.3.1交叉项系数43
3.3.2模型的求解44
3.4FM算法的求解45
3.4.1随机梯度下降(Stochastic Gradient Descent)45
3.4.2基于随机梯度的方式求解45
3.4.3FM算法流程46
3.5因子分解机FM算法实践49
3.5.1训练FM模型50
3.5.2最终的训练效果53
3.5.3对新的数据进行预测55
参考文献57
4支持向量机58
4.1二分类问题58
4.1.1二分类的分隔超平面58
4.1.2感知机算法59
4.1.3感知机算法存在的问题61
4.2函数间隔和几何间隔61
4.2.1函数间隔62
4.2.2几何间隔62
4.3支持向量机63
4.3.1间隔最大化63
4.3.2支持向量和间隔边界64
4.3.3线性支持向量机65
4.4支持向量机的训练66
4.4.1学习的对偶算法66
4.4.2由线性支持向量机到非线性支持向量机68
4.4.3序列最小最优化算法SMO69
4.5支持向量机SVM算法实践74
4.5.1训练SVM模型74
4.5.2利用训练样本训练SVM模型81
4.5.3利用训练好的SVM模型对新数据进行预测85
参考文献88
5随机森林89
5.1决策树分类器89
5.1.1决策树的基本概念89
5.1.2选择最佳划分的标准91
5.1.3停止划分的标准94
5.2CART分类树算法95
5.2.1CART分类树算法的基本原理95
5.2.2CART分类树的构建95
5.2.3利用构建好的分类树进行预测98
5.3集成学习(Ensemble Learning)99
5.3.1集成学习的思想99
5.3.2集成学习中的典型方法99
5.4随机森林(Random Forests)101
5.4.1随机森林算法模型101
5.4.2随机森林算法流程102
5.5随机森林RF算法实践104
5.5.1训练随机森林模型105
5.5.2最终的训练结果109
5.5.3对新数据的预测110
参考文献113
6BP神经网络114
6.1神经元概述114
6.1.1神经元的基本结构114
6.1.2激活函数115
6.2神经网络模型116
6.2.1神经网络的结构116
6.2.2神经网络中的参数说明117
6.2.3神经网络的计算117
6.3神经网络中参数的求解118
6.3.1神经网络损失函数118
6.3.2损失函数的求解119
6.3.3BP神经网络的学习过程120
6.4BP神经网络中参数的设置126
6.4.1非线性变换126
6.4.2权重向量的初始化126
6.4.3学习率127
6.4.4隐含层节点的个数127
6.5BP神经网络算法实践127
6.5.1训练BP神经网络模型128
6.5.2最终的训练效果132
6.5.3对新数据的预测133
参考文献136
第二部分回归算法
7线性回归138
7.1基本线性回归138
7.1.1线性回归的模型138
7.1.2线性回归模型的损失函数139
7.2线性回归的最小二乘解法140
7.2.1线性回归的最小二乘解法140
7.2.2广义逆的概念141
7.3牛顿法141
7.3.1基本牛顿法的原理141
7.3.2基本牛顿法的流程142
7.3.3全局牛顿法142
7.3.4Armijo搜索144
7.3.5利用全局牛顿法求解线性回归模型145
7.4利用线性回归进行预测146
7.4.1训练线性回归模型147
7.4.2最终的训练结果149
7.4.3对新数据的预测150
7.5局部加权线性回归152
7.5.1 局部加权线性回归模型152
7.5.2局部加权线性回归的最终结果153
参考文献154
8岭回归和Lasso回归155
8.1线性回归存在的问题155
8.2岭回归模型156
8.2.1岭回归模型156
8.2.2岭回归模型的求解156
8.3Lasso回归模型157
8.4拟牛顿法158
8.4.1拟牛顿法158
8.4.2BFGS校正公式的推导158
8.4.3BFGS校正的算法流程159
8.5L-BFGS求解岭回归模型162
8.5.1BGFS算法存在的问题162
8.5.2L-BFGS算法思路162
8.6岭回归对数据的预测165
8.6.1训练岭回归模型166
8.6.2最终的训练结果168
8.6.3利用岭回归模型预测新的数据168
参考文献171
9CART树回归172
9.1复杂的回归问题172
9.1.1线性回归模型172
9.1.2局部加权线性回归173
9.1.3CART算法174
9.2CART回归树生成175
9.2.1CART回归树的划分175
9.2.2CART回归树的构建177
9.3CART回归树剪枝179
9.3.1前剪枝179
9.3.2后剪枝180
9.4CART回归树对数据预测180
9.4.1利用训练数据训练CART回归树模型180
9.4.2最终的训练结果182
9.4.3利用训练好的CART回归树模型对新的数据预测185
参考文献187
第三部分聚类算法
10K-Means190
10.1相似性的度量190
10.1.1闵可夫斯基距离191
10.1.2曼哈顿距离191
10.1.3欧氏距离191
10.2K-Means算法原理192
10.2.1K-Means算法的基本原理192
10.2.2K-Means算法步骤193
10.2.3K-Means算法与矩阵分解193
10.3K-Means算法实践195
10.3.1导入数据196
10.3.2初始化聚类中心197
10.3.3聚类过程198
10.3.4最终的聚类结果199
10.4K-Means++算法200
10.4.1K-Means算法存在的问题200
10.4.2K-Means++算法的基本思路202
10.4.3K-Means++算法的过程和最终效果204
参考文献205
11Mean Shift206
11.1Mean Shift向量206
11.2核函数207
11.3Mean Shift算法原理209
11.3.1引入核函数的Mean Shift向量209
11.3.2Mean Shift算法的基本原理210
11.4Mean Shift算法的解释212
11.4.1概率密度梯度212
11.4.2Mean Shift向量的修正213
11.4.3Mean Shift算法流程213
11.5Mean Shift算法实践217
11.5.1Mean Shift的主过程218
11.5.2Mean Shift的最终聚类结果219
参考文献221
12DBSCAN222
12.1基于密度的聚类222
12.1.1基于距离的聚类算法存在的问题222
12.1.2基于密度的聚类算法225
12.2DBSCAN算法原理225
12.2.1DBSCAN算法的基本概念225
12.2.2DBSCAN算法原理227
12.2.3DBSCAN算法流程228
12.3DBSCAN算法实践231
12.3.1DBSCAN算法的主要过程232
12.3.2Mean Shift的最终聚类结果234
参考文献236
13Label Propagation237
13.1社区划分237
13.1.1社区以及社区划分237
13.1.2社区划分的算法238
13.1.3社区划分的评价标准239
13.2Label Propagation算法原理239
13.2.1Label Propagation算法的基本原理239
13.2.2标签传播240
13.2.3迭代的终止条件242
13.3Label Propagation算法过程244
13.4Label Propagation算法实践244
13.4.1导入数据245
13.4.2社区的划分246
13.4.3最终的结果247
参考文献248
第四部分推荐算法
14协同过滤算法250
14.1推荐系统的概述250
14.1.1推荐系统250
14.1.2推荐问题的描述251
14.1.3推荐的常用方法251
14.2基于协同过滤的推荐252
14.2.1协同过滤算法概述252
14.2.2协同过滤算法的分类252
14.3相似度的度量方法253
14.3.1欧氏距离254
14.3.2皮尔逊相关系数(Pearson Correlation)254
14.3.3余弦相似度254
14.4基于协同过滤的推荐算法256
14.4.1基于用户的协同过滤算法256
14.4.2基于项的协同过滤算法258
14.5利用协同过滤算法进行推荐260
14.5.1导入用户-商品数据260
14.5.2利用基于用户的协同过滤算法进行推荐261
14.5.3利用基于项的协同过滤算法进行推荐262
参考文献264
15基于矩阵分解的推荐算法265
15.1矩阵分解265
15.2基于矩阵分解的推荐算法266
15.2.1损失函数266
15.2.2损失函数的求解266
15.2.3加入正则项的损失函数即求解方法267
15.2.4预测269
15.3利用矩阵分解进行推荐270
15.3.1利用梯度下降对用户商品矩阵分解和预测270
15.3.2最终的结果272
15.4非负矩阵分解273
15.4.1非负矩阵分解的形式化定义274
15.4.2损失函数274
15.4.3优化问题的求解274
15.5利用非负矩阵分解进行推荐277
15.5.1利用乘法规则进行分解和预测277
15.5.2最终的结果278
参考文献279
16基于图的推荐算法280
16.1二部图与推荐算法280
16.1.1二部图280
16.1.2由用户商品矩阵到二部图281
16.2PageRank算法282
16.2.1PageRank算法的概念282
16.2.2PageRank的两个假设283
16.2.3PageRank的计算方法283
16.3PersonalRank算法285
16.3.1PersonalRank算法原理285
16.3.2PersonalRank算法的流程286
16.4利用PersonalRank算法进行推荐288
16.4.1利用PersonalRank算法进行推荐288
16.4.2最终的结果291
参考文献291
第五部分深度学习
17AutoEncoder294
17.1多层神经网络294
17.1.1三层神经网络模型294
17.1.2由三层神经网络到多层神经网络295
17.2AutoEncoder模型296
17.2.1AutoEncoder模型结构296
17.2.2AutoEncoder的损失函数297
17.3降噪自编码器Denoising AutoEncoder298
17.3.1Denoising AutoEncoder原理298
17.3.2Denoising AutoEncoder实现299
17.4利用Denoising AutoEncoders构建深度网络302
17.4.1无监督的逐层训练302
17.4.2有监督的微调303
17.5利用TensorFlow实现Stacked Denoising AutoEncoders306
17.5.1训练Stacked Denoising AutoEncoders模型306
17.5.2训练的过程307
参考文献308
18卷积神经网络309
18.1传统神经网络模型存在的问题309
18.2卷积神经网络311
18.2.1卷积神经网络中的核心概念311
18.2.2卷积神经网络模型312
18.3卷积神经网络的求解313
18.3.1卷积层(Convolution Layer)313
18.3.2下采样层(Sub-Sampling Layer)316
18.3.3全连接层(Fully-Connected Layer)316
18.4利用TensorFlow实现CNN316
18.4.1CNN的实现316
18.4.2训练CNN模型320
18.4.3训练的过程321
参考文献321
第六部分项目实践
19微博精准推荐324
19.1精准推荐324
19.1.1精准推荐的项目背景324
19.1.2精准推荐的技术架构325
19.1.3离线数据挖掘326
19.2基于用户行为的挖掘327
19.2.1基于互动内容的兴趣挖掘327
19.2.2基于与博主互动的兴趣挖掘328
19.3基于相似用户的挖掘329
19.3.1基于“@”人的相似用户挖掘329
19.3.2基于社区的相似用户挖掘329
19.3.3基于协同过滤的相似用户挖掘331
19.4点击率预估332
19.4.1点击率预估的概念332
19.4.2点击率预估的方法332
19.5各种数据技术的效果334
参考文献335
附录A336
附录B341