今天学习第一个分类算法——Logistic Regression,这是一种应用比较广泛的分类算法。
1.Logistic Regression
(1)应用
- Email:Spam/Not Spam?
- OnLine Transactions:Fraudulent(Yes/No)?
- Tumor:Malignant/Benign?
(2)模型
(3)目标
变形为:
(4)实现
为了求最优(最小)的代价函数,我们有很多算法可以选择,主要有Gradient descent(梯度下降算法)、Conjugate gradient、BFGS/L-BFGS。后面三种算法相对于梯度下降算法来说,不需要选取a参数,而且更快。但是老师并没有介绍这三种算法,后期我会对这三种算法进行详细的研究。
注:
- 这里老师用到了一个matlab库函数来求最优解,具体代码如下:
%%===============costFunctions================
function [jVar,gradient]=costFunction(theta)
jVar=(theta(1)-5)^2+(theta(2)-5)^2;
gradient=zeros(2,1);
gradient(1)=2*(theta(1)-5);
gradient(2)=2*(theta(2)-5);
%%=============test=========================
options=optimset('GradObj','on','MaxIter',100);
initialTheta=zeros(2,1);
[optTheta,functionVal,exitFlag]=fminunc(@costFunction,initialTheta,options)
2.Multiclass classification
(1)应用
Email foldering/tagging:Work,Friends,Family,Hobby
Medical diagrams:Not ill,Cold,Flu
Weather:Sunny,Cloudy,Rain,Snow
(2)方法
3.过拟合
(1)直观感受
(2)解决方法
- 减少特征数量(人为选择或者算法选择)
-
Regularization(正则化)
减少参数theta或者保留所有的特征减少每个特征对结果的影响;
.重新定义代价函数:
实现:.正则方程
添加完正则项之后,能够解决特征值多于数据集造成的不可逆情况。4.将正则化应用到logistic regression中