logo资料库

机器学习算法详解.docx

第1页 / 共117页
第2页 / 共117页
第3页 / 共117页
第4页 / 共117页
第5页 / 共117页
第6页 / 共117页
第7页 / 共117页
第8页 / 共117页
资料共117页,剩余部分请下载后查看
目录 ▪ 一、线性回归 ◦ 1、代价函数 ◦ ◦ ◦ ◦ 2、梯度下降算法 3、均值归一化 4、最终运行结果 5、使用scikit-learn库中的线性模型实现 ▪ 二、逻辑回归 ◦ 1、代价函数 ◦ ◦ ◦ ◦ ◦ ◦ ◦ 2、梯度 3、正则化 4、S型函数(即) 5、映射为多项式 6、使用的优化方法 7、运行结果 8、使用scikit-learn库中的逻辑回归模型实现 ▪ 逻辑回归_手写数字识别_OneVsAll
◦ ◦ ◦ ◦ ◦ ◦ 1、随机显示100个数字 2、OneVsAll 3、手写数字识别 4、预测 5、运行结果 6、使用scikit-learn库中的逻辑回归模型实现 ▪ 三、BP神经网络 ◦ 1、神经网络model ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ 2、代价函数 3、正则化 4、反向传播BP 5、BP可以求梯度的原因 6、梯度检查 7、权重的随机初始化 8、预测 9、输出结果 ▪ 四、SVM支持向量机 ◦ 1、代价函数
◦ ◦ ◦ ◦ 2、Large Margin 3、SVM Kernel(核函数) 4、使用中的模型代码 5、运行结果 ▪ 五、K-Means聚类算法 ◦ 1、聚类过程 ◦ ◦ ◦ ◦ ◦ ◦ 2、目标函数 3、聚类中心的选择 4、聚类个数K的选择 5、应用——图片压缩 6、使用scikit-learn库中的线性模型实现聚类 7、运行结果 ▪ 六、PCA主成分分析(降维) ◦ 1、用处 ◦ ◦ ◦ ◦ 2、2D-->1D,nD-->kD 3、主成分分析PCA与线性回归的区别 4、PCA降维过程 5、数据恢复
◦ ◦ ◦ ◦ 6、主成分个数的选择(即要降的维度) 7、使用建议 8、运行结果 9、使用scikit-learn库中的PCA实现降维 ▪ 七、异常检测 Anomaly Detection ◦ 1、高斯分布(正态分布) ◦ ◦ ◦ ◦ ◦ ◦ 2、异常检测算法 3、评价的好坏,以及的选取 4、选择使用什么样的feature(单元高斯分布) 5、多元高斯分布 6、单元和多元高斯分布特点 7、程序运行结果 正文 一、线性回归 https://github.com/lawlite19/MachineLearning_Python/tree/master/Linear Regression
全部代码 https://github.com/lawlite19/MachineLearning_Python/blob/master/Linea rRegression/LinearRegression.py 1、代价函数 其中: 下面就是要求出theta,使代价最小,即代表我们拟合出来的方 程距离真实值最近 共有m条数据,其中 代表我们要拟合出来的方 程到真实值距离的平方,平方的原因是因为可能有负值,正负 可能会抵消
前面有系数2的原因是下面求梯度是对每个变量求偏导,2可以 消去 实现代码: # 计算代价函数 def computerCost(X,y,theta): m = len(y) J = 0 J = (np.transpose(X*theta-y))*(X*theta-y)/(2*m) #计算代价J return J 注意这里的X是真实数据前加了一列1,因为有theta(0) 2、梯度下降算法 代 价 函 数 对 求 偏 导 得 到 :
所以对theta的更新可以写为: 其 中 为 学 习 速 率 , 控 制 梯 度 下 降 的 速 度 , 一 般 取 0.01,0.03,0.1,0.3..... 为什么梯度下降可以逐步减小代价函数? 假设函数f(x) 泰勒展开:f(x+△x)=f(x)+f'(x)*△x+o(△x), 令:△x=-α*f'(x) ,即负梯度方向乘以一个很小的步长α 将△x代入泰勒展开式中:f(x+x)=f(x)-α*[f'(x)]²+o(△x)
可以看出,α是取得很小的正数,[f'(x)]²也是正数,所以可以得 出:f(x+△x)<=f(x) 所以沿着负梯度放下,函数在减小,多维情况一样。 # 梯度下降算法 def gradientDescent(X,y,theta,alpha,num_iters): m = len(y) n = len(theta) temp = np.matrix(np.zeros((n,num_iters))) # 暂存每次迭代计算 的theta,转化为矩阵形式 J_history = np.zeros((num_iters,1)) #记录每次迭代计算的代价值 for i in range(num_iters): # 遍历迭代次数 h = np.dot(X,theta) # 计算内积,matrix可以直接乘 temp[:,i] = theta - ((alpha/m)*(np.dot(np.transpose(X),h-y))) # 梯度的计算 theta = temp[:,i] J_history[i] = computerCost(X,y,theta) #调用计算代价函数
分享到:
收藏