Tôi học Machine Learning - 003 - Supervised Learning - Học có giám sát

Bài ghi chú

Với học có giám sát (Supervised Learning), chúng ta được đưa một dữ liệu với kết quả đầu ra tương ứng đã biết trước, ta cần xây dựng mối quan hệ dữa đầu vào và đầu ra, để dự đoán kết quả đầu ra của các giá trị đầu vào khác.

Ví dụ, dự đoán giá nhà dựa vào vị trí, kích thước của căn nhà.

Học có giám sát được chia ra làm hai loại, regression (hồi quy)classification (phân lớp).

  • Loại hồi quy: ta cố gắng dự đoán kết quả dưới dạng liên tục.
  • Loại phân lớp: ta cố gắng dự đoán kết quả dưới dạng rời rạc.

Ví dụ:

  • Loại hồi quy:
    • Cho kết quả kiểm tra đầu vào một lớp học, dự đoán số học sinh lên lớp.
    • Dựa vào kích thước, màu sắc của quả dưa leo, dự đoán giá bán sản phẩm.
  • Loại phân lớp:
    • Dựa vào kích thước, màu sắc của quả dưa leo, dự đoán có bán được hay không?
    • Cho thông tin khách hàng, dự đoán khách hàng mua sản phẩm hay không?

Tôi học Machine Learning - 002 - Khóa học trên Coursera

Hôm trước, mình đăng ký khóa học trên Udemy, sau khi coi các bài học đầu tiên thấy rằng nó chưa hợp với mình. Vì mình chưa biết gì về ML cả mà mới vào đã hướng dẫn ngay code rồi, càng coi càng rối.

Tìm trên Coursera (mình đã học một khóa về Python trên này), có một khóa về ML do Andrew ng hướng dẫn, anh này mình thấy rất nổi tiếng về lĩnh vực ML, cấu trúc khóa học cũng rõ ràng, bắt đầu từ cơ bản.

