目录
▪ 一、线性回归
◦
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)
#调用计算代价函数