这学期一直在跟进 Coursera上的 Machina Learning 公开课, 老师Andrew Ng是coursera的创始人之一,Machine Learning方面的大牛。这门课程对想要了解和初步掌握机器学习的人来说是不二的选择。这门课程涵盖了机器学习的一些基本概念和方法,同时这门课程的编程作业对于掌握这些概念和方法起到了巨大的作用。
课程地址 https://www.coursera.org/learn/machine-learning
笔记主要是简要记录下课程内容,以及MATLAB编程作业....
Logistic Regression
由于线性回归的预测值可能会>1或者<0,所以线性回归不好。而逻辑回归的预测值会严格控制在[0,1],所以采用逻辑回归去解决0-1分类问题。
Logistic Regression(逻辑回归)和通常意义上的”逻辑”没什么关系,只是一个名称的音译而已。
Week3 编程作业核心代码
sigmoid.m
1 g = 1 ./ ( 1 + exp(-1*z) );
costFunction.m
1 h_theta = sigmoid( X * theta); 2 sum = 0; 3 for i = 1 : m 4 sum = sum + ( -y(i) * log( h_theta(i)) - (1-y(i)) * log( 1 - h_theta(i))); 5 end 6 J = 1/m * sum; 7 8 E = h_theta - y; 9 grad = 1/m * X' * E;
predict.m
1 h = sigmoid( X * theta ); 2 p = (h >= 0.5);
costFunctionReg.m
1 h_theta = sigmoid( X * theta); 2 sum = 0; 3 for i = 1 : m 4 sum = sum + ( -y(i) * log( h_theta(i)) - (1-y(i)) * log( 1 - h_theta(i))); 5 end 6 7 extra_fun = lambda / (2*m) * (theta' * theta - theta(1) * theta(1)); 8 J = 1/m * sum + extra_fun; 9 10 E = h_theta - y; 11 grad = 1/m * X' * E + lambda / m .* theta; 12 grad(1) = grad(1) - lambda / m * theta(1);