Professional Documents
Culture Documents
- Command Window: cửa sổ làm việc chính của MATLAB. Tại đây ta thực hiện
toàn bộ việc nhập dữ liệu và xuất kết quả tính toán. Dấu nhấp nháy >> báo hiệu
chương trình sẵn sàng hoạt động.
- Editor: cửa sổ soạn thảo. Nhờ cửa sổ này, ta có thể viết mới hay xử lý, sửa đổi
các scripts (file chương trình) và các hàm.
- Commad history: cửa sổ quá khứ, lưu lại các câu lệnh đã được thực hiện trước
đó. Có thể lặp lại các lệnh cũ bằng cách kích đúp chuột vào lệnh đó. Cũng có thể cắt,
sao hoặc xóa cả nhóm lệnh hoặc từng lệnh riêng rẽ.
- Current Directory: cửa sổ thư mục hiện tại. Nhờ cửa sổ này, người sử dụng có
thể nhanh chóng nhận biết, chuyển đổi thư mục hiện tại của môi trường công tác, mở
file, tạo thư mục mới.
- Workspace: cửa sổ môi trường công tác, chứa các ma trận số liệu cần thực hiện
- Array Editor: bảng ma trận số liệu cụ thể, giống như booksheet trong Excel.
3. Một số đặc trưng chính của MATLAB:
MATLAB là ngôn ngữ thông dịch. Vì thế nó có thể làm việc ở hai chế độ: tương
tác và lập trình.
Trong chế độ tương tác MATLAB thực hiện từng lệnh được gõ trong cửa sổ
lệnh sau dấu nhắc lệnh và kết quả tính toán được hiện ngay trong cửa sổ này, còn đồ thị
được hiện trong một cửa sổ khác. Lệnh tương tác có thể là đơn giản, thí dụ tính sin(1.5)
hoặc vẽ fplot('sin(1 ./ x)', [0.01 0.1]), có thể là cấu trúc điều kiện, thí dụ if x<=0; y=0;
else; y=1; end hoặc các cấu trúc lặp xác định và không xác định.
Trong chế độ lập trình một tập lệnh được soạn thảo và ghi thành một têp đuôi .m
(m-file). Các hàm cũng được tổ chức thành các m-file. Một chương trình có thể gồm
nhiều m-file. Để chạy chương trình chỉ cần gõ tên m-file chính trong cửa sổ lệnh rồi
Enter.
Các hàm trong MATLAB cơ bản (không kể các thư viện chuyên dụng được gọi
là các ToolBox) được chia làm 2 loại: hàm trong và hàm ngoài. Các hàm trong là các
hàm được cài đặt sẵn (built-ins) tức là tồn tại dưới dạng mã nhị phân nên ta không thể
xem được mã nguồn của chúng, thí dụ các hàm sin, sqrt, log, clear, clc,.... Đây là các
hàm hay được sử dụng hoặc các hàm đòi hỏi nhiều thời gian xử lý. Các hàm ngoài là
các hàm tồn tại dưới dạng mã nguồn mà người dùng có thể tham khảo hoặc chỉnh sửa,
bổ sung khi cần thiết, thí dụ log10, ode23, fzero,...
Phần tử dữ liệu chính của MATLAB là các ma trận (mảng) mà kích thước của
chúng không cần khai báo trước như trong các ngôn ngữ lập trình khác. Tuy nhiên, để
tăng tốc độ xử lý cần báo trước cho MATLAB biết kích thước tối đa của mảng để phân
bổ bộ nhớ bằng một lệnh gán, chẳng hạn A(20,30)=0.
4. Khởi động và sử dụng MATLAB trong hóa phân tích
4.1. Nhập ma trận số liệu:
- Kích chuột phải trong cửa sổ WORKSPACE để tạo một ma trận mới.
- Chuyển các lệnh vừa soạn thảo được sang cửa sổ COMMAND WINDOW
bằng cách copy hoặc gọi tên file vừa soạn thảo.
Thí dụ : Nếu thuật toán PLS của bạn có dạng file PLS.m, bạn chỉ cần : >> PLS . Ngay
lập tức MATLAB sẽ tự động thực hiện các câu lệnh mà bạn yêu cầu.
4.4. Khai thác dữ liệu: Vào cửa sổ WORKSPACE, kích đúp vào ma trận cần biết
sẽ thu được các giá trị mong muốn.
4.5. Lưu file: Kích chuột vào biểu tượng SAVE để lưu lại các dữ liệu vừa thu
được.
4.6. Gọi lại các file đã thực hiện trước đó: Khi bạn muốn thực hiện lại hoặc lấy
lại các dữ liệu đã thực hiện trước đó, bạn chỉ cần vào cửa sổ CURRENT DIRECTORY
và kích đúp vào các file cần thiết và làm lại các bước như trên.
y1
y x1 1 x1 2 ... x1k
2 x x2 2 ... x2 k
y
y= 3 X = 21
. ... ... .. ...
.
y m
xm1 xm 2 ... xm k
Nếu tín hiệu đo ứng với mỗi thí nghiệm có nhiều hơn một giá trị (ví dụ đo độ hấp
thụ quang một dung dịch chuẩn hỗn hợp tại p bước sóng thay vì một bước sóng) thì số
liệu của Y sẽ là ma trận có m hàng và p cột ( ymxp) như sau:
Các phương trình hồi qui tuyến tính thu được sẽ cho biết:
- Những biến (cấu tử) nào có ảnh hưởng lớn (nếu giá trị tuyệt đối của hệ số hồi
qui lớn) đến kết quả thí nghiệm (tín hiệu đo).
- Biết được chiều hướng các ảnh hưởng (hệ số hồi qui mang dấu dương sẽ có ảnh
hưởng cùng chiều đến kết quả thí nghiệm và ngược lại).
- Tìm được nồng độ các cấu tử trong dung dịch cần định phân khi có tín hiệu phân
tích y.
1.1. Phương pháp bình phương tối thiểu thông thường (classical least square-CLS)
(Phương pháp này còn gọi là ma trận K (K-matrix))
- Từ dạng tổng quát y = XK +e (1)
K là vecto hệ số của phương trình hồi qui. K là ma trận (kx1) nếu y là véc tơ cột
biểu diễn tín hiệu đo của một dung dịch chuẩn với y là vecto (mx1), X là ma trận
(mxk), và e là vecto số dư (mx1). K là ma trận (kxp) nếu y là số liệu dạng ma trận
(mxp) biểu diễn tín hiệu của dung dịch chuẩn được đo tại nhiều thời điểm (ví dụ đo độ
hấp thụ quang tại p bước sóng).
- Nếu có giá trị nhập vào là biến độc lập X và biến phụ thuộc y sẽ tính được giá trị
hệ số b. Theo phương pháp bình phương tối thiểu, ma trận hệ số K sẽ được tính như
sau:
X0 = y0 KT (KKT)-1 (3)
Phương trình (1) cho thấy có thể xem CLS như là phân tích nhân tố vì ma trận tín
hiệu y là tích của hai ma trận nhỏ X và K.
Ưu điểm : Tín hiệu phân tích y là một ma trận phổ toàn phần, do vậy phương
pháp CLS đạt được độ chính xác cao so với các phương pháp chỉ sử dụng một số bước
sóng và cho phép tính toán đúng với tất cả các phổ trong hỗn hợp.
Nhược điểm: Phương pháp CLS đòi hỏi những cấu tử trong hỗn hợp phải cho tín
hiệu có tính chất cộng tính. Vì vậy cần phải biết tất cả các phổ của những chất gây ảnh
hưởng đến vùng phổ được đo vì chúng đều đóng góp vào đường chuẩn. Điều này có
thể được loại trừ đáng kể bằng cách phân tích dải phổ tại một thời điểm sau khi gộp kết
quả vào phép phân tích thống kê. Nó cho phép loại bỏ dải phổ không tuân theo định
luật Lambe-Bia hoặc những phổ có chứa tín hiệu của ion cản.
Các bước tính toán CLS trong phần mềm Matlab:
- Khởi động phần mềm MATLAB
- Nhập các ma trận dữ liệu trong cửa sổ WORKSPACE
+ Nhập ma trận nồng độ X0 (mxk) của m dung dịch chuẩn chứa k cấu tử (m
hàng, k cột )
+ Nhập ma trận tín hiệu phân tích Y0(mxn) (n là số tín hiệu đo)
+ Nhập tín hiệu phân tích Y của mẫu cần định phân
- Lưu các dữ liệu vừa nhập vào thành 1 file trong Matlab : CLS.mat
- Mở một M-file trong cửa sổ EDITOR và viết các câu lệnh tại đó:
%Phuong phap CLS:
%Goi cac bien su dung trong phuong phap
load CLS.mat;
%Tinh ma tran he so hoi quy K:
K=inv(X0'*X0)*X0'*Y0 ;
%KIỂM TRA ĐỘ CHÍNH XÁC CỦA PHƯƠNG PHÁP:
%Nhap ma tran tin hieu do cua mau kiem tra: Yktra
%Nhap ma tran nong do cua mau ktra: X0ktra
%Tinh nong do mau kiem tra:
Xktra=Yktra*K'*inv(K*K');
%Tinh sai so giua nong do chuan voi nong do xac dinh duoc tu phuong phap
CLS:
Saiso=(X0ktra-Xktra)*100./X0ktra;
%TÌM NỒNG ĐỘ CỦA CHẤT TRONG MẪU BẤT KÌ
%Nhap ma tran tin hieu do cua mau: Y
X=Y*K'*inv(K*K');
- Lưu lại M-file vừa thực hiện được và đặt tên file: CLS
- Gọi hàm M-file vừa viết được trong cửa sổ COMMAND WINDOW
>> CLS
- Chương trình sẽ tự động thực hiện các lệnh theo yêu cầu và hiển thị kết quả.
- Kích chuột vào giá trị Saiso, X trong WORKSPACE thu được các dữ liệu mong
muốn.
Thí dụ: Hỗn hợp cần phân tích có 2 cấu tử, tiến hành đo 10 dung dịch chuẩn tại 10 bước
sóng. Có ma trận nồng độ X(10x2) và ma trận độ hấp thụ quang A(10x10)
- Nhập ma trận nồng độ X0(10x2)-10 hàng tương ứng với 10 dung dịch chuẩn và 2 cột
tương ứng với 2 cấu tử cần phân tích
2 0.6
6 0.6
10 0.6
14 0.6
18 0.6
2 1.2
6 1.2
10 1.2
14 1.2
18 1.2
- Nhập ma trận độ hấp thụ quang Y0(10x10)-10 hàng và 10 cột tương ứng với 10 bước sóng
lựa chọn :
0.24 0.238 0.236 0.234 0.233 0.231 0.229 0.227 0.225 0.224
0.495 0.495 0.494 0.493 0.492 0.491 0.49 0.488 0.487 0.486
0.739 0.739 0.739 0.739 0.738 0.738 0.737 0.736 0.736 0.734
0.985 0.986 0.987 0.987 0.988 0.988 0.988 0.988 0.988 0.987
1.233 1.235 1.236 1.237 1.239 1.24 1.24 1.24 1.241 1.241
0.337 0.333 0.329 0.326 0.322 0.319 0.315 0.311 0.308 0.304
0.583 0.581 0.578 0.575 0.572 0.569 0.566 0.563 0.559 0.556
0.835 0.833 0.831 0.829 0.827 0.824 0.822 0.819 0.816 0.813
1.093 1.091 1.09 1.089 1.087 1.085 1.083 1.081 1.079 1.076
1.354 1.353 1.352 1.351 1.35 1.349 1.348 1.346 1.344 1.342
Nhập ma trận nồng độ mẫu kiểm tra C0ktra(2x2) :
2 0.3
6 0.9
Nhập ma trận độ hấp thụ quang của mẫu kiểm tra Yktra(2x10) :
0.183 0.182 0.182 0.181 0.18 0.18 0.179 0.178 0.178 0.177
0.536 0.534 0.532 0.531 0.529 0.527 0.525 0.523 0.521 0.519
Các giá trị thu được :
Ma trận K(2x10):
0.062962 0.063167 0.063362 0.063514 0.063714 0.063867 0.064
0.17678 0.17333 0.16985 0.16686 0.16326 0.16 0.1568
(2 hàng trong ma trận K để chỉ 2 giá trị hệ số của 2 biến là 2 cấu tử cần phân tích trong
hỗn hợp).
Ma trận nồng độ mẫu kiểm tra tính từ phương trình hồi quy Cktra(2x2) :
1.9721 0.3285
6.0849 0.90571
Saiso :
4.334 3.2997
2.6402 0.18868
Nếu kết quả trong mẫu phân tích là một giá trị bằng số thì Matlab sẽ không tính được giá
trị của nồng độ trong mẫu. Vì vậy CLS thường chỉ thích hợp cho những phép phân tích tại
nhiều bước sóng. Khi sử dụng phương pháp này trong thực tế, cần sử dụng số dung dịch
chuẩn và số tín hiệu đo nhiều hơn nữa.
1.2. Phương pháp bình phương tối thiểu nghịch đảo (inverse least square- ILS)
(Phương pháp ma trận P ( P- matrix))
Ngược lại với phương pháp CLS. Phương pháp này giả thiết rằng nồng độ chất
phân tích là hàm của tín hiệu phân tích theo phương trình:
X=y.P+e
Trong phương pháp này, hệ số P trong phương trình hồi qui là thành phần của ma
trận (mxk) được tính theo phương pháp bình phương tối thiểu suy rộng (generalized):
P= (yTy)-1 yTX
Việc phân tích nồng độ chất chưa biết (X0) được thực hiện bằng cách nhân trực
tiếp giá trị tín hiệu đo y0 của dung dịch cần phân tích với P.
X0= y0.P
Mỗi hàng trong y là tín hiệu của một mẫu, mỗi cột là tín hiệu của các mẫu ở một
thời điểm nhất định. Vì vậy, trong phương pháp ILS số mẫu không được ít hơn số thời
điểm đo. Do yêu cầu về số mẫu tối thiểu như trên nên để tiến hành sử dụng phương
pháp này, ta cần lựa chọn số thời điểm đo tối thiểu đặc trưng nhất trên toàn dải tín hiệu
đo. Các điểm đo đặc trưng này thường là những điểm thỏa mãn các yêu cầu sau:
∗ Giá trị tín hiệu đo tại các thời điểm này lớn so với các điểm đo khác để tăng
độ nhạy.
∗ Tín hiệu của các cấu tử khác nhau tại mỗi điểm đo được lựa chọn phải biến
đổi khác nhau tức là có sự khác biệt lớn về tín hiệu đo tại mỗi điểm của các cấu tử.
∗ Tại các điểm này, tín hiệu của các ion cản trở phép đo là nhỏ nhất.
Ưu điểm của phương pháp ILS:
- Thích hợp với tập số liệu nhỏ, ít thông tin.
- Loại trừ được sai số nhiễu phổ và giảm thiểu được ảnh hưởng của các cấu tử lạ
do đã lựa chọn các thời điểm đo đặc trưng.
- Khi tín hiệu đo là các giá trị nhỏ hơn giá trị qui ước của nồng độ thì giá trị các
hệ số trong ma trận P sẽ lớn hơn hệ số hồi qui của phương pháp CLS, điều này sẽ làm
giảm sai số trong quá trình tính toán.
Nhược điểm của phương pháp ILS:
- Cần lựa chọn tối thiểu các thời điểm đo đặc trưng cho các cấu tử. Lựa chọn sai
lệch sẽ dẫn đến sai số lớn trong quá trình tính toán.
- Phải đảm bảo có tính cộng tính cao của các cấu tử ở các thời điểm đo được lựa
chọn.
Các bước tính toán ILS trong phần mềm Matlab:
- Khởi động phần mềm MATLAB
- Nhập các ma trận dữ liệu trong cửa sổ WORKSPACE
+ Nhập ma trận nồng độ X0 (mxk) của m dung dịch chuẩn chứa k cấu tử (m
hàng, k cột)
+ Nhập ma trận tín hiệu phân tích Y0(mxn) (n là số tín hiệu đo)
+ Nhập tín hiệu phân tích Y của mẫu cần định phân
- Lưu các dữ liệu vừa nhập vào thành 1 file trong Matlab : ILS.mat
- Mở một M-file và viết các câu lệnh tại đó:
%Phuong phap ILS:
%Goi cac bien su dung trong phuong phap
load ILS.mat;
%Tinh ma tran he so hoi quy:
P=inv(Y0'*Y0)*Y0'*X0;
%KIỂM TRA ĐỘ CHÍNH XÁC CỦA PHƯƠNG PHÁP:
%Tinh nong do chat trong mau kiem tra:
Xktra=Yktra*P;
%Tinh sai so giua nong do chuan voi nong do xac dinh duoc tu ILS:
Saiso= (X0ktra-Xktra)*100./X0ktra
% TÍNH NỒNG ĐỘ CỦA CHẤT TRONG MẪU BẤT KÌ
%Tinh nong do cua mau:
X=Y*P
- Lưu lại M-file vừa thực hiện được: ILS.m
- Gọi M-file vừa viết được trong cửa sổ COMMAND WINDOW
>> ILS
- Chương trình sẽ tự động thực hiện các yêu cầu mong muốn và trả lại kết quả
dưới dạng ma trận. Kích chuột vào giá trị Saiso, X trong WORKSPACE để hiển
thị các ma trận số liệu đó.
Thí dụ: Hỗn hợp cần phân tích có 2 cấu tử, tiến hành đo 10 dung dịch chuẩn. Chọn 7
bước sóng đặc trưng nhất và có tính chất cộng tính nhất của hệ. Có ma trận nồng độ
X(10x2) 10 hàng tương ứng với 10 dung dịch chuẩn, 2 cột tương ứng với 2 cấu tử và
ma trận độ hấp thụ quang A(10x7) 7 cột tương ứng với 7 bước sóng chọn lọc.
- Nhập ma trận nồng độ X0(10x2)-10 hàng và 2 cột
2 0.6
6 0.6
10 0.6
14 0.6
18 0.6
2 1.2
6 1.2
10 1.2
14 1.2
18 1.2
Chọn 7 bước sóng đặc trưng cho mẫu phân tích
- Nhập ma trận độ hấp thụ quang Y0(10x7)-10 hàng và 7 cột :
0.24 0.238 0.236 0.234 0.233 0.231 0.229
0.495 0.495 0.494 0.493 0.492 0.491 0.49
0.739 0.739 0.739 0.739 0.738 0.738 0.737
0.985 0.986 0.987 0.987 0.988 0.988 0.988
1.233 1.235 1.236 1.237 1.239 1.24 1.24
0.337 0.333 0.329 0.326 0.322 0.319 0.315
0.583 0.581 0.578 0.575 0.572 0.569 0.566
0.835 0.833 0.831 0.829 0.827 0.824 0.822
1.093 1.091 1.090 1.089 1.087 1.085 1.083
1.354 1.353 1.352 1.351 1.350 1.349 1.348
Nhập ma trận nồng độ mẫu kiểm tra C0ktra(2x2) :
2 0.3
6 0.9
Nhập ma trận độ hấp thụ quang của mẫu kiểm tra Yktra(2x7) :
0.183 0.182 0.182 0.181 0.18 0.18 0.179
0.536 0.534 0.532 0.531 0.529 0.527 0.525
Các giá trị thu được :
Ma trận P
-23.379 -7.3415
-138.88 68.855
-17.969 -45.528
5.9699 42.323
89.502 30.385
59.861 -40.551
38.725 -47.446
Ma trận nồng độ mẫu kiểm tra tính từ phương trình hồi quy Cktra(2x2) :
2.0724 0.23984
6.1401 0.88049
Saiso :
-3.6179 20.053
-2.335 2.1675
1.3. Phương pháp bình phương tối thiểu từng phần (partial least square-PLS )
PLS là phương pháp đa biến dùng để mô hình hoá mối quan hệ giữa biến độc lập
X và biến phụ thuộc Y, từ đó có thể đoán được thông tin trong Y khi đã biết các thông
tin của X và ngược lại. PLS sẽ tối ưu hoá giá trị đồng phương sai (covariance) giữa ma
trận X và Y. Hai ma trận X và Y được phân tích thành một ma trận số (score matrices)
T chung và ma trận nạp (loading matrices) P và Q.
k cột A k k
X T Pt E
= Scores . loading + sai số
n A n
n hàng
A m m
k
T Qt F
Y = scores . loading + sai số
n n A n
Hay X= T x P + E
Y= T x Q + F
Tính chất quan trọng của PLS là chúng ta có thể nhận được một ma trận T chung
cho cả 2 phương trình
Số thí nghiệm ít hơn số biến?
Các bước tính toán PLS trong phần mềm Matlab:
- Khởi động phần mềm MATLAB
- Nhập các ma trận dữ liệu trong cửa sổ WORKSPACE
+ Nhập ma trận nồng độ X0 (mxk) của m dung dịch chuẩn chứa k cấu tử (m
hàng, k cột)
+ Nhập ma trận tín hiệu phân tích Y0(mxn) (n là số tín hiệu đo)
+ Nhập tín hiệu phân tích Y của mẫu cần định phân
- Lưu các dữ liệu vừa nhập vào thành 1 file trong Matlab : PLS.mat
- Mở một M-file và viết các câu lệnh tại đó:
%Phuong phap PLS:
%Goi cac bien can dung trong phuong phap
load PLS.mat;
%Tinh vecto trong so:
w=(Y0'*X0)*inv(X0'*X0);
%Tinh tri so va trong so:
t=Y0*w;
P=(Y0'*t)*inv(t'*t);
Q=(X0'*t)*inv(t'*t);
b=w*inv(P'*w)*Q;
a=mean(X0)-mean(Y0)*b;
% NẾU MUỐN KIỂM TRA ĐỘ CHÍNH XÁC CỦA PHƯƠNG PHÁP:
% do kich thuoc cua ma tran a và Yktra*b la khac nhau, thuc hien buoc dong
% nhat cua 2 ma tran. Neu so cau tu la 2 thi a(1) duoc tao thanh bang cach
% tao thanh 2 cot trong ma tran. Neu so cau tu la n thi tuong tu ta them n
% cot
a1=[ones(m,1)*a(1) ones(m,1)*a(2)]; % m la so dung dich kiem tra
% Nhap ma tran do hap thu quang cua mau kiem tra:Yktra
% Tinh nong do mau kiem tra theo PLS:
Xktra=a1+Yktra*b;
% Tinh sai so giua nong do chuan voi nong do xac dinh duoc tu PLS:
Saiso=(X0ktra-Xktra)*100./X0ktra ;
% TÍNH NỒNG ĐỘ CỦA CHẤT TRONG MẪU BẤT KÌ
a2=[ones(m1,1)*a(1) ones(m1,1)*a(2)]; % m1 la so dung dich phan tich
% Nhap ma tran do hap thu quang cua mau thuc: Y
X=a2+Y*b;
- Lưu lại M-file vừa thực hiện được PLS.m
- Gọi hàm M-file vừa viết được trong cửa sổ COMMAND WINDOW
>> PLS
- Kích chuột vào giá trị Saiso, X trong WORKSPACE thu được các dữ liệu mong
muốn
Thí dụ: Hỗn hợp cần phân tích có 2 cấu tử, tiến hành đo 10 dung dịch chuẩn tại 7
bước sóng. Có ma trận nồng độ X(10x2) và ma trận độ hấp thụ quang A(10x10)
- Nhập ma trận nồng độ X0(10x2)-10 hàng và 2 cột
2 0.6
6 0.6
10 0.6
14 0.6
18 0.6
2 1.2
6 1.2
10 1.2
14 1.2
18 1.2
- Nhập ma trận độ hấp thụ quang Y0(10x7)-10 hàng và 7 cột :
Nhập ma trận nồng độ mẫu kiểm tra C0ktra(2x2) :
Nhập ma trận độ hấp thụ quang của mẫu kiểm tra Yktra(2x7) :
Các giá trị thu được :
Ma trận K(2x10):
Ma trận nồng độ mẫu kiểm tra tính từ phương trình hồi quy Cktra(2x2) :
Saiso :
1.4. Phương pháp hồi qui cẩu tử chính ( principal component regression -PCR)
PCR - phương pháp hồi quy cấu tử chính, gồm 2 quá trình: Phân tích cấu tử
chính chuyển sang tập dữ liệu mới, chứa một số ít các yếu tố quan trọng, cần thiết. Sau
đó sử dụng phương pháp bình phương tối thiểu nghịch đảo để phân tích tập dữ liệu mới
này.
Trước tiên, chiếu tập số liệu tín hiệu phân tích đó lên không gian có ít chiều hơn
theo PCA mà không làm mất đi các thông tin quan trọng và tiến hành phân tích hồi qui
đa biến trên không gian mới này. Nó giả thiết rằng mỗi thành phần trong tập số liệu có
thể được gán một giá trị định lượng đầu tiên cần tạo mô hình PCA cho tập số liệu và sử
dụng giá trị riêng của các biến ảo (score) để xây dựng phương trình hồi qui đa biến
tuyến tính trong đó giá trị y là giá trị hàm mục tiêu .
PCA
Ma trận tín hiệu đo
(mx n) scores
+ Sai số dư
(lan truyền)
PCA PCA
loading và scores
Nồng độ các cấu tử
Hồi quy đa biến tuyến tính -MLR
neuron
neuron
neuron
neuron
1
u1 v1
X0 g1
1 yo
2
.
X1 . .
. . K yk
. .
M
.
.
XN
Líp vµo [W] [V]
líp ra
líp Èn
- Mạng lan truyền ngược – RBF
-
Tùy thuộc vào đặc điểm của tập dữ liệu để lựa chọn mô hình mạng nơron cho
phù hợp. Trong hóa phân tích, dữ liệu đầu vào là tín hiệu đo tại những điều kiện khác
nhau, dữ liệu đầu ra là giá trị nồng độ các cấu tử, vì vậy chúng ta thường sử dụng mạng
lan truyền thẳng đa lớp (MLP). Thí dụ: xác định đồng thời 2 cấu tử trong hỗn hợp bằng
phương pháp trắc quang, khi đó ta xây dựng 55 dung dịch chuẩn dùng làm mẫu học với
các nồng độ thay đổi bao gốm cả trong khoảng tuyến tính và ngoài khoảng tuyến tính.
Đồng thời xây dựng bộ số liệu kiểm tra với 20 mẫu khác nhau với nồng độ nằm trong
khoảng đã dùng làm mẫu học.
Các số liệu và lựa chọn ban đầu:
* Bộ số liệu học:
- Lớp nhập xlearn[nxm]: là ma trận độ hấp thụ quang của mẫu chuẩn trên toàn
dải phổ (từ λ = 400 -600nm) trong đó n=55 là số mẫu học, m =101 là số bước sóng tiến
hành ghi phổ.
- Lớp xuất dlearn[nxp]: là ma trận nồng độ dung dịch mẫu chuẩn biểu diển trên
bảng 5, với p =2 là số cấu tử cần xác định đồng thời.
* Bộ số liệu kiểm tra:
- Lớp nhập xtest[qxm]: là ma trận độ hấp thụ quang của mẫu kiểm tra trên toàn
dải phổ với q = 32 là số mẫu kiểm tra.
- Lớp xuất dtest[qxp]: là ma trận nồng độ dung dịch kiểm tra được biểu diễn: .
Như vậy ta có mạng nơron với 101 đầu vào và 2 đầu ra.
* Hàm truyền của nơron lớp ẩn: là hàm chuẩn hoá ‘logsig’ ‘purelin’ ‘logsig’
* Hàm truyền của nơron đầu ra: là tuyến tính ‘ purelin’
Trong quá trình tính toán đồ thị và xem xét cụ thể các bước học ta nhận thấy:
- Giá trị của mỗi bước học là 100.000 thì sẽ cho sai số tương đối bình phương trung
bình ( MSE) nhỏ. Giả sử đặt trước MSE là 10-3 %, tức là anpha định trước (α) = 10-5
Trong quá trình thực hiện bài toán ta sử dụng các hàm như sau:
- Tạo hàm, thiết lập một mạng nơron mới và luyện tập cho mạng có cấu trúc như
sau:
net = newff(PR, [S1 S2 …Sn1], {TF1 TF2…TFn1}, BTF, BTF, PF)
Trong đó:
PR = [min(x); max(x) ]
[S1 S2 …Sn1] là số nơron lớp ẩn và lớp xuất, ứng với bài toán này ta có:
[nhidden 2]
{TF1 TF2 …TFn1} là các hàm học của mỗi lớp mạng, chúng ta có thể
tham khảo thêm trong toolbox của Matlab.
Sim(net, x, d, ntimes): hàm mô phỏng đầu ra theo các giá trị đầu vào.
Train(net, x, d, ntimes): hàm học của bài toán.
Các hàm này đều là hàm chuẩn, ta có thể dùng ngay và lấy dễ dàng từ toolbox
của Matlab.
Thuật toán mạng nơron nhân tạo trong phần mềm MATLAB
- Khởi động phần mềm MATLAB
- Nhập các ma trận dữ liệu trong cửa sổ WORKSPACE
+ Nhập ma trận nồng độ mẫu học dlearn(mxk) của m dung dịch chuẩn chứa k
cấu tử (m hàng, k cột)
+ Nhập ma trận tín hiệu phân tích của mẫu học xlearn(mxn) (n là số tín hiệu đo)
+ Nhập ma trận nồng độ mẫu kiểm tra dtest(m’xk) của m’ dung dịch chuẩn chứa
k cấu tử (m’ hàng, k cột)
+ Nhập ma trận tín hiệu phân tích của mẫu kiểm tra xtest(m’xn)
- Lưu các dữ liệu vừa nhập vào thành 1 file trong Matlab :ANN.mat
- Mở một M-file trong cửa sổ EDITOR và viết các câu lệnh tại đó:
% Phuong phap mang noron nhan tao - ANN
% Nhap so lieu dau vao tu file da co san
load ANN.mat;
% Khai bao kich thuoc cua ma tran so lieu hoc
[N,S]=size(xlearn);
[K,R]=size(dlearn);
% Tuy theo he cau tu va du lieu thu duoc de thiet lap mo hinh mang noron phu
% hop
% Lop nhap co 51 noron
% Lop an co 2 lop, moi lop 100 noron
% Lop xuat co 2 noron, tuong ung voi 2 cau tu can khao sat
% Lua chon cac ham truyen: logsig, purelin
% Ham hoc lua chon la TRAINCGF
net = newff(minmax(xlearn),[51 100 100 2],{'logsig' 'purelin' 'logsig' 'purelin'},'traincgf');
% Thiet lap cac thong so cho qua trinh hoc cua mang:
% Sai so qua trinh hoc
net.trainParam.goal=0.00001;
% So buoc hoc
net.trainParam.epochs = 30000;
net = train(net,xlearn,dlearn);
% Tinh toan nong do mau kiem tra dua vao mang noron da hinh thanh
ytest = sim(net,xtest) ;
%Tinh sai so giua nong do mau kiem tra dtest voi nong do xac dinh duoc tu
% mang noron nhan tao ytest:
Saiso=(dtest - ytest)*100./dtest ;
- Lưu lại M-file vừa thực hiện được mang tên: ANN.m
- Gọi hàm M-file vừa viết được trong cửa sổ COMMAND WINDOW:
>> ANN
- Kích chuột vào giá trị Saiso, ytest trong WORKSPACE thu được các dữ liệu
mong muốn.
Thí dụ: Tiến hành xác định đồng thời Fe(II) và Fe(III) trong dung dịch tại 110 bước
sóng, với 55 mẫu học và 22 mẫu kiểm tra.
STT Fe2+ (ppm) Fe3+ (ppm) STT Fe2+ (ppm) Fe3+ (ppm)
1 31
2 32
3 33
4 34
5 35
6 36
7 37
8 38
9 39
10 40
11 41
12 42
13 43
14 44
15 45
16 46
17 47
18 48
19 49
20 50
21 51
22 52
23 53
24 54
25 55
26
27
28
29
30
2.2. Phương pháp hồi quy cấu tử chính kết hợp với mạng noron nhân tạo(PC-ANN)
Giống như phương pháp hồi quy cấu tử chính PCR, trước khi sử dụng ANN, các
số liệu về biến phụ thuộc trong phân tích đường chuẩn được thực hiện theo phương
pháp PCA để tìm các giá trị riêng score và tải trọng loading. Trong mô hình này các giá
trị riêng (score) khi thực hiện PCA với tập số liệu đường chuẩn được dùng làm lớp
nhập. Phương pháp PC-ANN được xây dựng dựa trên việc sử dụng giá trị khác của các
PC. Lớp ẩn chứa các nơron với hàm sigmoid và lớp xuất với hàm tuyến tính linear.
Thuật toán lan truyền ngược được áp dụng cho mạng PC-ANN đa lớp feed-forward.
Các biến của PC-ANN được tối ưu sao cho đạt được sai số nhỏ nhất khi so sánh với
nồng độ biết trước. Các dung dịch dùng đẻ xây dựng mô hình theo phương pháp đường
chuẩn cần tránh có tương quan nồng độ vì sẽ gây ra tính xen phủ (overfitting) trong mô
hình.