作为英语课程,读中文参考资料的确有助于理解,但是出于对以后更长久的学习优势考虑,笔记中我会尽量采用英文来表述,这样有助于熟悉专有名词以及常见语法结构,对于无中文翻译的资料阅读大有裨益。
Week3 Logistic Regression and Regularzation
一、Logistic Regression
-
Classification分类问题
-
Logistic Regression逻辑回归模型
-
- 对于给定的输入变量X, ,计算输出变量=1的可能性
- X:Feature Vector
- g:Logistic function/Sigmoid function
-
-
Decision Boundary决策边界
-
根据逻辑回归模型函数可归纳得到
-
-
如何拟合Logistic Regression的参数 ——Cost Function
- We know in Linear Regression
- In Logistic Regression
-
- (成本函数)
- 带入J( )后得到的J可以证明是一个凸函数,化简后代价函数形式上与Linear Logistic的代价函数一致
- Meaning: when y=0 h=0,then Cost=0;when y=0,h=1,then cost->
-
- Octave中的高级函数
costFunction
自动寻找当前参数的最优高级算法,返回
- We know in Linear Regression
-
Multiclass Classification——one-vs-all 一对多,多类别分类
-
将数据分成1和很多类,仍然是二元分类
-
二、Regularization正则化
- 过拟合问题——与training set高度吻合,但是失去预测意义
- 解决方案
- 手动丢弃或者模型选择
- 正则化,保留所有Features,但是减少参数大小
- 以多项式拟合为例,过拟合是由高次项导致的,让高次项系数趋于0是解决思想
- 对J(
)引入Regularization Parameter(正则化参数)(不对
进行修正(or called “惩罚”)
- 原理解释:令 很大,则为了Cost Function尽量小,所有 都会减小;但也不能太大,不然所有参数趋于0
- Regularized Linear Regression正则化的线性回归
- Regularized Logistic Regression正则化的逻辑回归
- 梯度下降函数与Linear Regression形式上一致
三、Week3 编程练习
-
Logistic Regression
-
Visuralizing the data
Function
plot(x,y,color,style...)
plot
函数提供的可选线属性如下表可选全局属性如下
? LineWidth——指定线宽
? MarkerEdgeColor——指定标识符的边缘颜色
? MarkerFaceColor——指定标识符填充颜色
? MarkerSize——指定标识符的大小
-
Find函数
- Find(X)找到X为真的结果,元素顺序按列排序
- [row,col] = find(X>0 & X<10,3),找到矩阵中满足条件得前三个元素,输出[row,col]坐标
-
size
-
一个返回值返回行、列,向量返回
-
size(A,n)
如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的是矩阵A的行数, c=size(A,2) 该语句返回的是矩阵A的列数
-
-
ones(a,b)
- 输出一个a*b的全1矩阵
-
fminunc Matlab自带的一个高级函数,可以找到最好的
-
contour
- 绘制等高线函数
-
Legend
- 给画出的图像放上图例
-
Linspace(1,100,2)
- 产生等差数列
-
matlab逻辑判断为真即可赋值=1
-
-
特别注意,在我编写代码的过程中对于矩阵的转置几次没有仔细查看,导致计算结果错误,这种错有时不会报错,但是你本想获得一个标量,会得到一个矢量;本想获得矢量,变成了标量,这是我对自己很大的一个收获
-
参考代码
-
写出S函数
g=1./(1+exp(-z));
-
求代价函数和相应的 导数
J=(-y'*log(sigmoid(X*theta))-(1-y)'*log(1-sigmoid(X*theta)))/m; grad = (sigmoid(X*theta)-y)'*X/m;
-
对模拟数值,求出大于一的预测量
p = sigmoid(X*theta)>=0.5;
-
求正则化后的逻辑回归代价函数以及相应的 导数
-
-
J=(-y'*log(sigmoid(X*theta))-(1-y)'*log(1-sigmoid(X*theta)))/m+lambda*sum(theta(2:size(theta),:).^2)/(2*m);grad(2:n)= (sigmoid(X*theta)-y)'*X(:,2:n)/m+lambda*theta(2:n)'/m;grad(1)= (sigmoid(X*theta)-y)'*X(:,1)/m;```?