TRƯỜNG ĐẠI HỌC ĐIỆN LỰCKHOA CÔNG NGHỆ THÔNG TIN KHAI PHÁ DỮ LIỆU ĐỀ TI: ÁP DỤNG MÔ HÌNH HỒI QUY TUYẾN TÍNH TRONG DỰ ĐOÁN GIÁ XE Ô TÔ CŨ Sinh viên thực hiện : PHẠM TUẤN ANH HONG NGỌC
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
KHAI PHÁ DỮ LIỆU
ĐỀ TI:
ÁP DỤNG MÔ HÌNH HỒI QUY TUYẾN TÍNH
TRONG DỰ ĐOÁN GIÁ XE Ô TÔ CŨ
Sinh viên thực
hiện
: PHẠM TUẤN ANH HONG NGỌC KHÁNH TRƯƠNG QUANG DUY Giảng viên
Trang 2C hữ ký
Trang 3MỤC LỤC
LỜI MỞ ĐẦU 5
DANH MỤC HÌNH ẢNH V BẢNG BIỂU 6
CHƯƠNG 1: GIỚI THIỆU VỀ KHAI PHÁ DỮ LIỆU 7
1.1 Khai phá dữ liệu là gì 7
1.2 Quy trình khai phá dữ liệu 7
1.2.1 Nghiên cứu lĩnh vực 7
1.2.2 Tạo tập tin dữ liệu đầu vào 7
1.2.3 Tiền xử lý, làm sạch, mã hóa 7
1.2.4 Rút gọn chiều 7
1.2.5 Chọn tác vụ khai thác dữ liệu 7
1.2.6 Chọn các thuật giải Khai thác dữ liệu 8
1.2.7 Khai thác dữ liệu: Tìm kiếm tri thức 8
1.2.8 Đánh giá mẫu tìm được được 8
1.2.9 Biểu diễn tri thức 8
1.3 Giới thiệu về đề tài 8
CHƯƠNG 2: PHÂN LỚP DỮ LIỆU VỚI MÔ HỒI QUY 9
2.1.Mô hình hồi quy tuyến tính 9
2.2 Mô hình 10
2.3.Chọn hàm cơ bản 10
2.4.Giữ nguyên đầu vào 11
2.5 Chuẩn hóa đầu vào 11
2.6.Đa thức hóa 11
2.7 Phân lớp dữ liệu (Classification) 12
2.8 Phân cụm dữ liệu (Clustering) 12
CHƯƠNG 3: ỨNG DỤNG V CHƯƠNG TRÌNH 14
CỦA MÔ HÌNH HỒI QUY TUYẾN TÍNH 14
3.1.Mô tả bài toán 14
3.2 Môi trường thử nghiệm 14
3.2.1 Giới thiệu về Python 14
3.2.2 Đặc điểm của Python 14
3.2.3 Cài đặt Python 15
3.3 Ứng dụng thuật toán vào bài toán dự đoán giá xe ô tô 17
3.3.1 Làm sạch dữ liệu 17
Trang 43.3.2 Ước lượng tham số 17
3.4 Kết quả chương trình 20
3.4.1 Phân cụm (liên hệ giữ điểm và giá xe trending and test) 20
3.4.2 Mô hình hồi quy tuyến tính (liên hệ giữa điểm , engine , giá thành và km di chuyển ) 21
3.5 Hạn chế 25
3.5.1 Giả định về mối quan hệ tuyến tính: 25
3.5.2 Ẩnh hưởng của nhiễu 25
3.5.3 Khả năng mô tả các mối quan hệ phức tạp 25
3.5.4 Hạn chế về dữ liệu 25
3.5.5 Giải thích mô hình 25
3.5.6 Khả năng tổng quát hóa 25
KẾT LUẬN 27
TI LIỆU THAM KHẢO 28
Trang 5LỜI MỞ ĐẦU
Công nghệ ngày nay phổ biến và không ai có thể phù nhậnđược tầm quantrọng và những hiệu quả mà nó đem lại cho cuộc sống chúng ta Bất kỳ tronglĩnh vực nào, sự góp mặt của trí tuệ nhân tạo sẽ giúp con người làm việc và hoànthành tốt công việc hơn Và gần đây, một thuật ngữ “machine learning” rất đượcnhiều người quan tâm Thay vì phải code phần mền với cách thức thủ công theomột bộ hướng dẫn cụ thể nhằm hoàn toàn một nhiệm vụ để ra thì máy sẽ tự “họchỏi” bằng cách sử dụng một lượng lớn dữ liệu cùng những thuật toán cho phépnóthực hiện các tác vụ
Đây là một lĩnh vực khoa học tuy không mới, nhưng cho thấy lĩnh vực trítuệ nhân tạo đang ngày càng phát triển và có thể tiến xa hơn trong tương lai.Đồng thời, thời điểm này nó được xem là một lĩnh vực ‘nóng” và dành nhiềumối quan tâm để phát triển nó một cách mạnh mẽ, bùng nổ hơn
Hiện nay, việc quan tâm Machine Learning càng ngày càng tăng lên là vìnhờ có machine learning giúp ga tăng dung lượng lưu trữ các loại dữ liệu sẵn,việc xử lý tính toán có chi phí thấp và hiệu quả rất nhiều
Những điều trên được hiểu là nó có thể thực hiện tự động,nhanh chóng đểtạo ra những mô hình cho phép phân tích các dự liệu có quy mô lớn hơn và phứctạp hơn đồng thời đưa ranhững kết quả một cách nhanh và chính xác hơn
Chính sự hiệu quả trong công việc và các lợi ích vượt bậc mà nó đem lạicho chúng ta khiến machine learning ngày càng được chú trọng và quan tâm
nhiều hơn Vì vậy, em chọn đề tài “Áp dụng mô hình hồi quy tuyến tính trong
dự đoán giá xe ô tô cũ” làm báo cáo chuyên đề kết thúc môn học
Trang 6DANH MỤC HÌNH ẢNH V BẢNG BIỂU
Hình 2.1: Quan hệ y=3+4x
Hình 3.1: Cài đặt Python
Hình 3.2: Chạy thử chương trình với Python
Hình 3.3: Làm sạch dữ liệu ban đầu
Hình 3.4: Dữ liệu sau khi làm sạch
Hình 3.5: Phân cụm (liên hệ giữa điểm và giá xe trending and test) Hình 3.6: Mô hình hồi quy tuyến tính với dữ liệu đã chuẩn hóa
Hình 3.7: Kết quả dự đoán giá ô tô dựa trên mô hình hồi quy tuyến tính Hình 3.8: So sánh giá ô tô thực tế và giá dự đoán
Hình 3.9: Phân tích dữ liệu mẫu theo năm sản xuất
Hình 3.10: Đồ thị biểu diễn mối quan hệ giữa giá ô tô và số km đã di chuyển Hình 3.11: Đánh giá mô hình với tập dữ liệu kiểm thử
Trang 7cơ sở dữ liệu khác nhau”
1.2 Quy trình khai phá dữ liệu
1.2.1 Nghiên cứu lĩnh vực
- Ta cần nghiên cứu lĩnh vực cần sử dụng Data mining để xác định đượcnhững tri thức ta cần chắt lọc, từ đó định hướng để tránh tốnthời gian chonhững tri thức không cần thiết
1.2.2 Tạo tập tin dữ liệu đầu vào
- Ta xây dựng tập tin để lưu trữ các dữ liệu đầu vào để máy tính cóthể lưutrữ và xử lý
1.2.5 Chọn tác vụ khai thác dữ liệu
- Để đạt được mục đích ta cần, ta cần chọn được tác vụ khai thác dữliệu saocho phù hợp Thông thường có các tác vụ sau:
* Đặc trưng (feature)
Trang 8* Phân biệt (discrimination)
1.2.6 Chọn các thuật giải Khai thác dữ liệu.
1.2.7 Khai thác dữ liệu: Tìm kiếm tri thức
- Sau khi tiến hành các bước trên thì đây là bước chính của cả quá trình, ta
sẽ tiến hành khai thác và tìm kiếm tri thức
1.2.8 Đánh giá mẫu tìm được được
- Ta cần đánh giá lại xem trong các tri thức tìm được, ta sẽ sử dụng đượcnhững tri thức nào, những tri thức nào dư thừa, không cần thiết
1.2.9 Biểu diễn tri thức
- Ta biểu diễn tri thức vừa thu thập được dưới dạng ngôn ngữ tựnhiên vàhình thức sao cho người dùng có thể hiểu được những tri thức đó
1.3 Giới thiệu về đề tài
- Dựa vào các tập dữ liệu về bình luận sản phẩm, đánh giá quan điểm bìnhluận bằng phương pháp Naive Bayes
Trang 9CHƯƠNG 2: PHÂN LỚP DỮ LIỆU VỚI MÔ HỒI QUY
2.1.Mô hình hồi quy tuyến tính
- Mục tiêu của giải thuật hồi quy tuyến tính là dự đoán giá trịcủa mộthoặc nhiều biến mục tiêu liên tục (continuous targetvariable) Y dựatrên một véc-to đầu vào X
- Ví dụ: dự đoán giá nhà ở Hà Nội dựa vào thông tin về diện tích, vịtrí, năm xây dựng của ngôi nhà thì tt ở đây sẽ là giá nhà và X=(,,)xvới là diện tích, là vị trí và là năm xây dựng
- Nếu bạn còn nhớ thì đây chính là phương pháp phân tíchhồi quy củaxác suất thống kê Mọi lý thuyết cơ bản của phương pháp này vẫnđược giữa nguyên nhưng khi áp dụng cho máy tính thì về mặt càiđặt có thay đổi đôi chút
- Về cơ bản thì ta sẽ có một tập huấn luyện chứacáccặp (,) tương ứng và nhiệm vụ của ta là phải tìm giá trị ứng vớimột đầu vào X mới Để làm điều này ta cần tìm được quan hệ giữa
X và Y để từ đó đưa ra được dự đoán Hay nói cách trừu tượng hơn
là ta cần vẽ được một đường quan hệ thể hiện mối quan hệ trong tập
Trang 10xanh y=3+4x để thể hiện quan hệ giữa x và y dựa vào các điểm dữliệu huấn luyện đã biết Thuật toán hồi quy tuyến tính sẽ giúp ta tựđộng tìm được đường màu xanh đó để từ đó ta có thể dự đoán được
y cho một x chưa từng xuất hiện bao giờ
- Thực ra mô hình tuyến tính là chỉ cần ở mức tuyến tính giữa tham
số và Y là đủ Và mình cho rằng tên gọi tuyến tính là xuất phát giữa
và Y, chứ không phải giữa X và Y Nói cách khác,ta có thể kết hợp các X một cách phi tuyến trước khi hợp với để được Y Một cách đơn giản là sử dụng hàm phi tuyến cho X như sau:
y(x,) = + + … +
- được gọi là độ lệch (bias) nhằm cắt đi mức độ chênh lệch giữa môhình và thực tế Các hàm phi tuyến này được gọi là các hàm cơ bản(basic function) Thường người ta sẽ đặt = 1 và viết lại công thứctrên như sau:
Như quy ước thì tất cả các véc-to nếu không nói gì thì tangầm định với nhau rằng nó là véc-to cột nên ta có được cáchviếtnhân ma trận như trên
Trang 112.3.Chọn hàm cơ bản
- Việc chọn hàm cơ bản cũng chính là chọn tính năng cho đầu vào rấtquan trọng trong học máy Ngoài ra việc chọn ra sao còn ảnh hưởngtới tốc độ và bộ nhớ để tính toán nữa Ở đây em chỉ để cập tới 1 vàicách đơn giản để chọn hàm cơ bản mà thôi
2.4.Giữ nguyên đầu vào
- Giữ nguyên đầu vào có ý là không thay đổi giá trị đầu vào, tức: = x
- Thường người ta sẽ gom các đầu vào thành một ma trận X € : X =[]
- Mỗi hàng của ma trận chứa 1 mẫu và mỗi cột sẽ chứa các thuộc tínhđầu vào
2.5 Chuẩn hóa đầu vào
- Là phương pháp co giãn các thuộc tính về khoản [min,max]nào đó(thường là [−1,1] hoặc [−0.5,0.5]) dựa vào kì vọng và độlệch chuẩn của chúng
- Trong đó, là trung bình, còn là độ lệch chuẩn của tính năng i Đôilúc người ta cũng có thể lấy s_isi là khoảng rộng chuẩn = max−min
- Việc này không làm mất tính chất phân phối của chúng nên khôngảnh hưởng tới kết quả học Nhưng lại giúp cho việc học trở lên dễdàng hơn vì các thuộc tínhgần như cùng khoảng nhỏ với nhau.Phương pháp này còn có tên khác là chuẩn hoá trung bình (meannormalization)
Trang 122.6.Đa thức hĩa
- Sử dụng đa thức bậc cao để làm đầu vào: = Với các bài tốn hồi quytuyến tính thì phương pháp này rất hay được sử dụng
2.7 Phân lớp dữ liệu (Classification)
- Là dạng phân tích dữ liệu nhằm rút trích các mơ hình mơ tả các lớp dữ liệu hoặc dự đốn xu hướng dữ liệu
- Quá trình gồm hai bước:
• Bước học (giai đoạn huấn luyện): xây dựng bộ phân lớp (classifier) bằng việc phân tích/học tập huấn luyện
• Bước phân lớp (classification): phân lớp dữ liệu/đối tượng mới nếuđộ chính xác của bộ phân lớp được đánhgiá là cĩ thể chấp nhận được (acceptable)
- Các thuật tốn phân lớp dữ liệu:
+ Phân lớp với cây quyết định (decision tree)
+ Phân lớp với Nạve Bayesian
+ Phân lớp với k phần tử gần nhất (k-nearest neighbor)
+ Phân lớp với máy vector hỗ trợ (SVM)
+ Phân lớp với mạng neural (neural network)
+ Phân lớp dựa trên tiến hố gen (genetic algorithms)
+ Phân lớp với lý thuyết tập thơ, tập mờ (rough sets)
+ Phân lớp với lý thuyết tập mờ (fuzzy sets)
Trang 132.8 Phân cụm dữ liệu (Clustering)
- Là quá trình phân nhóm/cụm dữ liệu/đối tượng vào các
lớp/cụm
- Các đối tượng trong cùng một cụm tương tự với nhau hơn so với
đố itượng ở cụm khác
- Các yêu cầu của phân cụm dữ liệu:
+ Có thể tương thích, hiệu quả với dữ liệu lớn, số chiều lớn+ Có khả năng xử lý các dữ liệu khác nhau
+ Có khả năng khám phá các cụm với các dạng bất kỳ.+ Khả năng thích nghi với dữ liệu nhiễu
+ Ít nhạy cảm với thứ tự của các dữ liệu vào
+ Phân cụm rằng buộc
+ Dễ hiểu và dễ sử dụng
- Phân loại các phương pháp phân cụm:
+ Phân hoạch (partitioning): phân hoạch tập dữ liệu n phần tử thành
+ Dựa trên lưới (grid-based): dựa trên dữ liệu nhiều chiều, chủ yếu
áp dụng cho lớp dữ liệu không gian
+ Dựa trên mô hình (model-based): một mô hình giả thuyết đượcđưara cho mỗi cụm; sau đó hiệu chỉnh các thông số để mô hìnhphùhợp với cụm dữ liệu/đối tượng nhất
Trang 14CHƯƠNG 3: ỨNG DỤNG V CHƯƠNG TRÌNH
CỦA MÔ HÌNH HỒI QUY TUYẾN TÍNH
3.1.Mô tả bài toán
- Do còn một bộ phận lớn những người có thu nhập thấp không đủ khảnăng chi trả cho một chiếc ô tô mới hoặc họ mong muốn sở hữu một chiếc
xe hạng sang nhưng lại không phù hợp với túi tiền của mình Nhưngnhững chiếc xe cũ lại có vô vàn các mức giá khác nhau kể cả cho cùngmột chiếc xe cùng một kiểu dáng và cùng năm sản xuất Nên để tránhtrường hợp chúng ta mua phải một chiếc xe có giá cao nhưng lại khôngphù hợp với những gì nó mang lại Em đã quyết định áp dụng mô hình hồiquy tuyến tính vào bài toán “Dự đoán giá xe Ô tô cũ”
- Mô hình hồi quy tuyến tính áp dụng vào bài toán giự đoán giá Ô tô cũ phụthuộc vào kết quả thống kê được từ hơn 142 quốc qua trên thế giớ phục vụcho các nhà máy sản xuất Ô tô trên toàn thế giới
- Giá trị input: Year, Mrr, Point, Price của từng loại ô tô
- Giá trị output: Kết quả nhận được với mỗi Year, Mrr, Point Point
3.2 Môi trường thử nghiệm
3.2.1 Giới thiệu về Python
- Python là ngôn ngữ lập trình được sử dụng rất phổ biến ngày nay để phát triểnnhiều loại ứng dụng phần mềm khác nhau như các chương trình chạy trêndesktop, server, lập trình các ứng dụng web Ngoài ra Python cũng là ngônngữ ưa thích trong ngành khoa học về dữ liệu (data science) cũng như là ngônngữ phổ biến để xây dựng các chương trình trí tuệ nhân tạo trong đó bao gồmmachine learning
3.2.2 Đặc điểm của Python
- Python là ngôn ngữ dễ học: Ngôn ngữ Python có cú pháp đơn giản, rõ ràng, sửdụng một số lượng không nhiều các từ khoá, do đó Python được đánh giá là mộtngôn ngữ lập trình thân thiện với người mới học
- Python là ngôn ngữ dễ hiểu: Mã lệnh (source code hay đơn giản là code) viếtbằng ngôn ngữ Python dễ đọc và dễ hiểu Ngay cả trường hợp bạn chưa biết gì
Trang 15- Python có tương thích cao (highly portable): Chương trình phần mềm viết bằngngôn ngữ Python có thể được chạy trên nhiều nền tảng hệ điều hành khác nhaubao gồm Windows, Mac OSX và Linux
3.2.3 Cài đặt Python
- Chúng em sử dụng Google colab để có thể cài đặt hệ thống cùng với xử lýthông dữ liệu 1 cách dễ dàng
Hình 3.1: Cài đặt Python
Trang 16- Sau đó kết nối với database được xử lý qua drive
Hình 3.2: Chạy thử chương trình với Python
- Với dữ liệu được lấy từ : https://www.kaggle.com/ bọn em đã có một dữ liệu đầy đủ để bắt đầu vào việc xử lý dữ liệu
*cài đặt thư viện để sử dụng :
from sklearn.model_selection import train_test_split
from sklearn import preprocessing
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score, roc_auc_score, roc_curve, auc
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
Trang 17Hình 3.3: Làm sạch dữ liệu ban đầu
- Dữ liệu sau khi được lọc
- +, Data information
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5512 entries, 0 to 5511
Data columns (total 10 columns):
# Column Non-Null Count Dtype
- - - -
0 model 5512 non-null object
1 kms_driven 5512 non-null float64
2 fuel_type 5512 non-null object
3 transmission 5512 non-null object
4 ownership 5512 non-null int64
5 year 5512 non-null int64
6 engine 5512 non-null int64
7 Seats 5512 non-null int64
8 manufacturer 5512 non-null object
9 price 5389 non-null float64
dtypes: float64(2), int64(4), object(4)
memory usage: 430.8+ KB
+ Data sau khi được làm sạch
Hình 3.4: Dữ liệu sau khi làm sạch
3.3.2 Ước lượng tham số
Trang 18- Giả sử ta có mm cặp dữ liệu huấn luyện (,) ,I = 1,m được tổ chức tương ứng
bằng X = [] , Y = [] và Y € là kết quả dự đoán tương ứng Ta có thể đánhgiá mức độ chênh lệch kết quả y^ và y bằng một hàm lỗi (lost function) nhưsau:
- Công thức trên thể hiện trung bình của độ lệch (khoảng cách) giữa các điểm dữliệu thực tế và kết quả dự đoán sau khi ta ước lượng tham số Còn tại sao ta lạichia cho 2 thì em sẽ giải thích sau Hàm lỗi còn có tên gọi khác là hàm lỗi bìnhphương (squared error function) hoặc hàm lỗi trung bình bình phương(mean squared error function) hoặc hàm chi phí (cost function)
- Không cần giải thích ta cũng có thể hiểu với nhau rằng tham số tốt nhất là tham số giúp cho hàm lỗi JJ đạt giá trị nhỏ nhất
- Kết quả tối ưu nhất là y^ = y, tức là J(θ)=0 Để giải quyết bài toán này ta có thể
sử dụng đạo hàm J(θ) và tìm θ sao cho J(θ)′=
Trang 19- Đây chính là công thức chuẩn (normal equation) của bài toán ta cần giải Trong đó ma trận Φ € được gọi là ma trận mẫu (design matrix), ta có thể hiểu nó đơn giản là tập mẫu của ta:
- Để ý rằng ở ma trận Φ ta sắp mỗi dữ liệu huấn luyện theo hàng(mm hàng) và các thuộc tính của chúng theo cột (nn cột) Các thuộc tính ởđây được biến đổi bằng các hàm ϕi(xj)
- Ở phép lấy đạo hàm (3.3) ta thấy rằng mẫu số 2 bị triệt tiêu và giúp bỏ điđược thừa số 2 khi tính đạo hàm Đấy chính là lý do mà người ta để mẫu
số 2 cho hàm lỗi