
BigQuery(BQ) rất hữu ích cho việc phân tích hoặc xử lý dữ liệu.
Nó rất tốt trong việc xử lý dữ liệu khổng lồ.
BQ có một định dạng dữ liệu hữu ích mảng.
Khi coi mảng là véc-tơ, chúng ta có thể muốn độ đồng dạng cosin của véc-tơ.
Vì vậy, làm thế nào chúng ta có thể có được sự đồng dạng cosine?
Vì vậy, hôm nay tôi giới thiệu về "Cách tính độ tương tự cosine của mảng trong BigQuery".
tác giả

Lợi thế để đọc
Bạn có thể hiểu "Cách tính độ tương tự cosin của mảng trong BigQuery" thì bạn không phải lo lắng về độ tương tự.
đồng dạng cosine là gì
Độ tương tự cosine là một đo độ tương tự giữa hai vectơ.
Cosine cos
là một trong các hàm lượng giác.
Nó nhận 1 trong trường hợp 0°, 0 trong trường hợp 90° và -1 trong trường hợp 180°.
Vì vậy, điều đó có nghĩa là chúng ta có thể có một góc nếu biết giá trị của cosin.
Và nếu một góc giữa 2 vectơ gần bằng 0, điều đó có nghĩa là 2 vectơ tương tự nhau.
Vì vậy, cosin được sử dụng như sự tương tự.
Cosine similarity is a measure of similarity between two non-zero vectors of an inner product space.
Reference: Cosine similarity - Wikipedia
Công thức tương tự cosin dưới đây.
![]() |
---|

Dữ liệu
Trước khi tính toán, chúng ta nên chuẩn bị dữ liệu.
Để tạo dữ liệu mảng, chúng ta có thể sử dụng bảng mà chúng ta đã tạo trong chủ đề trước.
Read more
Bạn có thể thêm CREATE TABLE
vào SQL và tạo bảng.
SQL
CREATE TABLE test.array_sample2 AS SELECT key, ARRAY_AGG(val) as val_array FROM test.array_sample GROUP BY key
Result table
Row | key | val_array |
1 | a | 1 |
2 | ||
3 | ||
2 | b | 2 |
4 | ||
5 | ||
3 | c | 3 |
2 | ||
-1 |
Cách tính độ tương tự cosine của mảng trong BigQuery
Để tính độ đồng dạng cosine của mảng trong BigQuery, chúng ta nên tính tích giữa các phần tử của vectơ.
SQL bên dưới.
SQL
SELECT t1.key AS key1, t2.key AS key2, ( SELECT SUM(value1 * value2)/ SQRT(SUM(value1 * value1))/ SQRT(SUM(value2 * value2)) FROM UNNEST(t1.val_array) AS value1 WITH OFFSET pos1 JOIN UNNEST(t2.val_array) AS value2 WITH OFFSET pos2 ON pos1 = pos2 ) AS cosine_similarity FROM test.array_sample2 AS t1, test.array_sample2 AS t2 ORDER BY key1, key2, cosine_similarity
Nó phân tách mảng thành từng phần tử bt UNNEST(array)
, và thêm số thứ tự bằng WITH OFFSET pos
.
Sau đó, sử dụng pos
làm khóa nối để nhân từng phần tử.
Kết quả dưới đây.
Result of SQL
Row | key1 | key2 | cosine_similarity |
---|---|---|---|
1 | a | a | 1 |
2 | a | b | 0.9960238411 |
3 | a | c | 0.2857142857 |
4 | b | a | 0.9960238411 |
5 | b | b | 1 |
6 | b | c | 0.3585685828 |
7 | c | a | 0.2857142857 |
8 | c | b | 0.3585685828 |
9 | c | c | 1 |
Vectơ a và b đồng dạng.
Vectơ c quay về hướng khác.
Phần kết luận
Hôm nay tôi đã giải thích về "Cách tính độ tương tự cosine của mảng trong BigQuery".
Để tính toán độ tương tự cosine của mảng, chúng ta có thể thực hiện giải pháp dưới đây.
Point

UNNEST(array)
hơi khó.Có một số bài viết khác về BigQuey.
Nếu bạn quan tâm đến chúng, xin vui lòng đọc chúng.
Read more