Nên mình quyết định dừng việc theo dõi khóa học trên Udemy và tập trung vào khóa học trên Coursera trước (https://www.coursera.org/learn/machine-learning). Mình có coi qua các đánh giá thì khóa này vẫn còn thiếu vài phần Wish the course also covered decision trees, random forests and boosting algorithms. mà mấy phần này bên Udemy có. Nên sau khi hoàn thành khóa trên Coursera mình sẽ quay lại coi bên Udemy.

Bạn nào mới bắt đầu tìm hiểu về ML thì có thể cùng mình học trên Coursera nhé. Có 2 tùy chọn Free hoặc trả phí (Trả phí thì sau khi hoàn thành sẽ có chứng nhận.)


Tôi học Machine Learning - 001 - Nhập môn

Machine Learning vẫn còn là một thứ mới mẻ và khiến mình tò mò, cho nên hôm nay mình đã bắt đầu tham gia một khóa học về nó. Chuỗi các bài “Tôi học Machine Learning” là những ghi chú của mình, chứ không phải là bài hướng dẫn, vì vậy có thể có những sai sót chủ quan trong nội dung bài viết. Nếu các bạn thấy chỗ nào sai, cứ thoải mái góp ý, điều đó sẽ rất có ý nghĩa với mình.

Phần mềm và ngôn ngữ

Đây là các phần mềm và ngôn ngữ mình cần phải cài đặt:

READ MORE


Cài đặt Nodejs trên Godaddy shared hosting

Năm ngoái, có người cần mình deploy code nodejs trên shared hosting của Godaddy, sau một hồi tìm kiếm thì mình kết luận không thể làm được. Sau đó mình đã deploy lên Heroku.

Ngày hôm nay, mình nhận được một tình huống tương tự như vậy, nhưng kết quả đã khác. Đã có thể cài nodejs lên shared hosting của Godaddy. Dưới đây là các bước thực hiện.

READ MORE


TeamCity – Build agent disconnected

Bellow is how I resolve my problem with TeamCity – Build agent disconnected.

TeamCity Agent Disconected

  • ssh to my centos agent machine.
  • Go to agent folder, in this case it is BuildAgent
  • I tried to stop the agent by bin/agent.sh stop but got no luck. When I started the agent it said that Build agent is already running with PID 1795, so that I could not restart it.
  • KILL the process by sudo kill 1795
  • Restart again bin/agent.sh start
    => It should work now.

Nodejs Module Caching

Nodejs Module Caching

Modules are cached after the first time they are loaded. This means (among other things) that every call to require(‘foo’) will get exactly the same object returned, if it would resolve to the same file.

Multiple calls to require(‘foo’) may not cause the module code to be executed multiple times. This is an important feature. With it, “partially done” objects can be returned, thus allowing transitive dependencies to be loaded even when they would cause cycles.

If you want to have a module execute code multiple times, then export a function, and call that function.

(https://nodejs.org/api/modules.html#modules_caching)

READ MORE


Nodejs - Request - Error socket hang up code - ECONNRESET

Currently, I writing a nodejs server that I want to call external API via https. This is the code that I used.

1
2
3
4
5
6
7
8
9
var request = require('request');
var userProfileUri = 'http://test.com/API/user/profile';
request.get(userProfileUri, {
'headers': {
'Authorization': 'Bearer eyJ0eX'
},
}, function(err, response, body) {
console.log(err);
});

After running this code, I waited for a minute and got this error:

1
{ [Error: socket hang up] code: 'ECONNRESET' }

Doing for many searches via google, finally I got a solution that make my day happy. I hope that bellow solution can help you too.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var request = require('request');
var userProfileUri = 'http://test.com/API/user/profile';
request.get(userProfileUri, {
'headers': {
'Authorization': 'Bearer eyJ0eX'
},
agentOptions: {
secureOptions: require('constants').SSL_OP_NO_TLSv1_2,
ciphers: 'ECDHE-RSA-AES256-SHA:AES256-SHA:RC4-SHA:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM',
honorCipherOrder: true
}
}, function(err, response, body) {
console.log(err);
});

The important part is agentOptions. Just add it to your request config.


Làm quen với Angular 2 - Zoo app - part 3 - Dependency Injection

Trong phần này, chúng ta sẽ cùng nhau tạo một service AnimalService để quản lý danh sách các con vật và nhúng nó vào AppComponent.

Ta tạo file animal-service.ts cùng cấp với app.ts:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
export class AnimalService {
animals: [];

constructor() {
this.animals = ANIMALS;
}

getAnimals() {
return this.animals;
}

addAnimal(type: String, name: String) {
this.animals.push({ 'type': type, 'name': name});
}
}

var ANIMALS = [
{ type: 'Tiger', name: 'Bobo'},
{ type: 'Dog', name: 'Mic'},
{ type: 'Elephan', name: 'Big'}
];

READ MORE


Làm quen với Angular 2 - Zoo app - part 2 - Form

phần 1 chúng ta đã sử dụng một vài directives cơ bản của Angular như NgFor, NgIf, NgClass và ta cũng biết rằng muốn sử dụng directive nào, ta phải khai báo directive đó cho Component. Tuy nhiên việc phải khai báo từng directive như vậy thật bất tiện. Để khắc phục điều đó, Angular 2 đã gộp các core directives vào một tập hợp là CORE_DIRECTIVES ta chỉ cần khai báo nó một lần là có thể dùng được các core directives của Angular. Trước khi vào phần 2 ta thay đổi một chút như sau:

1
2
3
4
import {Component, bootstrap, CORE_DIRECTIVES, FORM_DIRECTIVES} from 'angular2/angular2';

...
directives: [CORE_DIRECTIVES, FORM_DIRECTIVES],

Ngoài CORE_DIRECTIVES ra mình còn khai báo thêm FORM_DIRECTIVES, chắc hẳn là bạn đã đoán ra đó là tập hợp các directive dành cho Form của Angular.

READ MORE